主にマシン語で使用する BIOS コールを一覧にしてみました。
あえて 1 ページに短くまとめて、
ページ検索で目的のルーチンを見つけられるようにしています。
ディスクアクセス関連は
通常 BDOS コール(MSX-DOS ファンクションコール)を使用します。
BASIC からは RST コールは RST、それ以外は直接 CALL します。
MSX-DOS ではインタースロットコールを行う必要があります。
CALSLT: equ 001CH
EXPTBL: equ 0FCC1H
ld iy,(EXPTBL-1)
ld ix,呼び出すBIOS番地
call CALSLT
CALLF (RST 30H) を使用する事も可能です。
MSX1 時代はジョイスティックも多数販売されていて、
A・B ボタンの代わりに トリガー1・2 で表記され、配置も定まっていませんでした。
MSX2 が出た頃までにはファミリーコンピュータなどと
互換のジョイパッドが主流となり、
左手に十字キー、右手の左に B ボタン・右に A ボタンの位置が定番となります。
-
00D5H GTSTCK カーソルキー・ジョイスティックの状態を返します。
・変更レジスタ すべて
・入力レジスタ A=ジョイスティック番号
o=カーソルキー 1~2=ジョイスティックポート 1~2
・出力レジスタ A=方向
0=なし 1=上 2=右上 3=右 4=右下 5=下 6=左下 7=左 8=左上
BASIC の STICK に同等です。
-
00D8H GTTRIG スペースキー・ジョイスティックボタンの状態を返します。
・変更レジスタ すべて
・入力レジスタ A=ボタン番号
o=SPACE キー 1~2=ジョイスティックポート 1~2 A ボタン(トリガー 1)
3~4=ジョイスティックポート 1~2 B ボタン(トリガー 2)
・出力レジスタ A=ボタンの状態(FFH=押されている 0=押されていない)
BASIC の STRIG に同等です。
-
00DBH GTPAD 入出力装置の状態を返します。
・変更レジスタ すべて
・入力レジスタ A=装置 ID
0~3=タッチパネル 1 4~7=タッチパネル2 8~11=ライトペン
12~15=マウス・トラックボール1 16~19=マウス・トラックボール2
0・4・8・12・16=装置の状態 FFH=有効 0=無効
1・5・9・13・17=X 座標
2・6・10・14・18=Y 座標
3・7・11=ボタン・スイッチの状態 FFH=押されている 0=押されていない
15・19=常に 0
・出力レジスタ A=値
BASIC の PAD に同等です。MSX turbo R では ライトペンが無効です。
0・4・8・12・16 を読み出した段階で他の値も設定されます。
-
00DEH GTPDL パドルの状態を返します。
・変更レジスタ すべて
・入力レジスタ A=パドル番号(奇数=ポート1 偶数=ポート2)
・出力レジスタ A=値
BASIC の PDL に同等です。販売された製品は存在しません。
MSX turbo R・MSXPLAYer では無効になっています。
MSX turbo R ではカセット入出力がなくなっているため、
STMOTR(00F3H) 以外は CY フラグをセットし返します。STMOTR は何もしません。
-
00E1H TAPION MOTOR ON にしてヘッダブロックを読みます。
・変更レジスタ すべて
失敗した場合は CY フラグがセットされます。
-
00E4H TAPIN テープからデータを読み込みます。
・変更レジスタ すべて
・出力レジスタ A=データ
失敗した場合は CY フラグがセットされます。
-
00E7H TAPIOF 読み込み状態のテープを止めます。
-
00EAH TAPOON MOTOR ON にsてヘッダブロックを書き込みます。
・変更レジスタ すべて
・入力レジスタ A=ヘッダ長(A=0 ショートヘッダ A≠0 ロングヘッダ)
失敗した場合は CY フラグがセットされます。
-
00EDH TAPOUT テープにデータを書き込みます。
・変更レジスタ すべて
・入力レジスタ A=データ
失敗した場合は CY フラグがセットされます。
-
00F0H TAPOOF 書き込み状態のテープを止めます。
失敗した場合は CY フラグがセットされます。
-
00F3H STMOTR カセットモーターの状態を変更します。
・変更レジスタ AF
・入力レジスタ A=状態(0=OFF 1=ON FFH=ON・OFF 変更)
通常は IX に番地を入れ、EXTCAL(015FH)を CALL します。
IX を変更されたくない場合、PUSH IX した後、
IX に番地を入れて SUBROM(015CH) へ JP します。
MSX-DOS からの実行は特殊な対応が必要です。
-
0089H GRPPRT SCREEN 5 以降で 1 文字出力します。
・入力レジスタ A=キャラクターコード
-
00C9H NVBXLN 四角の枠を描きます。
・変更レジスタ すべて
・入力レジスタ BC=開始 X 座標、DE=開始 Y 座標
GXPOS(FCB3H)=終点 X 座標、GYPOS(FCB5H)=終点 Y 座標
ATRBYT(F3F2H)=色 LOGOPR(FB92H)=ロジカルオペレーションコード
-
00CDH NVBXFL 塗りつぶした四角を描きます。
・変更レジスタ すべて
・入力レジスタ BC=開始 X 座標、DE=開始 Y 座標
GXPOS(FCB3H)=終点 X 座標、GYPOS(FCB5H)=終点 Y 座標
ATRBYT(F3F2H)=色 LOGOPR(FB92H)=ロジカルオペレーションコード
-
00D1H CHGMOD スクリーンモードを変更します。
・変更レジスタ すべて
・入力レジスタ A=スクリーンモード
パレットを含めて初期化されます。
-
00D5H INITXT SCREEN 0 にして初期化します。
・変更レジスタ すべて
-
00D9H INIT32 SCREEN 1 にして初期化します。
・変更レジスタ すべて
-
00DDH INIGRP SCREEN 2 にして初期化します。
・変更レジスタ すべて
-
00E1H INIMLT SCREEN 3 にして初期化します。
・変更レジスタ すべて
-
00E5H SETTXT VDP を SCREEN 0 にします。
・変更レジスタ すべて
-
00E9H SETT32 VDP を SCREEN 1 にします。
・変更レジスタ すべて
-
00EDH SETGRP VDP を SCREEN 2 にします。
・変更レジスタ すべて
-
00F1H SETMLT VDP を SCREEN 3 にします。
・変更レジスタ すべて
-
00F5H CLRSPR スプライトを初期化します。
・変更レジスタ すべて
-
00F9H CALPAT スプライトジェネレータテーブルのアドレスを返します。
・変更レジスタ AF・DE・HL
・入力レジスタ A=スプライト番号
・出力レジスタ HL=VRAM アドレス
MAIN-ROM 0084H の CALPAT と同じです。
-
00FDH CALATR スプライトアトリビュートテーブルのアドレスを返します。
・変更レジスタ AF・DE・HL
・入力レジスタ A=スプライト番号
・出力レジスタ HL=VRAM アドレス
MAIN-ROM 0087H の CALATR と同じです。
-
0101H GSPSIZ 現在のスプライトサイズを返します。
・変更レジスタ AF
・出力レジスタ A=スプライトサイズ (バイト)
16✕16 の場合は CY フラグをセット
MAIN-ROM 008AH の GSPSIZ と同じです。
-
0105H GETPAT キャラクターパターンを返します。
・変更レジスタ すべて
・入力レジスタ A=キャラクターコード
PATWRK (FC40H) 以降キャラクターパターンが入ります。
-
0109H WRTVRM VRAM に値を書き込みます。
・変更レジスタ AF
・入力レジスタ HL=VRAM アドレス A=データ
-
010DH RDVRM VRAM から値を読み出します。
・変更レジスタ AF
・入力レジスタ HL=VRAM アドレス
・出力レジスタ A=データ
-
0111H CHGCLR 画面の色を変更します。
・変更レジスタ すべて
・入力レジスタ A=スクリーンモード
FORCLR (F3E9H) に前景色、BAKCLR (F3EAH) に背景色、
BDRCLR (F3EBH) に周辺色を設定してからコールして下さい。
-
0115H CLSSUB 画面をクリアします。
・変更レジスタ すべて
-
011DH DSPFNK 画面下にファンクションキーの一覧を表示します。
・変更レジスタ すべて
-
012DH WRTVDP VDP レジスタに値を書き込みます。
・変更レジスタ AF・BC
・C=レジスタ番号、B=値
-
0131H VDPSTA VDP レジスタから値を取り出します。
・変更レジスタ F
・入力レジスタ A=レジスタ番号
・出力レジスタ A=データ
-
013DH SETPAG ページを切り替えます。
・変更レジスタ AF
DPPAGE (FAF5H)=表示するページ番号
ACPAGE (FAF6H)=線画するページ番号
-
0141H INIPLT COLOR パレットを初期化します。
・変更レジスタ AF・BC・DE
-
0145H RSTPLT COLOR パレットの RESTORE を行います。
・変更レジスタ AF・BC・DE
-
0149H GETPLT COLOR パレットからカラーコードを取り出します。
・変更レジスタ AF・DE
・入力レジスタ A=COLOR 番号
・出力レジスタ B=上位 4 ビット 赤(R) 下位 4 ビット 青(B) C=緑(G)
-
014DH SETPLT XOLOR パレットへカラーコードを設定します。
・変更レジスタ AF
・入力レジスタ D=COLOR 番号
A=上位 4 ビット 赤(R) 下位 4 ビット 青(B) E=緑(G)
-
017DH BEEP ビープ音を出します。
・変更レジスタ すべて
-
0181H PROMPT プロンプト表示を行います。
・変更レジスタ すべて
-
0191H BLTVV VRAM 領域間での COPY を行います。
・変更レジスタ すべて
・入力レジスタ HL= F562H
SX(F562H,2)=転送元 X 座標 SY(F564H,2)=転送元 Y 座標
DX(F566H,2)=転送先 X 座標 DY(F568H,2)=転送先 Y 座標
NX(F56AH,2)=転送領域の X 幅 NY(F56CH,2)=転送領域の Y 幅
ARG(F56FH,1)=方向・拡張 RAM
LOGOP(F570H,1)=ロジカルオペレーションコード
CY フラグをリセットします。
-
0195H BLTVM メモリ→VRAM 転送を行います。
・変更レジスタ すべて
・入力レジスタ HL=F562H
DPTR(F562H,2)=転送元メモリ番地
DX(F566H,2)=転送先 X 座標 DY(F568H,2)=転送先 Y 座標
ARG(F56FH,1)=方向・拡張 RAM
LOGOP(F570H,1)=ロジカルオペレーションコード
エラーの場合は CY フラグをセットします。
-
0199H BLTMV VRAM→メモリ転送を行います。
・変更レジスタ すべて
・入力レジスタ HL=F562H
SX(F562H,2)=転送元 X 座標 SY(F564H,2)=転送元 Y 座標
DPTR(F566H,2)=転送先メモリ番地
ARG(F56FH,1)=方向・拡張 RAM
LOGOP(F570H,1)=ロジカルオペレーションコード
エラーの場合は CY フラグをセットします。
-
019DH BLTVD ファイル→VRAM 転送を行います。
・変更レジスタ すべて
・入力レジスタ HL=F562H
FNPTR(F562H,2)=ファイル名の番地
DX(F566H,2)=転送先 X 座標 DY (F568H,2)=転送先 Y 座標
ARG(F56FH,1))=方向・拡張 RAM
LOGOP(F570H,1)=ロジカルオペレーションコード
ファイル関連を除いたエラーの場合は CY フラグをセットします。
-
01A1H BLTDV VRAM→ファイル転送を行います。
・変更レジスタ すべて
・入力レジスタ HL=F562H
SX(F562H,2)=転送元 X 座標 SY(F564H,2)=転送元 Y 座標
FNPTR(F566H,2)=ファイル名の番地
NX(F56AH,2)=転送領域の X 幅 NY(F56CH,2)=転送領域の Y 幅
ARG(F56FH,1))=方向・拡張 RAM
LOGOP(F570H,1)=ロジカルオペレーションコード
CY フラグはリセットされます。
-
01A5H BLTMD 配列データをファイルから読み出します。
・変更レジスタ すべて
・入力レジスタ HL=F562H
FNPTR(F562H,2)=ファイル名の番地
SPTR(F566H,2)=読み出す先頭番地 EPTR(F568H,2)=読み出す終了番地
CY フラグはリセットされます。
-
01A9H BLTDM 配列データをファイル保存します。
・変更レジスタ すべて
・入力レジスタ HL=F562H
SPTR(F562H,2)=保存する先頭番地 EPTR(F564H,2)=保存する終了番地
FNPTR(F566H,2)=ファイル名の番地
CY フラグはリセットされます。
-
01ADH NEWPAD 入出力装置の状態を返します。
・変更レジスタ すべて
・入力レジスタ A=装置 ID 8~11=ライトペン
12~15=マウス・トラックボール1 16~19=マウス・トラックボール2
8・12・16=装置の状態 FFH=有効 0=無効
9・13・17=X 座標
10・14・18=Y 座標
11=ボタン・スイッチの状態 FFH=押されている 0=押されていない
15・19=常に 0
・出力レジスタ A=値
BASIC の PAD に同等です。MSX turbo R では ライトペンが無効です。
8・12・16 を読み出した段階で他の値も設定されます。
-
01B5H CHGMDP VDP スクリーンモードを変更。パレットも初期化されます。
・変更レジスタ すべて
・入力レジスタ A=スクリーンモード
SCREEN 10~12 は SCREEN 8 で初期化し、VDP レジスタを変更します。
-
01BDH KNJPRT SCREEN 5 以降で漢字を出力します。
・変更レジスタ AF
・入力レジスタ BC=JIS 漢字コード
A=表示モード(0=16✕16 1=奇数行のみ 2=偶数行のみ)
-
01F5H REDCLK クロックから値を取り出します。
・変更レジスタ AF
・入力レジスタ C=bit4~5 モード bit0~3 アドレス
・出力レジスタ A=値(bit0~3 が有効)
-
01F9H WRTCLK クロックに値を書き込みます。
・変更レジスタ F
・入力レジスタ A=値 C=bit4~5 モード bit0~3 アドレス