# loadrun

## 説明

このコマンドは NITRO ROM 用のものです。TWL ROM については `loadrun.TWL` を参照してください。

`loadrun` は、指定のバイナリデータを IS-NITRO-EMULATOR 等の機材にダウンロードして実行するツールです。デバッガを起動する必要がなく、コマンドラインからすばやく実行することが出来ます。

## 使用方法

### 起動コマンド

`% loadrun [OPTION]... [NITROSRLFILE]`

`NITROSRLFILE` は、実行する ROM ファイルです。srl ファイルを指定できます。

`-L または --list` オプションを指定すると、現在接続されていて識別可能なデバイスを一覧にして表示します。以下は表示の例です。

> `---- Connected devices:
> 0: [NITROUSB] IS-NITRO-EMULATOR serial:04070680
> 1: [NITROUSB] IS-NITRO-EMULATOR serial:04070682
> 2: [NITROUSB] IS-NITRO-EMULATOR serial:04070683
> 3 device(s) found.`

`serial` は、`-s` オプションで指定するシリアル番号となります。`[NITROUSB]`はデバイスの種類で、IS-NITRO-DEBUGGER 等がデバイスを使用していると、`[UNKNOWN]`となります。

`-l または --lap` オプションを指定すると、ROM ファイルから `OS_Printf()` でデバッグ出力がされたものをコンソールに出力する際に、各行の先頭に実行開始からの時間を {xx: xx} (分:秒)の形式で付加します。以下は表示の一例です。

> `{0:01}Program started
> {0:01}--- heap init
> {0:02}x=14 y=50
> {0:04}`

`-s` または `--serial`オプションは数値の引数をとります。これは srl ファイルをダウンロードするデバイスのシリアル番号を指定するためのオプションです。ここで指定したシリアル番号を持つ機材に対して操作を行ないます。(通常ないことですが)同じシリアル番号の機材が複数ある場合は最初に見つかったものとなります。なお、`-L` オプションのデバイス一覧で、04070680 とシリアル表示表示された場合、4070680 のように前の 0 は省略することが出来ます。

`-t` または `--timeout` オプションは数値の引数を取ります。このオプションは表示タイムアウトを指定するもので、単位は秒です。srl ファイルを実行したのち、最後の `OS_Printf()` データを受信してから、次のデータが指定時間こない場合に強制終了します。指定値が 0 のときは、タイムアウト指定はしないという意味になります。オプション指定がない場合も同様です。

`-T` または `--exec-timeout` オプションは数値の引数を取ります。このオプションは実行タイムアウトを指定するもので、単位は秒です。srl ファイルを実行してから、指定の秒数が経過すると強制終了します。指定値が 0 のときは、実行タイムアウト指定はしないという意味になります。オプション指定がない場合も同様です。

`-a` または`--abort-string` オプションは実行の終了文字列を指定します。ここで指定した文字列が行頭から表示されると強制終了します。また改行に出会うまでは判定が保留されます。表示の間が時間的に開いても構いません。

例えば "ABORT " が終了文字列となっている場合、

> `OS_Printf("ABORT\n")
> OS_Printf("ABORTING\n")
> OS_Printf("ABORT\nQUIT\n")
> OS_Printf("ABOR");OS_Sleep(1000);OS_Printf("T\n");`

の何れでも終了しますが、

> `OS_Printf(" 　ABORT\n")　　// 前に空白が入っている
> OS_Printf("ABO\nRT\n")　　// 途中に改行が入っている
> OS_Printf("A B O R T\n")　// 空白が入っているので "ABORT" という文字列ではない`

では終了しません。また、

> `OS_Printf("ABORT")`

としてもまだ改行されていないのですぐには終了しません。この後 `OS_Printf("\n")` であるとか `OS_Printf(" SOON\n")` のように改行コードがくれば終了します。

`-c` または `--card-slot` オプションは引数を取ります。引数は ON か OFF かのいずれかです。このオプションでは、実行時のカードスロットのロック指定を行ないます。何も指定しない場合は OFF となります。

`-C` または `--cartridge-slot` オプションは引数を取ります。引数は ON か OFF のいずれかです。このオプションでは、実行時のカートリッジのロック指定を行ないます。何も指定しない場合は OFF となります。

`--stdin` オプションは、バイナリファイルの入力を標準入力から読み込むという指定です。この場合、コマンドの引数に、`NITROSRLFILE` の指定は必要ありません。

`-q` または `--quiet` オプション を指定すると quiet モードとなり、エラー以外のメッセージを出しません。

`-v` または `--verbose` オプションを指定すると、詳細な動作の説明を表示します。

`-h` または `--help` オプションは、簡単な使い方を表示します。

`--version` オプションは、コマンドのバージョンを表示します。

###
終了条件

・DS 側で `OS_Exit()` を呼ぶと、特定の文字列が表示されてプログラムは HALT状態になります。その表示文字列データを`loadrun` が受け取ると、終了ステータスを `OS_Exit()` で指定した値にセットして `loadrun` も終了します。

・オプションにより、ユーザが定めた特定の文字列の表示で終了します。

・オプションにより、ユーザが定めた実行タイムアウト時間より長く実行時間が経過すると終了します。

・オプションにより、ユーザが定めた表示タイムアウト時間より長く表示の無い状態が続くと終了します。

・ユーザが ctrl-C などでプログラムを停止した場合にも終了します。

## 場所

`$TwlSDK/tools/bin/loadrun.exe`

## 参照

`nitrorun, OS_Exit, loadrun.TWL`

## 履歴

2005/09/05 デバイス種類のオプションを削除した
2005/08/31 初版作成