BIOS コール

主にマシン語で使用する BIOS コールを一覧にしてみました。

あえて 1 ページに短くまとめて、
ページ検索で目的のルーチンを見つけられるようにしています。

ディスクアクセス関連は
通常 BDOS コール(MSX-DOS ファンクションコール)を使用します。


MAIN-ROM

BASIC からは RST コールは RST、それ以外は直接 CALL します。

MSX-DOS ではインタースロットコールを行う必要があります。

 

CALSLT: equ 001CH

EXPTBL: equ 0FCC1H

 

ld iy,(EXPTBL-1)

ld ix,呼び出すBIOS番地

             call CALSLT

 

CALLF (RST 30H) を使用する事も可能です。

 

RST コール

  • 0000H CHKRAM RAM を確認し、システム用 RAM スロットを設定します。
    ・変更レジスタ すべて
    ソフトウェアリセットとして使われる事があります。
  • 0008H SYNCHR RST としてコール、続く 1 バイトの文字(DEFB で設定)と
    HL 番地で示す文字が一致すれば CHRGTR (0010H) へ飛び、
    異なっていたら Syntax Error を表示します。
    ・変更レジスタ AF・HL
    ・入力レジスタ HL=比較文字の番地
  • 000CH RDSLT A の値に対応したスロットからメモリを 1 バイト読みます。
    ・変更レジスタ AF・BC・DE
    ・入力レジスタ A=スロット番号
     A: bit7=拡張スロット指定時に 1、
     bit2・3 拡張スロット番号、bit0・1 基本スロット番号
    ・出力レジスタ A=メモリの値
    割り込みは禁止し、禁止したまま返されます。
  • 0010H CHRGTR BASIC のテキストから文字 トークン) を取り出します。
    ・変更レジスタ AF・HL
    ・入力レジスタ HL=文字の番地
    ・出力レジスタ HL=HL+1、A=(HL)
    文字が数字の場合は CY フラグがセットされます。
    ステートメントの終わりであった場合は Z フラグがセットされます。
  • 0014H WRSLT A の値に対応したスロットからメモリを 1 バイト書き込みます。
    ・変更レジスタ AF・BC・D
    ・入力レジスタ A=スロット番号 HL=書き込む番地 E=書き込む値
     A: bit7=拡張スロット指定時に 1、
     bit2・3 拡張スロット番号、bit0・1 基本スロット番号
    割り込みは禁止し、禁止したまま返されます。
  • 0018H OUTDO 現在使用しているデバイスに値を出力します。
    ・入力レジスタ A=出力する値
    PRTFLG (F416H)≠0 の場合はプリンタへ出力、
    PTRFIL (F864H)≠0 の場合は PTRFIL で指定されたファイルへ出力します。
  • 001CH CALSLT インタースロットコール。他スロットのルーチン呼び出し。
    ・入力レジスタ IY=スロット IX=コールする番地
     IY: bit15=拡張スロット指定時に 1、bit10・11 拡張スロット番号、bit8~9 基本スロット番号
  • 0020H DCOMPR HL と DE の値を比較します。
    ・変更レジスタ AF
    ・入力レジスタ HL=値 DE=値
    HL=DE の場合は Z フラグ、HL<DE の場合は CY フラグをセットします。
  • 0024H ENASLT A のレジスタを呼び出し、使えるようにします。
    ・変更レジスタ すべて
    ・入力レジスタ A=スロット番号 HL=書き込む番地 E=書き込む値
     A: bit7=拡張スロット指定時に 1、
     bit2・3 拡張スロット番号、bit0・1 基本スロット番号
    割り込みは禁止し、禁止したまま返されます。
  • 0028H GETYPR VALTYP (F663H) を参照し、フラグの状態で型を返します。
    ・変更レジスタ AF
    次のフラグで返されます。
    整数型 C=1 S=1 Z=0 P/V=1・文字列型 C=1 S=0 Z=1 P/V=1
    単精度実数型 C=1 S=0 Z=0 P/V=0・倍精度実数型 C=0 S=0 Z=0 P/V=1
  • 0030H CALLF スロットを呼び出します。
    ・変更レジスタ AF など
    RST 30h の後に DEFB スロット番号
     bit7=拡張スロット指定時に 1、
     bit2・3 拡張スロット番号、bit0・1 基本スロット番号
    続けて DEFW 呼び出す番地 を入れます。
  • 0038H KEYINT タイマ割り込み処理ルーチンを実行します。

