trap #10
命令によるソフトウェアリセットを行います。
X680x0のネタとしてNJ
の2文字をR形式実行ファイルにするとソフトウェアリセットができるという話がありますが、
プロセス起動直後のd0レジスタの内容は不定なので厳密に言うと確実ではありません
(pxNJ
などであれば問題ありません)。
このプログラムではd0レジスタに'X68k'
を入れてtrap #10
を実行します。
COMMAND.Xで下記のコマンドを実行すると同一内容の実行ファイルを作成できます。
echo \L\L $NJX68k>reset68k.r
コマンドライン引数で指定したファイルをDOS _OPEN
で開き、ファイル末尾-1の位置に
DOS _SEEK (mode=2, offset=-1)
で移動し、戻り値(移動先位置またはエラーコード)を表示します。
ファイルサイズが0バイトのファイルは移動できないのでエラー$ffff_ffe7
になります。
CD-ROMなどのドライバ(リモートドライブ)によっては、mode=2
の場合のoffset
の扱いが逆方向になっているため移動できずエラーになることがあります。
run68の-f
オプションの動作確認用に作成した、
ほとんどのDOSコールを呼び出すだけの特に機能を持たないツールです。
途中でコンソールからの入力待ちがあるのでリターンキーを何度か押してください。
Warning
実行しても害はないと思いますが、確実ではない(保証できない)ので、 普段使っているシステムでは実行しないこと!
メモリを読み込むループの実行時間を計測します。厳密な計測ではないので目安です。
実行コードがメインメモリ上にある場合とGVRAM上にある場合、読み込みアドレスがメインメモリの場合と
GVRAMの場合、それぞれの組み合わせで合計4通りを計測します。