HDINIT(78D9H) と HDOFFS(78E2H) はROM以外からの呼出しの可能性があるのでエントリアドレスが移動してしまわないように注意し、RAM上に展開される HDDMAS(ROM:7EC5H RAM:F929H)も領域をオーバーしないサイズに納めなくてはなりません。
以前、とある機種用にMB89352用ドライバを作った時のモジュール構成に似せたり、ラベル名はX68000のIOCSからのパクったりで、BASICから利用し易くデバッグし易い構造に。
HDINIT…S_INITを呼ぶだけざっと、ひと通り作ってみると、やっぱり容量オーバー。デバッグしてからコード圧縮した方が良いので、今後とも使わなそうな HCOPY処理を潰し、とりあえずBIOS内に納めました。ついでに、コード圧縮しても入らなかった時のために(個人的に)不要な処理を潰しました。
HDOFFS…今回は何もしない
S_READ…FDCRED SCSI用
S_WRITE…FDCWRT SCSI用
S_BUSRST…SCSIバスリセット
S_INIT…MB89352の初期化
S_SELECT…指定IDのセレクション
S_CMDOUT…コマンド送信
S_DATAIN…データイン
S_DATAOUT…データアウト
S_MSGIN…メッセージイン
S_STSIN…ステータスイン
BASICから呼び出しでデバッグをはじめてみると、MB89352の初期化の呼出し忘れがあったくらいで、意外とすんなり動作。デバッグ用のコードを外し、コード圧縮してみると意外と小さくなって納まってしまい、これといってハマる所も無く終わってしまうい…
物語的には、盛り上がりに欠ける展開。
0 件のコメント:
コメントを投稿