初期化

  • 003BH INITIO デバイスを初期化します。
    ・変更レジスタ すべて
  • 003EH INIFNK ファンクションキーの内容を初期化します。
    ・変更レジスタ すべて

VDP アクセス

  • 0041H DISSCR 画面を非表示にします。
    ・変更レジスタ AF・BC
  • 0044H ENASCR 画面を表示します。(DISSCR(0041H)に対し)
    ・変更レジスタ AF・BC
  • 0047H WRTVDP VDP レジスタにデータを書き込みます。
    ・変更レジスタ AF・BC
    ・入力レジスタ C=VDP レジスタ番号 B=データ
    MSX2 以降では SUB-ROM を呼び出して処理します。
  • 004AH RDVRM VRAM の値を取り出します。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 呼び出すアドレス(下位 14 バイトが有効)
    ・出力レジスタ A=値
    アドレスを 16 バイトで使用する場合は
    NRDVRM(0174H)をコールして下さい。
  • 004DH WRTVRM VRAM へ値を書き込みます。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 書き込みアドレス(下位 14 バイトが有効) A=値
    アドレスを 16 バイトで使用する場合は
    NWRVRM(0177H)をコールして下さい。
  • 0050H SETRD VDP オートインクリメントを用いた読込初期設定を行います。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 読み出し開始番地(下位 14 バイトが有効)
    その後 VDP ポート 0 を読み出していきます。
    開始番地を 16 バイトで使用する場合は
    NSETRD(016EH)をコールして下さい。 
  • 0053H SETWRT VDP オートインクリメントを用いた書込初期設定を行います。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 書き込み開始番地(下位 14 バイトが有効)
    その後 VDP ポート 0 へ書き込んでいきます。
    開始番地を 16 バイトで使用する場合は
    NSTWRT(0171H)をコールして下さい。 
  • 0056H FILVRM HL 番地より A のデータで BC バイト書き込みます。
    ・変更レジスタ AF・BC
    ・入力レジスタ HL=VRAM 書き込み開始アドレス(下位 14 バイトが有効)
     BC=サイズ A=書き込むデータ
    開始番地を 16 バイトで使用する場合は
    BIGFIL(016BH)をコールして下さい。 
  • 0059H LDIRMV VRAM HL 番地からメモリ DE 番地へ BC バイト転送します。
    ・変更レジスタ すべて
    ・入力レジスタ HL=VRAM 転送元開始アドレス
     DE=メモリ転送先アドレス BC=サイズ
    HL・DE は 16 ビット有効です。
  • 005CH LDIRVM メモリ HL 番地から VRAM DE 番地へ BC バイト転送します。
    ・変更レジスタ すべて
    ・入力レジスタ HL=メモリ転送元開始アドレス
     DE=VRAM 転送先アドレス BC=サイズ
    HL・DE は 16 ビット有効です。
    インタースロットコール経由では動作に問題が発生します。
  • 005FH CHGMOD スクリーンモードを変更します。
    ・変更レジスタ すべて
    ・入力レジスタ A=スクリーンモード
    パレットは初期化しません。内部で SUB-ROM を呼び出します。
    パレットを変更するスクリーンモード変更は
    CHGMOD(SUB-ROM 00D1H)があります。
  • 0062H CHGCLR 画面の色を変更します。
    ・変更レジスタ すべて
    ・入力レジスタ A=スクリーンモード
    FORCLR (F3E9H) に前景色、BAKCLR (F3EAH) に背景色、
    BDRCLR (F3EBH) に周辺色を設定してからコールして下さい。
  • 0066H NMI NMI 処理ルーチンを実行します。
  • 0069H CLRSPR スプライトを初期化します。
    ・変更レジスタ すべて
    SCRMOD (FCAFH) にスクリーンモードに応じて Y 座標が設定されます。
  • 006CH INITXT SCREEN 0 に変更・初期化します。パレット初期化しません。
    ・変更レジスタ すべて
  • 006FH INIT32 SCREEN 1 に変更・初期化します。パレット初期化しません。
  • ・変更レジスタ すべて
  • 0072H INIGRP SCREEN 2 に変更・初期化します。パレット初期化しません。
    ・変更レジスタ すべて
  • 0075H INIMLT SCREEN 3 に変更・初期化します。パレット初期化しません。
    ・変更レジスタ すべて
  • 0078H SETTXT VDP を SCREEN 0 に変更します。
    ・変更iレジスタ すべて
  • 007BH SETT32 VDP を SCREEN 1 に変更します。
    ・変更レジスタ すべて
  • 007EH SETGRP VDP を SCREEN 2 に変更します。
    ・変更レジスタ すべて
    SCREEN 1 にした後 SETGRP を実行する事で SCREEN 1.5 になります。
  • 0081H SETMLT VDP を SCREEN 3 に変更します。
    ・変更レジスタ すべて
  • 0084H CALPAT スプライトジェネレータテーブルのアドレスを返します。
    ・変更レジスタ AF・DE・HL
    ・入力レジスタ A=スプライト番号
    ・出力レジスタ HL=VRAM アドレス
  • 0087H CALATR スプライトアトリビュートテーブルのアドレスを返します。
    ・変更レジスタ AF・DE・HL
    ・入力レジスタ A=スプライト番号
    ・出力レジスタ HL=VRAM アドレス
  • 008AH GSPSIZ 現在のスプライトサイズを返します。
    ・変更レジスタ AF
    ・出力レジスタ A=スプライトサイズ (バイト)
    16✕16 の場合は CY フラグをセット
  • 008DH GRPPRT グラフィック画面に文字を出力します。
    ・入力 A=キャラクタコード
    SCREEN 5 以降では LOGOPR (FB02H) へ
    ロジカルオペレーションコードを設定できます

