MSX Datapack wiki化計画

Appendix A.1 BIOS 一覧

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

 ここではユーザーが利用可能なBIOSエントリを紹介します。
 BIOSにはMAIN ROMとSUB ROM内のルーチンの2種類があり、コールの手順はそれぞれ異なります。ここでエントリは次のように表記します。

 記号は次のような意味を持ちます。

記号意味
MSXMSX1からサポートされているルーチン
MSX2MSX2用に追加または機能拡張されたルーチン。
MSX2+MSX2+用に追加または機能拡張されたルーチン。

 [A]、[HL]などレジスタ名を[]で囲んだものは、そのレジスタの内容を示します。例えば、HLレジスタの内容が8000Hであった場合に、[HL]とは8000Hを示していることになります。
 【】で囲んだものは、ワークエリア中の名前と番地です。例えば、【PRTFLG(F416H)】とあれば、ワークエリアのF416H番地にあるPRTFLGという名前の場所を示します。「A.2 ワークエリア」をご参照ください。

A.1.1 MAIN ROM

 MAIN ROM内のルーチンを呼び出す場合は、通常のサブルーチンコールとしてCALL命令または、RST命令で行います。

RST関係
 以下のRSTのうち、RST 00H〜RST 28HはBASICインタプリタが使います。RST 30Hはインタースロットコールに、RST 38Hはハードウェア割り込みに使います。

CHKRAM (0000H/MAIN)
  機 能  

RAMをチェックし、システム用のRAMに使うスロットを選択します。このルーチンの実行後は、さらに初期化のルーチンへ分岐します。

 コール手順 

なし

  戻り値  

なし

変更レジスタ

すべて

SYNCHR (0008H/MAIN)
  機 能  

HLレジスタが指す文字が指定した文字かどうかを調べます。違っていたら「Syntax error」を発生し、同じであればCHRGTR (0010/MAIN)へジャンプします。

 コール手順 

HL チェックする文字。このルーチンを呼び出すRST命令の後に比較する文字を入れる(インラインパラメータ)。

  例  
         ld     hl, moji
         rst    08h
         db     'A'
               ・
               ・
               ・
moji:    db     'B'
  戻り値  

HL +1される
A 1つ選んだHLの指す文字
CYフラグ チェックした文字が数字であればセット
Zフラグ ステートメントの終わり(00Hまたは3AH)ならばセット

変更レジスタ

AF、HL

RDSLT (000CH/MAIN)
  機 能  

Aレジスタの値に対応するスロットを選択し、そのスロットのメモリを1バイト読み出します。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。

 コール手順 

A スロット操作
HL 読み込むメモリの番地

  戻り値  

A 読み込んだメモリの値

変更レジスタ

AF、BC、DE

CHRGTR (0010H/MAIN)
  機 能  

BASICテキストから文字(またはトークン)を取り出します。

 コール手順 

HL 読み込む文字が入っているメモリの番地

  戻り値  

HL +1される
A 1つ選んだHLの指す文字
CYフラグ チェックした文字が数字であればセット
Zフラグ ステートメントの終わり(00Hまたは3AH)ならばセット

変更レジスタ

AF、HL

WRSLT (0014H/MAIN)
  機 能  

Aレジスタの値に対応するスロットを選択し、そのスロットのメモリに値を書き込みます。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。

 コール手順 

A スロット操作(形式はRDSLTと同じ)
HL 書き込むメモリの番地

  戻り値  

なし

変更レジスタ

AF、BC、D

OUTDO (0018H/MAIN)
  機 能  

現在使っているデバイスに値を出力します。

  戻り値  

なし

変更レジスタ

なし

CALSLT (001CH/MAIN)
  機 能  

他のスロットのルーチンを呼び出します(インタースロットコール)。

 コール手順 

IX 上位8ビットにスロット番号(形式はRDSLTと同じ)
IY コールする番地

  戻り値  

呼び出すルーチンによる

変更レジスタ

呼び出すルーチンによる

DCOMPR (0020H/MAIN)
  機 能  

HLレジスタとDEレジスタの内容を比較します。

 コール手順 

HL 比較する値1
DE 比較する値2

  戻り値  

なし

変更レジスタ

AF

ENASLT (0024H/MAIN)
  機 能  

Aレジスタの値に対応するスロットを選択し、以降そのスロットを使用可能にします。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。

 コール手順 

A スロット操作(形式はRDSLTと同じ)
HL 呼び出すアドレス

  戻り値  

なし

変更レジスタ

すべて

GETYPR (0028H/MAIN)
  機 能  

DAC(デシマルアキュムレータ)の型を調べます。

 コール手順 

なし

  戻り値  

DACの型によって、S、Z、P/V、CYフラグが以下のように変化する
各型は、*のついたフラグを調べればチェックできる

変更レジスタ

AF

CALLF (0030H/MAIN)
  機 能  

別のスロットにあるルーチンを呼び出します。

 コール手順 
  戻り値  

呼び出すルーチンによる

変更レジスタ

AF

