MSX-DOS2PIS 02 04
From Z80 Machines Wiki
2.4.BIOSジャンプテーブル
アドレス0000hでのジャンプは、常に下位バイトが03hのアドレスにジャンプします。このアドレスには、17エントリのジャンプテーブルの2番目のエントリである別のジャンプ命令があります。これはCP/M 2.2のBIOSジャンプテーブルに正確に対応しています。
テーブルの最初の8つのエントリは、再起動用とキャラクタI / O用です。これらのルーチンはCP/Mと同じ仕様で実装されています。残りのジャンプはCP/Mの低レベルのディスク関連機能であり、ファイリングシステムが全く異なるのでMSX-DOSでは同等のものはありません。これらのルーチンは、メインレジスタを破損し、可能な場合にはエラーを返すこと以外は何もせずに単純に戻ります。
MSX-DOSはBIOS呼び出しの実行中に内部スタックに切り替わるため、ユーザーのスタックに必要なスペースはわずか(8バイト)です。
ジャンプテーブルは常に256バイトのページ境界上にあるが、CP/M2.2に対応するのは(アドレス0006hの内容によって定義されるように)TPAの最上部より上の「正しい」距離ではないことに注意されたい。これは行儀の良いCP/Mプログラムには関係ないはずですが、プログラムによってはCP/M 2.2のBDOSのサイズに依存しているという噂があります。これらのプログラムは修正が必要になります。
BIOSジャンプベクタのエントリは以下のとおりです。
xx00h - JMP WBOOT ;Warm boot xx03h - JMP WBOOT ;Warm boot xx06h - JMP CONST ;Console status xx09h - JMP CONIN ;Console input xx0Ch - JMP CONOUT ;Console output xx0Fh - JMP LIST ;List output xx12h - JMP PUNCH ;Punch (auxiliary) output xx15h - JMP READER ;Reader (auxiliary) input
xx18h - JMP RETURN ;Home in CP/M
xx1Bh - JMP RETURN ;Select disk in CP/M
xx1Eh - JMP RETURN ;Set track in CP/M
xx21h - JMP RETURN ;Set sector in CP/M
xx24h - JMP RETURN ;Set DMA address in CP/M
xx27h - JMP RETURN ;Read sector in CP/M
xx2Ah - JMP RETURN ;Write sector in CP/M
xx2Dh - JMP LSTST ;List status
xx30h - JMP RETURN ;Sector translate in CP/M