ここではユーザーが利用可能な 126 の BIOS エントリを紹介します。
BIOS には MAIN-ROM と SUB-ROM 内のルーチンの 2 種類あり、コーリング・シーケンスはそれぞれ異なります (これについては後述)。ここでエントリは、次のように表記します。
ラベル名 (アドレス) *n |
機能 | 機能解説および注意 |
入力 | 呼び出し時に必要なパラメータ |
出力 | リターンされるパラメータ |
レジスタ | 内容が破壊されるレジスタ |
n の値は次のような意味を持ちます。
*1 | ……… | MSX1 と同じもの。 |
*2 | ……… | スクリーン・モード 5 〜 8 では内部で SUB-ROM を呼び出す。 |
*3 | ……… | つねに SUB-ROM を呼び出す。 |
*4 | ……… | スクリーン・モード 4 〜 8 の変更はあるが、SUB-ROM は呼び出さない。 |
また、何もついていないものは、MSX2 用に新たに追加されたルーチンです。
MAIN-ROM
MAIN-ROM 内のルーチンを呼び出す場合は、通常のサブルーチンコールとして CALL 命令または RST 命令で行います。
●RST 関係
以下の RST のうち、RST 00H 〜 RST 28H は BASIC インタープリタが使います。RST 30H はスロット間コール (インタースロット・コール) に、RST 38H はハードウェア割り込みに使われます。
CHKRAM (0000H) *1 |
機能 | RAM をチェックし、システム用の RAM スロットをセット |
入力 | なし |
出力 | なし |
レジスタ | すべて |
SYNCHR (0008H) *1 |
機能 | [HL] の 1 文字が指定した文字かどうかチェック。違っていたら SYNTAX ERROR を発生し、同じなら CHRGTR (0010H) へ行く |
入力 | [HL] にチェックする文字、比較する文字をこのルーチンを呼び出す RST 命令の次にセット (インライン・パラメータ) |
出力 | HL が 1 進み、A には [HL] が入る。チェックした文字が数字であれば CY フラグをセット、ステートメントの終わり (00H または 3AH) ならば Z フラグをセット |
レジスタ | AF,HL |
例 LD HL, MOJI
RST 08H
DB 'A'
:
:
:
MOJI: DB 'B'
RDSLT (000CH) *1 |
機能 | A の値に対応するスロットを選択し、そのスロットのメモリを 1 バイト読む。このルーチンを呼ぶと割り込みを禁止し、実行を終えても解除しない |
入力 | A にスロット番号 |
| [F000EEPP] |
| │ ┬┬ |
| │ │└ 基本スロット番号 (0〜3) |
| │ └─ 拡張スロット番号 (0〜3) |
| └──── 拡張スロットを指定するとき "1" |
| HL に読み込むメモリの番地 |
出力 | A に読み込んだメモリの値 |
レジスタ | AF,BC,DE |
CHRGTR (0010H) *1 |
機能 | BASIC テキストから文字 (またはトークン) を取り出す |
入力 | [HL] に読み込む文字 |
出力 | HL が 1 進み、A には [HL] が入る。文字が数字であれば CY フラグをセット、ステートメントの終わりならば Z フラグをセット |
レジスタ | AF,HL |
WRSLT (0014H) *1 |
機能 | A の値に対応するスロットを選択し、そのスロットのメモリに値を 1 バイト書き込む。このルーチンを呼ぶと割り込みを禁止し、実行を終えても解除しない |
入力 | A でスロットを指定 (RDSLT と同じ) |
| HL に書き込む番地、E にその値 |
出力 | なし |
レジスタ | AF,BC,D |
OUTDO (0018H) *2 |
機能 | 現在使っているデバイスに値を出力 |
入力 | A に出力する値 |
| PRTFLG (F416H) が 0 以外ならプリンタ出力 |
| PTRFIL (F864H) が 0 以外なら PTRFIL で示されるファイルへ出力 |
出力 | なし |
レジスタ | なし |
CALSLT (001CH) *1 |
機能 | 他のスロットのルーチンを読み出す (インタースロット・コール) |
入力 | IY レジスタの上位 8 ビットでスロットを指定 (RDSLT と同じ)。IX にコールする番地 |
出力 | 呼び出すルーチンによる |
レジスタ | 呼び出すルーチンによる |
DCOMPR (0020H) *1 |
機能 | HL と DE の内容を比較 |
入力 | HL,DE |
出力 | HL=DE ならば Z フラグを、HL<DE なら CY フラグをセット |
レジスタ | AF |
ENASLT (0024H) *1 |
機能 | A の値に対応するスロットを選択し、以降そのスロットを使用可能にする。このルーチンを呼ぶと割り込みを禁止し、実行を終えても解除しない |
入力 | A でスロットを指定 (RDSLT と同じ) |
出力 | なし |
レジスタ | すべて |
GETYPR (0028H) *1 |
機能 | DAC (デシマル・アキュムレータ) の型を返す |
入力 | VALTYP (F663H) には DAC の型が入っている |
出力 | DAC の型によって S,Z,P/V,CY フラグが以下のように変化する |
| ・整数型 |
| C=1 |
| S=1 * |
| Z=0 |
| P/V=1 |
| ・単精度実数型 |
| C=1 |
| S=0 |
| Z=0 |
| P/V=0 * |
| ・文字列型 |
| C=1 |
| S=0 |
| Z=1 * |
| P/V=1 |
| ・倍精度実数型 |
| C=0 * |
| S=0 |
| Z=0 |
| P/V=1 |
| 各型は、* マークの付いたフラグを調べればチェックできる |
レジスタ | AF |
CALLF (0030H) *1 |
機能 | 他のスロットのルーチンを呼び出す。 |
入力 | 上記の方法による |
出力 | 呼び出すルーチンによる |
レジスタ | AF, その他は呼び出すルーチンによる |
呼び出し方
RST 30H
DB n ; n はスロット番号 (RDSLT と同じ)
DW nn ; nn は呼び出すアドレス
KEYINT (0038H) *1 |
機能 | タイマ割り込みの処理ルーチンを実行 |
入力 | なし |
出力 | なし |
レジスタ | なし |
●I/O 初期化
INITIO (003BH) *1 |
機能 | デバイスを初期化 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
INIFNK (003EH) *1 |
機能 | ファンクションキーの内容を初期化 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
●VDP アクセス用
DISSCR (0041H) *1 |
機能 | 画面表示の禁止 |
入力 | なし |
出力 | なし |
レジスタ | AF, BC |
ENASCR (0044H) *1 |
機能 | 画面の表示 |
入力 | なし |
出力 | なし |
レジスタ | AF, BC |
WRTVDP (0047H) *2 |
機能 | VDP のレジスタにデータを書き込む |
入力 | C にレジスタ番号、B にデータ。レジスタ番号は 0〜23 および 32〜46 |
出力 | なし |
レジスタ | AF, BC |
RDVRM (004AH) *1 |
機能 | VRAM の内容を読む。ただし、これは TMS9918 に対するもので VRAM のアドレスは下位 14 ビットのみ有効。全ビットを使う場合は NRDVRM をコール |
入力 | HL に読み出す VRAM のアドレス |
出力 | A に読み出した値 |
レジスタ | AF |
WRTVRM (004DH) *1 |
機能 | VRAM にデータを書き込む。ただし、これは TMS9918 に対するもので VRAM のアドレスは 14 ビットのみ有効。全ビットを使う場合は NWRVRM をコール |
入力 | HL に VRAM アドレス、A にデータ |
出力 | なし |
レジスタ | AF |
SETRD (0050H) *1 |
機能 | VDP に VRAM アドレスをセットして、読み出せる状態にする。これは、VDP のアドレス・オート・インクリメントの機能を使って、連続した VRAM 領域からデータを読み出す時に使用する。これにより RDVRM をループ中で使うより高速に読み出しが可能になる。ただし、これは TMS9918 に対するもので VRAM のアドレスは 14 ビットのみ有効。全ビットを使う場合は NSETRD をコール |
入力 | HL に VRAM アドレス |
出力 | なし |
レジスタ | AF |
SETWRT (0053H) *1 |
機能 | VDP に VRAM アドレスをセットして、書き込める状態にする。使用目的は SETRD と同様。ただし、これは TMS9918 に対するもので VRAM のアドレスは 14 ビットのみ有効。全ビットを使う場合は NSTWRT をコール |
入力 | HL に VRAM アドレス |
出力 | なし |
レジスタ | AF |
FILVRM (0056H) *4 |
機能 | VRAM の指定領域を同一のデータで埋める。ただし、これは TMS9918 に対するもので VRAM のアドレスは 14 ビットのみ有効。全ビットを使う場合は BIGFIL を参照 |
入力 | HL に書き込みを開始する VRAM アドレス、BC に書き込む領域の長さ、A にデータ |
出力 | なし |
レジスタ | AF,BC |
LDIRMV (0059H) *4 |
機能 | VRAM からメモリへブロック転送 |
入力 | HL にソース・アドレス (VRAM)、DE にデスティネーション・アドレス (メモリ)、BC に長さ。指定する VRAM のアドレスは全ビット有効 |
出力 | なし |
レジスタ | すべて |
LDIRVM (005CH) *4 |
機能 | メモリから VRAM へブロック転送 |
入力 | HL にソース・アドレス (メモリ)、DE にデスティネーション・アドレス (VRAM)、BC に長さ。指定する VRAM のアドレスは全ビット有効 |
出力 | なし |
レジスタ | すべて |
CHGMOD (005FH) *3 |
機能 | スクリーン・モードを変える。パレットは初期化しない。パレットの初期化が必要なら SUB-ROM の CHGMDP を参照 |
入力 | A にスクリーンモード (0〜8) |
出力 | なし |
レジスタ | すべて |
CHGCLR (0062H) *1 |
機能 | 画面の色を変える |
入力 | A にモード |
| FORCLR (F3E9H) に前景色 |
| BAKCLR (F3EAH) に背景色 |
| BDRCLR (F3EBH) に周辺色 |
出力 | なし |
レジスタ | すべて |
NMI (0066H) *1 |
機能 | NMI (Non Maskable Interrupt) 処理ルーチンを実行 |
入力 | なし |
出力 | なし |
レジスタ | なし |
CLRSPR (0069H) *3 |
機能 | すべてのスプライトを初期化。スプライト・パターンをヌルに、スプライト番号をスプライト面番号に、スプライト・カラーを前景色にする。スプライトの垂直位置は 209 (モード 0〜3) または 217 (モード 4〜8) にセット |
入力 | SCRMOD (FCAFH) にスクリーン・モード |
出力 | なし |
レジスタ | すべて |
INITXT (006CH) *3 |
機能 | 画面を TEXT1 モード (40*24) に初期化。このルーチンではパレットは初期化しない。パレットの初期化が必要なら、このルーチンをコールした後、SUB-ROM の INIPLT をコールする |
入力 | LINL40 (F3AEH) に 1 行の幅 |
| TATNAM (F3B3H) にパターンネーム・テーブル |
| TXTCGP (F3B7H) にパターンジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIT32 (006FH) *3 |
機能 | 画面を GRAPHIC1 モード (32*24) に初期化。このルーチンではパレットは初期化しない |
入力 | T32NAM (F3BDH) にパターンネーム・テーブル |
| T32COL (F3BFH) にカラーテーブル |
| T32CGP (F3C1H) にパターンジェネレータ・テーブル |
| T32ATR (F3C3H) にスプライトアトリビュート・テーブル |
| T32PAT (F3C5H) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIGRP (0072H) *3 |
機能 | 画面を高解像グラフィックモードに初期化。このルーチンではパレットは初期化しない |
入力 | GRPNAM (F3C7H) にパターンネーム・テーブル |
| GRPCOL (F3C9H) にカラーテーブル |
| GRPCGP (F3CBH) にパターンジェネレータ・テーブル |
| GRPATR (F3CDH) にスプライトアトリビュート・テーブル |
| GRPPAT (F3CFH) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIMLT (0075H) *3 |
機能 | 画面を MULTI COLOR モードに初期化。このルーチンではパレットは初期化しない。 |
入力 | MLTNAM (F3D1H) にパターンネーム・テーブル |
| MLTCOL (F3D3H) にカラーテーブル |
| MLTCGP (F3D5H) にパターンジェネレータ・テーブル |
| MLTATR (F3D7H) にスプライトアトリビュート・テーブル |
| MLTPAT (F3D9H) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
SETTXT (0078H) *3 |
機能 | VDP のみを TEXT1 モード (40*24) にする |
入力 | INITXT と同じ |
出力 | なし |
レジスタ | すべて |
SETT32 (007BH) *3 |
機能 | VDP のみを GRAPHIC1 モード (32*24) にする |
入力 | INIT32 と同じ |
出力 | なし |
レジスタ | すべて |
SETGRP (007EH) *3 |
機能 | VDP のみを GRAPHIC2 モードにする |
入力 | INIGRP と同じ |
出力 | なし |
レジスタ | すべて |
SETMLT (0081H) *3 |
機能 | VDP のみを MULTI COLOR モードにする |
入力 | INIMLT と同じ |
出力 | なし |
レジスタ | すべて |
CALPAT (0084H) *1 |
機能 | スプライト・ジェネレータ・テーブルのアドレスを返す |
入力 | A にスプライト番号 |
出力 | HL にアドレス |
レジスタ | AF, DE, HL |
CALATR (0087H) *1 |
機能 | スプライトアトリビュート・テーブルのアドレスを返す |
入力 | A にスプライト番号 |
出力 | HL にアドレス |
レジスタ | AF, DE, HL |
GSPSIZ (008AH) *1 |
機能 | 現在のスプライト・サイズを返す |
入力 | なし |
出力 | A にスプライト・サイズ (バイト数)。16*16 のサイズの場合のみ CY フラグをセット。それ以外の場合は CY フラグをリセット |
レジスタ | AF |
GRPPRT (008DH) *2 |
機能 | グラフィック画面に文字を表示 |
入力 | A にキャラクタコード。スクリーン・モード 5〜8 なら LOGOPR (FB02H) にロジカル・オペレーションコード |
出力 | なし |
レジスタ | なし |
●PSG 関連
GICINI (0090H) *1 |
機能 | PSG を初期化し、PLAY 文のための初期値をセット |
入力 | なし |
出力 | なし |
レジスタ | すべて |
WRTPSG (0093H) *1 |
機能 | PSG のレジスタにデータを書き込む |
入力 | A にPSG のレジスタ番号、E にデータ |
出力 | なし |
レジスタ | なし |
RDPSG (0096H) *1 |
機能 | PSG のレジスタの値を読む |
入力 | A に PSG のレジスタ番号 |
出力 | A に読み込んだ値 |
レジスタ | なし |
STRTMS (0099H) *1 |
機能 | バックグラウンド・タスクとして PLAY 文が実行中であるかどうかチェックし、実行中でなければ PLAY 文の実行を開始 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
●キーボード、CRT、プリンタへの出力
CHSNS (009CH) *1 |
機能 | キーボード・バッファの状態をチェック |
入力 | なし |
出力 | バッファが空であれば Z フラグをセット。そうでなければ Z フラグをリセット |
レジスタ | AF |
CHGET (009FH) *1 |
機能 | 1 文字入力 (入力待ちあり) |
入力 | なし |
出力 | A に入力された文字コード |
レジスタ | AF |
CHPUT (00A2H) *1 |
機能 | 1 文字表示 |
入力 | A に出力する文字コード |
出力 | なし |
レジスタ | なし |
LPTOUT (00A5H) *1 |
機能 | 1 文字プリンタ出力 |
入力 | A に出力する文字コード |
出力 | 失敗した場合は CY フラグをセット |
レジスタ | F |
LPTSTT (00A8H) *1 |
機能 | プリンタの状態をチェック |
入力 | なし |
出力 | A が 255 で Z フラグがリセットされていなければプリンタは READY。A が 0 で Z フラグがセットされていればプリンタは NO READY |
レジスタ | AF |
CNVCHR (00ABH) *1 |
機能 | グラフィック・ヘッダかどうかをチェックし、コードを変換 |
入力 | A に文字コード |
出力 | CY フラグがリセット → グラフィック・ヘッダではない |
| CY フラグと Z フラグがセット → A に変換後のコード |
| CY フラグがセット、Z フラグがリセット → A に変換されていないコード |
レジスタ | AF |
PINLIN (00AEH) *1 |
機能 | リターンキーや STOP キーがタイプされるまでに入力された文字コードを指定されたバッファに格納する |
入力 | なし |
出力 | HL にバッファの先頭アドレス -1、STOP キーで終了したときのみ CY フラグをセット |
レジスタ | すべて |
INLIN (00B1H) *1 |
機能 | AUTFLG (F6AAH) がセットされる以外は PINLIN と同じ |
入力 | なし |
出力 | HL にバッファの先頭アドレス -1、STOP キーで終了したときのみ CY フラグをセット |
レジスタ | すべて |
QINLIN (00B4H) *1 |
機能 | ? |
入力 | なし |
出力 | HL にバッファの先頭アドレス -1、STOP キーで終了したときのみ CY フラグをセット |
レジスタ | すべて |
BREAKX (00B7H) *1 |
機能 | Ctrl-STOP キーを押しているかどうかチェック。このルーチンでは割り込みが禁止される |
入力 | なし |
出力 | 押されていれば CY フラグをセット |
レジスタ | AF |
BEEP (00C0H) *3 |
機能 | ブザーを鳴らす |
入力 | なし |
出力 | なし |
レジスタ | すべて |
CLS (00C3H) *3 |
機能 | 画面クリア |
入力 | ゼロフラグをセット |
出力 | なし |
レジスタ | AF, BC, DE |
POSIT (00C6H) *1 |
機能 | カーソルの移動 |
入力 | H にカーソルの X 座標 |
L にカーソルの Y 座標 |
出力 | なし |
レジスタ | AF |
FNKSB (00C9H) *1 |
機能 | ファンクション・キーの表示がアクティブかどうかチェックし (FNKFLG)、アクティブなら表示、でなければ消す |
入力 | FNKFLG (FBCEH) |
出力 | なし |
レジスタ | すべて |
ERAFNK (00CCH) *1 |
機能 | ファンクション・キーの表示を消す |
入力 | なし |
出力 | なし |
レジスタ | すべて |
DSPFNK (00CFH) *2 |
機能 | ファンクション・キーを表示 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
TOTEXT (00D2H) *1 |
機能 | 画面を強制的にテキストモードにする |
入力 | なし |
出力 | なし |
レジスタ | すべて |
●ゲーム I/O アクセス
GTSTCK (00D5H) *1 |
機能 | ジョイスティックの状態を返す |
入力 | A に調べるジョイスティックの番号 |
出力 | A にジョイスティックの方向 |
レジスタ | すべて |
GTTRIG (00D8H) *1 |
機能 | トリガボタンの状態を返す |
入力 | A に調べるトリガボタンの番号 |
出力 | A が 0 ならばトリガボタンは押されていない |
| A が 0FFH ならトリガボタンは押されている |
レジスタ | AF |
GTPAD (00DBH) *2 |
機能 | タッチパッドの状態を返す |
入力 | A に調べるタッチパッドの番号 |
出力 | A に値 |
レジスタ | すべて |
GTPDL (00DEH) *2 |
機能 | パドルの値を返す |
入力 | A にパドルの番号 |
出力 | A に値 |
レジスタ | すべて |
●カセットの入出力ルーチン
TAPION (00E1H) *1 |
機能 | カセットのモーター ON の後、ヘッダ・ブロックを読む |
入力 | なし |
出力 | 失敗した場合は CY フラグをセット |
レジスタ | すべて |
TAPIN (00E4H) *1 |
機能 | テープからデータを読む |
入力 | なし |
出力 | A にデータ。失敗した場合は CY フラグをセット |
レジスタ | すべて |
TAPIOF (00E7H) *1 |
機能 | テープからの読み込みをストップ |
入力 | なし |
出力 | なし |
レジスタ | なし |
TAPOON (00EAH) *1 |
機能 | カセットのモーター ON の後、ヘッダ・ブロックを書き込む |
入力 | A = 0 ならショート・ヘッダ |
| A ≠ 0 ならロング・ヘッダ |
出力 | 失敗した場合は CY フラグをセット |
レジスタ | すべて |
TAPOUT (00EDH) *1 |
機能 | テープにデータを書き込む |
入力 | A にデータ |
出力 | 失敗した場合は CY フラグをセット |
レジスタ | すべて |
TAPOOF (00F0H) *1 |
機能 | テープへの書き込みをストップ |
入力 | なし |
出力 | 失敗した場合は CY フラグをセット |
レジスタ | なし |
STMOTR (00F3H) *1 |
機能 | カセットのモーターの動作設定 |
入力 | A=0 → ストップ |
| A=1 → スタート |
| A=0FFH → 現在と逆の動作 |
出力 | なし |
レジスタ | AF |
●その他
CHGCAP (0132H) *1 |
機能 | CAP ランプの状態を変える |
入力 | A = 0 → ランプを消す |
| A ≠ 0 → ランプをつける |
出力 | なし |
レジスタ | AF |
CHGSND (0135H) *1 |
機能 | 1 ビット・サウンドポートの状態を変える |
入力 | A = 0 → OFF |
| A ≠ 0 → ON |
出力 | なし |
レジスタ | AF |
RSLREG (0138H) *1 |
機能 | 基本スロット・レジスタに現在出力している内容を読む |
入力 | なし |
出力 | A に読み込んだ値 |
レジスタ | A |
WSLREG (013BH) *1 |
機能 | 基本スロット・レジスタにデータを書き込む |
入力 | A に書き込む値 |
出力 | なし |
レジスタ | なし |
RDVDP (013EH) *1 |
機能 | VDP のステータス・レジスタを読む |
入力 | なし |
出力 | A に読み込んだ値 |
レジスタ | A |
SNSMAT (0141H) *1 |
機能 | キーボード・マトリクスから指定した行の値を読む |
入力 | A に指定する行 |
出力 | A にデータ (押されているキーに対応するビットが 0 になる) |
レジスタ | AF, C |
ISFLIO (014AH) *1 |
機能 | デバイスが動作中かどうかチェック |
入力 | なし |
出力 | A=0 → 動作中 |
| A≠0 → 動作中ではない |
レジスタ | AF |
OUTDLP (014DH) *1 |
機能 | プリンタ出力。LPTOUT とは次の点で異なる |
| 1. TAB はスペースに展開される |
| 2. MSX 仕様でないプリンタの場合、ひらがなをカタカナに、グラフィック文字を 1 バイト文字に変換する |
| 3. 失敗した場合、device I/O error となる |
入力 | A にデータ |
出力 | なし |
レジスタ | F |
KILBUF (0156H) *1 |
機能 | キーボード・バッファをクリア |
入力 | なし |
出力 | なし |
レジスタ | HL |
CALBAS (0159H) *1 |
機能 | BASIC インタープリタ内のルーチンをインタースロット・コール |
入力 | IX に呼び出すアドレス |
出力 | 呼び出すルーチンによる |
レジスタ | 呼び出すルーチンによる |
●MSX2 用に追加されたエントリ
SUBROM (015CH) |
機能 | SUB-ROM をインタースロット・コール |
入力 | IX に呼び出すアドレス、同時に IX をスタックに積む |
出力 | 呼び出すルーチンによる |
レジスタ | 裏レジスタと IY はリザーブされる |
EXTROM (015FH) |
機能 | SUB-ROM をインタースロット・コール |
入力 | IX に呼び出すアドレス |
出力 | 呼び出すルーチンによる |
レジスタ | 裏レジスタと IY はリザーブされる |
EOL (0168H) |
機能 | 行の終わりまでデリート |
入力 | H にカーソルの X 座標、L に Y 座標 |
出力 | なし |
レジスタ | すべて |
BIGFIL (016BH) |
機能 | 機能的には FILVRM と同じ。ただし、以下の点で異なる。 |
| FILVRM では、スクリーン・モードが 0 〜 3 であるかをチェックし、もしそうなら VDP は 16K バイトの VRAM しか持っていないものとして扱う (MSX1 とのコンパチビリティのため)。しかし、BIGFIL はモードのチェックは行わず、与えられたパラメータどおりに動作する |
入力 | FILVRM と同じ |
出力 | FILVRM と同じ |
レジスタ | FILVRM と同じ |
NSETRD (016EH) |
機能 | VDP にアドレスをセットして、読み込める状態にする |
入力 | HL に VRAM アドレス |
出力 | なし |
レジスタ | AF |
NSTWRT (0171H) |
機能 | VDP にアドレスをセットして、書き込める状態にする |
入力 | HL に VRAM アドレス |
出力 | なし |
レジスタ | AF |
NRDVRM (0174H) |
機能 | VRAM の内容を読む |
入力 | HL に読み出す VRAM のアドレス |
出力 | A に読み出した値 |
レジスタ | F |
NWRVRM (0177H) |
機能 | VRAM にデータを書き込む |
入力 | HL に VRAM アドレス、A にデータ |
出力 | なし |
レジスタ | AF |
SUB-ROM
SUB-ROM のコーリング・シーケンスは以下のとおりです。
:
LD IX, INIPLT ;Set BIOS entry address
CALL EXTROM ;Returns here
:
また、IX を壊したくない場合には次のようにコールします。
:
INIPAL: PUSH IX ; Save IX
LD IX, INIPLT ; Set BIOS entry address
JP SUBROM ; Returns caller of INIPAL
:
GRPPRT (0089H) |
機能 | グラフィック画面に 1 文字出力 (スクリーン 5〜8 のみで動作) |
入力 | A に文字コード |
出力 | なし |
レジスタ | なし |
NVBXLN (00C9H) |
機能 | ボックスを描く |
入力 | 始点 : BC に X 座標、DE に Y 座標 |
| 終点 : GXPOS (FCB3H) に X 座標、GYPOS (FCB5H) に Y 座標 |
| 色 : ATRBYT (F3F2H) にアトリビュート |
| ロジカルオペレーションコード : LOGOPR (FB92H) |
出力 | なし |
レジスタ | すべて |
NVBXFL (00CDH) |
機能 | 塗りつぶされたボックスを描く |
入力 | 始点 : BC に X 座標、DE に Y 座標 |
| 終点 : GXPOS (FCB3H) に X 座標、GYPOS (FCB5H) に Y 座標 |
| 色 : ATRBYT (F3F2H) にアトリビュート |
| ロジカルオペレーションコード : LOGOPR (FB92H) |
出力 | なし |
レジスタ | すべて |
CHGMOD (00D1H) |
機能 | スクリーン・モードを変える |
入力 | A にスクリーン・モード (0〜8) |
出力 | なし |
レジスタ | すべて |
INITXT (00D5H) |
機能 | 画面をテキスト・モード (40*24) にして初期化する |
入力 | TXTNAM (F3B3H) にパターンネーム・テーブル |
| TXTCGP (F3B7H) にパターンジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIT32 (00D9H) |
機能 | 画面をテキスト・モード (32*24) にして初期化する |
入力 | T32NAM (F3BDH) にパターンネーム・テーブル |
| T32COL (F3BFH) にカラーテーブル |
| T32CGP (F3C1H) にパターンジェネレータ・テーブル |
| T32ATR (F3C3H) にスプライトアトリビュート・テーブル |
| T32PAT (F3C5H) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIGRP (00DDH) |
機能 | 画面を高解像グラフィック・モードにして初期化する |
入力 | GRPNAM (F3C7H) にパターンネーム・テーブル |
| GRPCOL (F3C9H) にカラーテーブル |
| GRPCGP (F3CBH) にパターンジェネレータ・テーブル |
| GRPATR (F3CDH) にスプライトアトリビュート・テーブル |
| GRPPAT (F3CFH) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
INIMLT (00E1H) |
機能 | 画面を MULTI COLOR モードにして初期化する |
入力 | MLTNAM (F3D1H) にパターンネーム・テーブル |
| MLTCOL (F3D3H) にカラーテーブル |
| MLTCGP (F3D5H) にパターンジェネレータ・テーブル |
| MLTATR (F3D7H) にスプライトアトリビュート・テーブル |
| MLTPAT (F3D9H) にスプライトジェネレータ・テーブル |
出力 | なし |
レジスタ | すべて |
SETTXT (00E5H) |
機能 | VDP をテキスト・モード (40*24) にする |
入力 | INITXT と同じ |
出力 | なし |
レジスタ | すべて |
SETT32 (00E9H) |
機能 | VDP をテキスト・モード (32*24) にする |
入力 | INI32 と同じ |
出力 | なし |
レジスタ | すべて |
SETGRP (00EDH) |
機能 | VDP を高解像度モードにする |
入力 | INIGRP と同じ |
出力 | なし |
レジスタ | すべて |
SETMLT (00F1H) |
機能 | VDP を MULTI COLOR モードにする |
入力 | INIMLT と同じ |
出力 | なし |
レジスタ | すべて |
CLRSPR (00F5H) |
機能 | すべてのスプライトを初期化。スプライト・パターンをヌルに、スプライト番号をスプライト面番号に、スプライトの色を前景色にする。スプライトの垂直位置は 217 にセット |
入力 | SCRMOD (FCAFH) にスクリーン・モード |
出力 | なし |
レジスタ | すべて |
CALPAT (00F9H) |
機能 | スプライトジェネレータ・テーブルのアドレスを返す (このルーチンは MAIN-ROM の同名の BIOS と同じ) |
入力 | A にスプライト番号 |
出力 | HL にアドレス |
レジスタ | AF, DE, HL |
CALATR (00FDH) |
機能 | スプライト属性テーブルのアドレスを返す (このルーチンは MAIN-ROM の同名の BIOS と同じ) |
入力 | A にスプライト番号 |
出力 | HL にアドレス |
レジスタ | AF, DE, HL |
GSPSIZ (0101H) |
機能 | 現在のスプライト・サイズを返す (このルーチンは MAIN-ROM の同名の BIOS と同じ) |
入力 | なし |
出力 | A にスプライト・サイズ。16*16 のサイズの場合のみ CY フラグがセット |
レジスタ | AF |
GETPAT (0105H) |
機能 | キャラクタ・パターンを返す |
入力 | A に文字コード |
出力 | PATWRK (FC40H) にキャラクタ・パターン |
レジスタ | すべて |
WRTVRM (0109H) |
機能 | VRAM にデータを書き込む |
入力 | HL に VRAM アドレス (0〜FFFFH)、A にデータ |
出力 | なし |
レジスタ | AF |
RDVRM (010DH) |
機能 | VRAM の内容を読む |
入力 | HL に読み出す VRAM のアドレス (0〜FFFFH) |
出力 | A に読み出した値 |
レジスタ | AF |
CHGCLR (0111H) |
機能 | 画面の色を変える |
入力 | A にスクリーン・モード |
| FORCLR (F3E9H) に前景色 |
| BAKCLR (F3EAH) に背景色 |
| BDRCLR (F3EBH) に周辺色 |
出力 | なし |
レジスタ | すべて |
CLSSUB (0115H) |
機能 | 画面クリア |
入力 | なし |
出力 | なし |
レジスタ | すべて |
DSPFNK (011DH) |
機能 | ファンクション・キーの表示 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
WRTVDP (012DH) |
機能 | VDP のレジスタにデータを書き込む |
入力 | C にレジスタ番号、B にデータ |
出力 | なし |
レジスタ | AF, BC |
VDPSTA (0131H) |
機能 | VDP のレジスタを読む |
入力 | A にレジスタ番号 (0〜9) |
出力 | A にデータ |
レジスタ | F |
SETPAG (013DH) |
機能 | ページの切り替え |
入力 | DPPAGE (FAF5H) にディスプレイ・ページ番号 |
| ACPAGE (FAF6H) にアクティブ・ページ番号 |
出力 | なし |
レジスタ | AF |
INIPLT (0141H) |
機能 | パレットの初期化 (現在のパレットは VRAM にセーブされている) |
入力 | なし |
出力 | なし |
レジスタ | AF, BC, DE |
RSTPLT (0145H) |
機能 | パレットを VRAM からリストアする |
入力 | なし |
出力 | なし |
レジスタ | AF, BC, DE |
GETPLT (0149H) |
機能 | パレットからカラーコードを得る |
入力 | A にパレット番号 (0〜15) |
出力 | B の上位 4 ビットに赤のコード |
| B の下位 4 ビットに青のコード |
| C の下位 4 ビットに緑のコード |
レジスタ | AF, DE |
SETPLT (014DH) |
機能 | カラーコードをパレットにセット |
入力 | D にパレット番号 (0〜15) |
| A の上位 4 ビットに赤のコード |
| A の下位 4 ビットに青のコード |
| E の下位 4 ビットに緑のコード |
出力 | なし |
レジスタ | AF |
BEEP (017DH) |
機能 | ブザーを鳴らす |
入力 | なし |
出力 | なし |
レジスタ | すべて |
PROMPT (0181H) |
機能 | プロンプトを表示 |
入力 | なし |
出力 | なし |
レジスタ | すべて |
NEWPAD (01ADH) |
機能 | マウス、ライトペンの状態を読む |
入力 | A に以下のデータを入れてコール。カッコ内は戻り値 |
| 8 … ライトペン・チェック (0FFH で有効) |
| 9 … X 座標を返す |
| 10 … Y 座標を返す |
| 11 … ライトペン・スイッチの状態を返す (押されたとき 0FFH) |
| 12 … マウスがポート 1 に接続されているか (0FFH で有効) |
| 13 … X 方向のオフセットを返す |
| 14 … Y 方向のオフセットを返す |
| 15 … (つねに 0) |
| 16 … マウスがポート 2 に接続されているか (0FFH で有効) |
| 17 … X 方向のオフセットを返す |
| 18 … Y 方向のオフセットを返す |
| 19 … (つねに 0) |
出力 | A |
レジスタ | すべて |
CHGMDP (01B5H) |
機能 | VDP のモードを変える。パレットは初期化される |
入力 | A にスクリーン・モード (0〜8) |
出力 | なし |
レジスタ | すべて |
KNJPRT (01BDH) |
機能 | グラフィック画面 (5〜8) に漢字出力 |
入力 | BC に JIS 漢字コード、A に表示モード。 |
| 表示モードは BASIC の PUT KANJI 命令と同様に以下の意味を持つ |
| 0 … 16×16 ドットで表示 |
| 1 … 偶数番目のドットを表示 |
| 2 … 奇数番目のドットを表示 |
出力 | なし |
レジスタ | AF |
REDCLK (01F5H) |
機能 | クロック・データを読む |
入力 | [00MMAAAA] |
| ┬┬─ |
| │└─ アドレス (0〜15) |
| └── モード (0〜3) |
出力 | A に読み込んだデータ (下位 4 ビットのみ有効) |
レジスタ | F |
WRTCLK (01F9H) |
機能 | クロック・データを書き込む |
入力 | A に書き込むデータ。C にクロック RAM アドレス |
出力 | なし |
レジスタ | F |