MSX-DOS2PIS 02 04

From Z80 Machines Wiki
Jump to: navigation, search

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