PSG

  • 0090H GICINI PSG を初期化します。
    ・変更レジスタ すべて
  • 0093H WRTPSG PSG レジスタに値を書き込みます。
    ・入力レジスタ A=PSG レジスタ番号 E=書き込むデータ
  • 0096H RDPSG PSG のレジスタの値を得ます。
    ・入力レジスタ A=PSG レジスタ番号
    ・出力レジスタ A=得た値
  • 0099H STRTMS PLAY が実行されていなければ PLAY を開始します。
    ・変更レジスタ すべて

入出力

  • 009CH CHSNS キーボードバッファが空か確認します
    ・変更レジスタ AF
    バッファが空の場合は Z フラグをセット
  • 009FH CHGET 1 文字入力します。ない場合は入力されるまで待ちます。
    ・変更レジスタ AF
    ・出力レジスタ A=入力されたキャラクターコード
  • 00A2H CHPUT 1 文字出力します。
    ・入力レジスタ A=出力するキャラクターコード
  • 00A5H LPTOUT プリンターへ 1 文字出力します。
    ・変更レジスタ F
    ・入力レジスタ A=出力するキャラクターコード
    出力に失敗した場合は CY フラグをセット
  • 00A8H LPTSTT プリンターの状態を確認します。
    ・変更レジスタ AF
    ・出力レジスタ A=状態(255=READY・0=NO READY)
    No READY の場合は Z フラグをセット。
  • 00ABH CNVCHR MSX 向けではないプリンター用に文字コードを変換します。
    ・変更レジスタ AF
    ・入力レジスタ A=キャラクターコード
    ・出力レジスタ A=キャラクターコード(変換された場合は変換後)
    変換した場合は CY フラグ・Z フラグをセット。
  • 00AEH PINLIN 行入力を受け付け、バッファへ入れます。
    ・変更レジスタ すべて
    ・HL=バッファ先頭アドレス-1
    STOP キーで終了した場合は CY フラグをセット
  • 00B1H INLIN AUTFLG(F6AAH)をセットし、 PINLIN(00AEH)を実行します。
    ・変更レジスタ すべて
    ・HL=バッファ先頭アドレス-1
    STOP キーで終了した場合は CY フラグをセット
  • 00B4H QINLIN「? 」を表示し、PINLIN(00AEH)を実行します。
    ・変更レジスタ すべて
    ・HL=バッファ先頭アドレス-1
    STOP キーで終了した場合は CY フラグをセット
    「?」と記載しているところがありますが、
    実際には BASIC の INPUT で使われています。
  • 00B7H BREAKX CTRL+STOP キーが押されているか確認します。
    ・変更レジスタ AF
    CTRL+STOP が押されている場合は CY フラグをセット
    割り込みが禁止されます。
  • 00C0H BEEP ビープ音を出します。
    ・変更レジスタ すべて
    内部で SUB-ROM を呼び出します。
  • 00C3H CLS 画面をクリアします。
    ・変更レジスタ AF・BC・DE
    コールする際は Z フラグのクリアが推奨されています。
    内部で SUB-ROM を呼び出します。
  • 00C6H POSIT カーソルを移動します。
    ・変更レジスタ AF
    ・入力レジスタ H=カーソル X 座標 L=カーソル Y 座標
    LOCATE と異なり、左・上の座標は 1 になります。
  • 00C9H FNKSB FNKFLG (FBCEH) でファンクションキーの表示を変えます。
  • ・変更レジスタ すべて
  • 00CCH ERAFNK テキスト画面下のファンクションキーの表示をなくします。
    ・変更レジスタ すべて
  • 00CFH DSPFNK テキスト画面下にファンクションキーの一覧を表示します。
    ・変更レジスタ すべて
  • 00D2H TOTEXT テキスト画面に切り替えます。
    ・変更レジスタ すべて

