Windows上でJWASM(フリーのMASM6互換アセンブラ)と98エミュを使ってのプログラム作成に関するエトセトラ。また、PC-98プログラミング関係の書籍紹介とか自作ソフトの進捗とかも。

エミュを使ってIPLプログラミングもどき 

前の項で下準備が終わったので、実際にIPLっぽいものを作ってみよう、という実践に入ります。

さて、MS-DOSのとかのお約束ではIPLの開始はjmpで、そのあとにディスク情報とかが入ってIPL開始、みたいなパターンになってます。
それを踏襲してもいいのですが、せっかくなのでガン無視してしょっぱなから動作に入ってみましょう。
以下のコードを書いて下さい。(先頭にタブをいれたりしてください。)

CODESEGMENT
assumeDS:CODE,CS:CODE,ES:CODE,SS:CODE
org 0
;レジスタの初期化はスルー(まじめな人は書くべし)

;画面上に白い■を書く
movax,0A000h
moves,ax
movcx,23
movdi,2000h
adddi,80
movax,0F1h
@@:pushcx
movcx,30
repSTOSW
popcx
adddi,100
loop@b

movcx,23
movax,087h
movdi,80
@@:pushcx
movcx,30
repSTOSW
popcx
adddi,100
loop@b

@@:;無限ループ
jmp@b


CODEENDS
END



以上のコードをJWASMでコンパイルします。
jwasm /Fl /bin /Fo 00IPL0.com 00IPL0.TXT
pause
のように記述した.batを作ると一発でcomファイルができて便利です。

出来たcomファイルをバイナリエディタで開いてNFDの末尾にコピペして保存すればOKです。


このディスクをt98で開くと以下のようになるはずです。



これで仮動作はOKだと確認できました。
このままでは初めの1024byteしか使えないので、次の項ではセクタ2以降を読み取るテストをしてみましょう。


ちなみに、これを.386以降対応にする場合は
.386を行頭に書かず、

.model tiny
.386 or .486
と記述しないと、16bitセグメントではなく32bitセグメントになってしまうのでバグります。
MASM6の使用ですが、ハマり易いので注意が必要です。
×

この広告は60日間更新がないwikiに表示されております。

Menu

管理人/副管理人のみ編集できます