{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7章 MSX拡張BIOS仕様]] ,{BSIZE:0|RIGHT}[[A.2 ワークエリア|Appendix A.2 ワークエリア]] →  ここではユーザーが利用可能なBIOSエントリを紹介します。  BIOSにはMAIN ROMとSUB ROM内のルーチンの2種類があり、コールの手順はそれぞれ異なります。ここでエントリは次のように表記します。  記号は次のような意味を持ちます。 ,記号,意味 ,MSX,MSX1からサポートされているルーチン ,MSX2,MSX2用に追加または機能拡張されたルーチン。 ,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) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,RAMをチェックし、システム用のRAMに使うスロットを選択します。このルーチンの実行後は、さらに初期化のルーチンへ分岐します。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,すべて ::SYNCHR (0008H/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HLレジスタが指す文字が指定した文字かどうかを調べます。違っていたら「Syntax error」を発生し、同じであればCHRGTR (0010/MAIN)へジャンプします。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,チェックする文字。このルーチンを呼び出すRST命令の後に比較する文字を入れる(インラインパラメータ)。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  例   ld hl, moji rst 08h db 'A' ・ ・ ・ moji: db 'B' ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,+1される ,,A ,1つ選んだHLの指す文字 ,,CYフラグ ,チェックした文字が数字であればセット ,,Zフラグ ,ステートメントの終わり(00Hまたは3AH)ならばセット ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、HL ::RDSLT (000CH/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,Aレジスタの値に対応するスロットを選択し、そのスロットのメモリを1バイト読み出します。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,スロット操作 ,,HL ,読み込むメモリの番地 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A 読み込んだメモリの値 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC、DE ::CHRGTR (0010H/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,BASICテキストから文字(またはトークン)を取り出します。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,読み込む文字が入っているメモリの番地 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,+1される ,,A ,1つ選んだHLの指す文字 ,,CYフラグ ,チェックした文字が数字であればセット ,,Zフラグ ,ステートメントの終わり(00Hまたは3AH)ならばセット ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、HL ::WRSLT (0014H/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,Aレジスタの値に対応するスロットを選択し、そのスロットのメモリに値を書き込みます。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,スロット操作(形式はRDSLTと同じ) ,,HL ,書き込むメモリの番地 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC、D ::OUTDO (0018H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,現在使っているデバイスに値を出力します。 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ::CALSLT (001CH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,他のスロットのルーチンを呼び出します(インタースロットコール)。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,IX ,上位8ビットにスロット番号(形式はRDSLTと同じ) ,,IY ,コールする番地 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,呼び出すルーチンによる ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,呼び出すルーチンによる ::DCOMPR (0020H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HLレジスタとDEレジスタの内容を比較します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,比較する値1 ,,DE ,比較する値2 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::ENASLT (0024H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,Aレジスタの値に対応するスロットを選択し、以降そのスロットを使用可能にします。このルーチンを呼ぶと、割り込みを禁止し、実行後も割り込みは解除されません。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,スロット操作(形式はRDSLTと同じ) ,,HL ,呼び出すアドレス ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,すべて ::GETYPR (0028H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,DAC(デシマルアキュムレータ)の型を調べます。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし(【VALTYP】にはDACの型が入っている) ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,DACの型によって、S、Z、P/V、CYフラグが以下のように変化する ,{t},{BSIZE:0} ,{c},{BSIZE:2 0 1 0|SIZE:60},{BSIZE:2 0 1 0|SIZE:80},{BSIZE:2 0 1 0|SIZE:80},{BSIZE:2 0 1 0|SIZE:80},{BSIZE:2 0 1 0} ,,整数型,単精度実数型,文字型,倍精度実数型 ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,C=1 ,C=1 ,C=1 ,C=0{{sup *}} ,,S=1{{sup *}},S=0 ,S=0 ,S=0 ,,Z=0 ,Z=0 ,Z=1{{sup *}},Z=0 ,{c},{BSIZE:0},{BSIZE:0 0 1 0},{BSIZE:0 0 1 0},{BSIZE:0 0 1 0},{BSIZE:0 0 1 0} ,,P/V=1 ,P/V=0{{sup *}},P/V=1 ,P/V=1 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,各型は、*のついたフラグを調べればチェックできる ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::CALLF (0030H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,別のスロットにあるルーチンを呼び出します。 ,{SIZE:100|CENTER} コール手順  rst 30h db n ; n はスロット番号(形式はRDSLTと同じ) dw nn ; nnは呼び出すスロットアドレス ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,呼び出すルーチンによる ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::KEYINT (0038H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,タイマ割り込みの処理ルーチンを実行します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ::INITIO (003BH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,デバイスを初期化します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,すべて ::INIFNK (003EH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,ファンクションキーの内容を初期化します。このルーチンを実行後、画面をクリアするとファンクションキーの表示も変わります。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}  戻り値 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,すべて ::DISSCR (0041H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,画面表示を禁止します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC ::ENASCR (0044H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,画面を表示します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}  戻り値  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC ::WRTVDP (0047H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VDPのレジスタに値を書き込みます。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,C,VDPのレジスタ番号(レジスタ番号は0〜23、32〜46) ,,B,書き込む値 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC ::RDVRM (004AH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMの指定したアドレスの内容を読み出します。ただし、このルーチンはTMS9918(MSX1のVDP)に対するもので、VRAMのアドレスは下位14ビットのみが有効です。全ビットを使うときは、NRDVRM(0174H/MAIN)を使います。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,VRAMのアドレス ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A,読み出した値 ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::WRTVRM (004DH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMにデータを書き込みます。ただし、このルーチンはTMS9918に対するもので、VRAMのアドレスは下位14ビットのみが有効です。全ビットを使うときは、NVRVRM(0177H/MAIN)を使います。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,VRAMのアドレス ,,A ,書き込む値 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::SETRD (0050H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VDPにVRAMアドレスをセットして、読み出せる状態にします。このルーチンはVDPのアドレスオートインクリメントの機能を使って、連続したVRAM領域からデータを読み出すときに使います。このルーチンの実行後はポートから直接VRAMから読み出します。したがって、RDVRMをループ中で使うより高速な読み出しができます。ただし、このルーチンはTMS9918に対するもので、VRAMのアドレスは下位14ビットのみが有効です。全ビットを使うときは、NSETRD(016EH/MAIN)を使います。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,VRAMアドレス ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::SETWRT (0053H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VDPにVRAMアドレスをセットして、書き込める状態にします。使用目的はSETRDと同じです。ただし、このルーチンはTMS9918に対するもので、VRAMのアドレスは下位14ビットのみが有効です。全ビットを使うときは、NSTWRT(0171H/MAIN)を使います。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,VRAMアドレス ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF ::FILVRM (0056H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMの指定用猟奇を同一のデータで埋めます。ただし、このルーチンはTMS9918に対するもので、VRAMのアドレスは下位14ビットのみが有効です。全ビットを使うときは、BIGFIL(016BH/MAIN)を使います。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,書き込みを開始するVRAMアドレス ,,BC,書き込む領域の長さ(バイト数) ,,A ,書き込む値 ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,AF、BC ::LDIRMV (0059H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMからメモリへデータをブロック転送します。 ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL,転送元のVRAMアドレス(指定するVRAMあどれすは全ビットが有効) ,,DE,転送先のRAMアドレス ,,BC,転送する長さ(バイト数) ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,すべて ------------------------------------------------- ::CHGMOD (005CH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::CHGCLR (0062H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::NMI (0066H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::CLRSPR (0069H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::INITXT (006CH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::INIT32 (006FH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::INIGRP (0072H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::INIMLT (0075H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::SETTXT (0078H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::SETT32 (007BH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::SETGRP (007EH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::SETMLT (0081H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ ::CALPAT (0084H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ ::CALATR (0087H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ ::GSPSIZ (008AH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ ::GRPPRT (008DH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::GICINI (0090H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::WRTPSG (0093H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ なし ::RDPSG (0096H/MAIN) ,{SIZE:100|CENTER}  機 能   PSGレジスタの値を読み出します。 ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ なし ::STRTMS (0099H/MAIN) ,{SIZE:100|CENTER}  機 能   バックグラウンドタスクとして、PLAY文が実行中であるかどうかをチェックして、実行中でなければ音楽の再生を始めます。 ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::CHSNS (009CH/MAIN) ,{SIZE:100|CENTER}  機 能   キーボードバッファの状態を調べます。 ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   ,{SIZE:100|CENTER}変更レジスタ ::CHGET (009FH/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  なし ,{SIZE:100|CENTER}  戻り値   A 入力された文字コード ,{SIZE:100|CENTER}変更レジスタ ::CHPUT (00A2H/MAIN) ,{SIZE:100|CENTER}  機 能   ,{SIZE:100|CENTER} コール手順  ,{SIZE:100|CENTER}  戻り値   なし ,{SIZE:100|CENTER}変更レジスタ ::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) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMの内容を読み出します。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,読み出すVRAMのアドレス ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,読み出した値 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,F ::NWRVRM (0177H/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,VRAMにデータを書き込みます。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,HL ,書き込むVRAMのアドレス ,,A ,書き込む値 ::RDRES (017AH/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,RESETポートの内容を読み出します。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,読み出した値 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ::WRRES (017DH/MAIN) ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  機 能   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,RESETポートに値を書き込みます。ハードウェアリセットをシミュレートするときは、AレジスタのMSBを0にして、このBIOSをコールした後、BIOSの0番地にジャンプします。 ,{t},{BSIZE:1} ,{SIZE:100|CENTER} コール手順  ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A ,書き込む値 ,{t},{BSIZE:1} ,{SIZE:100|CENTER}  戻り値   ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0} ,,なし ,{t},{BSIZE:1} ,{SIZE:100|CENTER}変更レジスタ ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:60},{BSIZE:0|SIZE:60},{BSIZE:0} ,,A !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) ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7章 MSX拡張BIOS仕様]],{BSIZE:0|RIGHT}[[A.2 ワークエリア|Appendix A.2 ワークエリア]]→