7面のカバー破壊が完璧となった。美しすぎる。裏から拾うべきチップの場所が右に1BGずれていたのだった。
BACK BEAM と FIRE BLASTER は必ず同時にもらえるのだろうか。一番最初のドキュメントで,どちらも順番が (7)になっている。
test.s
dc.w $ff00
という一行のソースを作って, as test.s || lk test.o 等で test.x を作る。コマンドラインから実行してみると,何もおきない。当然だ。何もしないプログラムだから。
dc とは,データをそのままメモリに埋め込ませるアセンブラへの指示だ。 .w とは,ワードサイズすなわち 16bitデータである,という意味。つまりこのプログラムの実質は,ff 00 なわけだ。う~ん,魔神語。
じゃあ,ff 00 はなにかというと,細かい話はいろいろあるが,ようは DOSコールだ。Human68kのルーチンを呼び出すわけ。 DOSコールにもいろいろあって,この場合は 00 すなわち0番の機能を呼び出す。
0番の機能はなにかと XC のプログラマーズマニュアルでも見てみると,exitすなわちプログラムの終了なわけだ。
tes2.s
.include doscall.mac
DOS _EXIT
1行目で DOSコール用マクロ定義ファイルをインクルードすれば,DOS _EXIT と意味がわかりやすくなる。
X68kでのアセンブラプログラミングにおける「お約束」はこれだけだ。
x86 上でとなると,こう簡単にはいかず,まだ把握しきれてない。プログラムの終了はやはり MS-DOS の DOSコールで行うようだが,プログラムの前置き部分にごちゃごちゃといろいろあってよくわからん。