ジョイスティックポート(カーソル+SPACE キー)

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 変更)

その他

  • 0132H CHGCAP CAPS キーの LED を変更します。
    ・変更レジスタ AF
    ・入力レジスタ A=状態(A=0 OFF A≠0 ON)
  • 0135H CHGSND 1 ビットサウンドを変更します。
    ・変更レジスタ AF
    ・入力レジスタ A=状態(A=0 OFF A≠0 ON)
  • 0138H RSLREG 基本スロットレジスタの出力内容を読みます。
    ・変更レジスタ A
    ・出力レジスタ A=値
  • 013BH WSLREG 基本スロットレジスタに値を書き込みます。
    ・入力レジスタ A=値
  • 013EH RDVDP VDP ステータスレジスタを読みます。
    ・出力レジスタ A=値
  • 0141H SNSMAT キーボードマトリクスから値を読みます。
    ・変更レジスタ AF・C
    ・入力レジスタ A=読み込むキーボードマトリクスの行
    ・出力レジスタ A=データ
  • 0144H PHYDIO ディスク装置へ物理的な入出力を行います。
    ・変更レジスタ すべて
    ・入力レジスタ A=ディスクドライブ(0=A:、1=B:、…… 7=H:)
     B=読み書きを行うセクタ数 C=メディア ID
     DE=読み書きを開始するセクター番号 HL=読み書きするバッファ開始番地
    ・出力レジスタ B=読み書きされたセクター数 A=エラーコード(CY セット時)
     エラーコード 0=Write protected 2=Not ready 4=Data error
      6=Seek error 8=Record not found 10=Write error
      12=Bad parameter 14=Out of memory 16=Other error
    書き込む場合はバッファに内容を入れ、
    読む場合はバッファの領域を確保します。
    CY フラグをセットした場合は書き込み、
    セットしない場合は読み込みとしてコールします。
    失敗した場合は CY クラグがセットされて返ります。
    このルーチンは主な解説書に記載がありません。
    通常は BDOS コール を用いてディスクアクセスして下さい。
  • 014AH ISFLIO デバイスの動作状態を返します。
    ・変更レジスタ AF
    ・出力レジスタ A=状態(A=0 動作中 A≠0 動作していない)
  • 014DH OUTDLP プリンターへ出力します。
    ・変更レジスタ F
    ・入力レジスタ A=データ
    TAB は数文字の SPACE に変換し、
    MSX 仕様でないプリンターではひらがな→カタカナなどの変換を行います。
    失敗した場合は Device I/O Error にします。
  • 0156H KILBUF キーボードバッファをクリアします。
    ・変更レジスタ HL
  • 0159H CALBAS BASIC インタプリタルーチンのスロット間呼出を行います。
    ・入力レジスタ IX=呼び出す番地
    このルーチンは主な解説書に記載がありません。

