{{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種類があり、コールの手順はそれぞれ異なります。ここでエントリは次のように表記します。  記号は次のような意味を持ちます。 ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0|SIZE:100},{BSIZE:1 0} ,記号,意味 ,{c},{BSIZE:0},{BSIZE:0} ,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,スロット操作 {{svg P584.svg}} ,{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} ,,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:60},{BSIZE:0} ,,A,出力する値 ,,【PRTFLG(F416H)】,0以外であれば、プリンタに出力 ,,【PTRFIL(F864H)】,0以外であれば、PTRFILで示されるファイルへ出力 ,{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:60},{BSIZE:0} ,,Zフラグ,HL=DEならばセット ,,CYフラグ,HL