KEYINT (0038H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

なし

変更レジスタ

なし

INITIO (003BH/MAIN)
  機 能  

デバイスを初期化します。

 コール手順 

なし

  戻り値  

なし

変更レジスタ

すべて

INIFNK (003EH/MAIN)
  機 能  
 コール手順 

なし

  戻り値

なし  

変更レジスタ
DISSCR (0041H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

なし

変更レジスタ
ENASCR (0044H/MAIN)
  機 能  
 コール手順 

なし

  戻り値 

なし 

変更レジスタ
WRTVDP (0047H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
RDVRM (004AH/MAIN)
  機 能  
 コール手順 
  戻り値  
変更レジスタ
WRTVRM (004DH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETRD (0050H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETWRT (0053H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
FILVRM (0056H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
LDIRMV (0059H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
CHGMOD (005CH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
CHGCLR (0062H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
NMI (0066H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

なし

変更レジスタ
CLRSPR (0069H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

なし

変更レジスタ
INITXT (006CH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
INIT32 (006FH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
INIGRP (0072H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
INIMLT (0075H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETTXT (0078H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETT32 (007BH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETGRP (007EH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
SETMLT (0081H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  
変更レジスタ
CALPAT (0084H/MAIN)
  機 能  
 コール手順 
  戻り値  
変更レジスタ
CALATR (0087H/MAIN)
  機 能  
 コール手順 
  戻り値  
変更レジスタ
GSPSIZ (008AH/MAIN)
  機 能  
 コール手順 

なし

  戻り値  
変更レジスタ
GRPPRT (008DH/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
GICINI (0090H/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

なし

変更レジスタ
WRTPSG (0093H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ

なし

RDPSG (0096H/MAIN)
  機 能  

PSGレジスタの値を読み出します。

 コール手順 
  戻り値  
変更レジスタ

なし

STRTMS (0099H/MAIN)
  機 能  

バックグラウンドタスクとして、PLAY文が実行中であるかどうかをチェックして、実行中でなければ音楽の再生を始めます。

 コール手順 
  戻り値  

なし

変更レジスタ
CHSNS (009CH/MAIN)
  機 能  

キーボードバッファの状態を調べます。

 コール手順 

なし

  戻り値  
変更レジスタ
CHGET (009FH/MAIN)
  機 能  
 コール手順 

なし

  戻り値  

A 入力された文字コード

変更レジスタ
CHPUT (00A2H/MAIN)
  機 能  
 コール手順 
  戻り値  

なし

変更レジスタ
CHPUT (00A2H/MAIN)
LPTOUT (00A5H/MAIN)
LPTSTT (00A8H/MAIN)
CNVCHR (00ABH/MAIN)
PINLIN (00AEH/MAIN)
INLIN (00B1H/MAIN)
QINLIN (00B4H/MAIN)
BREAKX (00B7H/MAIN)
BEEP (00C0H/MAIN)
CLS (00C3H/MAIN)
POSIT (00C6H/MAIN)
FNKSB (00C9H/MAIN)
ERAFNK (00CCH/MAIN)
DSPFNK (00CFH/MAIN)
TOTEXT (00D2H/MAIN)
GTSTCK (00D5H/MAIN)
GTTRIG (00D8H/MAIN)
GTPAD (00DBH/MAIN)
GTPDL (00DEH/MAIN)
TAPION (00E1H/MAIN)
TAPIN (00E4H/MAIN)
TAPIOF (00E7H/MAIN)
TAPOON (00EAH/MAIN)
TAPOUT (00EDH/MAIN)
TAPOOF (00F0H/MAIN)
STMOTR (00F3H/MAIN)
CHGCAP (0132H/MAIN)
CHGSND (0135H/MAIN)
RSLREG (0138H/MAIN)
WSLREG (013BH/MAIN)
RDVDP (013EH/MAIN)
SNSMAT (0141H/MAIN)
ISFLIO (014AH/MAIN)
OUTDLP (014DH/MAIN)
KILBUF (0156H/MAIN)
CALBAS (0159H/MAIN)
SUBROM (015CH/MAIN)
EXTROM (015FH/MAIN)
EOL (0168H/MAIN)
BIGFIL (016BH/MAIN)
NSETRD (016EH/MAIN)
NSTWRT (0171H/MAIN)
NRDVRM (0174H/MAIN)
NWRVRM (0177H/MAIN)
RDRES (017AH/MAIN)
WRRES (017DH/MAIN)

A.1.2 SUB ROM

 SUB ROM内のルーチンを呼び出す場合は、以下のようにインタースロットコールを呼び出して使います。

ld     ix, BIOS entry address
call   extrom

 IXレジスタを壊したくない場合は、次のように呼び出します。

push   ix     ; save IX
ld     ix, BIOS entry address
jp     SUBROM
GRPPRT (0089H/SUB)
NVBXLN (00C9H/SUB)
NVBXFL (00CDH/SUB)
CHGMOD (00D1H/SUB)
INITXT (00D5H/SUB)
INIT32 (00D9H/SUB)
INIGRP (00DDH/SUB)
INIMLT (00E1H/SUB)
SETTXT (00E5H/SUB)
SETT32 (00E9H/SUB)
SETGRP (00EDH/SUB)
SETMLT (00F1H/SUB)
CLRSPR (00F5H/SUB)
CALPAT (00F9H/SUB)
CALATR (00FDH/SUB)
GSPSIZ (0101H/SUB)
GETPAT (0105H/SUB)
WRTVRM (0109H/SUB)
RDVRM (010DH/SUB)
CHGCLR (0111H/SUB)
CLSSUB (0115H/SUB)
DSPFNK (011DH/SUB)
WRTVDP (012DH/SUB)
VDPSTR (0131H/SUB)
SETPAG (013DH/SUB)
INIPLT (0141H/SUB)
RSTPLT (0145H/SUB)
GETPLT (0149H/SUB)
SETPLT (014DH/SUB)
BEEP (017DH/SUB)
PROMPT (0181H/SUB)
NEWPAD (01ADH/SUB)
CHGMDP (01B5H/SUB)
KNJPRT (01BDH/SUB)
REDCLK (01F5H/SUB)
WRTCLK (01F9H/SUB)