MSX2 以降

  • 015CH SUBROM SUB-ROM のインタースロットコールを行います。
    ・変更レジスタ IY・裏レジスタ以外
    ・入力レジスタ IX=呼び出すルーチンの番地
  • 015FH EXTROM 拡張 ROM のインタースロットコールを行います。
    ・変更レジスタ IY・裏レジスタ以外
    ・入力レジスタ IX=呼び出すルーチンの番地
  • 0168H EOL 行末まで削除します。
    ・変更レジスタ すべて
    ・入力レジスタ H=X 座標 L=Y 座標
  • 016BH BIGFIL HL 番地より A のデータで BC バイト書き込みます。
    ・変更レジスタ AF・BC
    ・入力レジスタ HL=VRAM 書き込み開始アドレス BC=サイズ A=書き込むデータ
    FILVRM は下 14 桁のアドレスに制限しますが、BIGFIL は制限しません。
  • 016EH NSETRD VDP オートインクリメントを用いた読込初期設定を行います。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 読み出し開始番地
    その後 VDP ポート 0 を読み出していきます。
    SETRD は下 14 桁のアドレスに制限しますが、NSETRD は制限しません。
  • 0171H NSTWRT VDP オートインクリメントを用いた書込初期設定を行います。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 書き込み開始番地
    その後 VDP ポート 0 へ書き込んでいきます。
    SETWRT は下 14 桁のアドレスに制限しますが、NSTWRT は制限しません。
  • 0174H NRDVRM VRAM の値を取り出します。
    ・変更レジスタ F
    ・入力レジスタ HL=VRAM 呼び出すアドレス
    ・出力レジスタ A=値
    RDVRM は下 14 桁のアドレスに制限しますが、NRDVRM は制限しません。
  • 0177H NWRVRM VRAM へ値を書き込みます。
    ・変更レジスタ AF
    ・入力レジスタ HL=VRAM 書き込みアドレス A=値
    WRTVRM は下 14 桁のアドレスに制限しますが、NWRVRM は制限しません。

MSX turbo R 以降

  • 0180H CHGCPU CPU モードを変更します。
    ・入力レジスタ A=bit0~1 モード bit7=LED
     モード 00=Z80 01=R800 ROM 10=R800 DRAM 11=予約
     LED 0=変化なし 1=モードを反映
  • 0183H GETCPU CPU モードを取り出します。
    ・変更レジスタ AF
    ・出力レジスタ A=モード(0=Z80 1=R800 ROM 2=R800 DRAM)
  • 0186H PCMPLY PCM データを再生します。
    ・変更レジスタ すべて
    ・入力レジスタ A=bit0~1 サンプリングレート bit7=データ収納場所
     サンプリングレート 00=15.75kHz 01=7.875kHZ 10=5.25kHZ 11=3.9375kHz
     データ収納場所 0=メモリ 1=VRAM
     EHL=開始アドレス(E は VRAM で有効)DBC=長さ(D は VRAM で有効)
    ・出力レジスタ A=異常終了時の原因
     (1=サンプリングレート誤り 2=STOP キー中断)
     EHL=中断時のアドレス(E は VRAM で有効)
    Z80 モードの場合は R800 ROM モードに変わり、
    終了時に Z80 モードへ戻ります。
    エラーの場合は CY フラグをセットします。
    メインメモリの場合は 8000H 以降にデータを置きます。
  • 0189H PCMREC PCM データを録音します。
    ・変更レジスタ すべて
    ・入力レジスタ A=bito~1 サンプリングレート bit2=圧縮
     bit3~6=トリガーレベル bit7=データ収納場所
     サンプリングレート 00=15.75kHz 01=7.875kHZ 10=5.25kHZ 11=3.9375kHz
     圧縮 0=非圧縮 1=圧縮 データ収納場所 0=メモリ 1=VRAM
     EHL =開始アドレス(E は VRAM で有効)DBC=長さ(D は VRAM で有効)
    ・出力レジスタ A=異常終了時の原因
     (1=サンプリングレート誤り 2=STOP キー中断)
     EHL=中断時のアドレス(E は VRAM で有効)
    Z80 モードの場合は R800 ROM モードに変わり、
    終了時に Z80 モードへ戻ります。
    エラーの場合は CY フラグをセットします。
    メインメモリの場合は 8000H 以降にデータを置きます。

SUB-ROM

通常は 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 アドレス