{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[1章 MSX RS-232C]] ,{BSIZE:0|RIGHT} [[3.1 ハードウェア|3.1 MSX-MUSIC ハードウェア]] → !!2.1 ハードウェア !2.1.1 基本構成  MSX MODEMの基本ハードウェア構成は下図のとおりです。シリアルインターフェイスとしてi8251相当、ROM 32Kバイト、RAM(バッテリバックアップ)8Kバイト、NCU制御のためのパラレルポートとしてi8255相当を基本前提としています。ただし、後述のBIOSにより、この基本ハードウェアとは異なった構成のハードウェアにも移植が可能です。 {{svg 図7.8.svg}} '''図7.8 MSX MODEMの基本構成'''  短縮ダイヤルやシステムの設定値を記憶するためのバッテリバックアップされたCMOS RAMはオプション設定とします。ソフトウェアではファイルとしてのデータアクセスをサポートするため容量は任意ですが、ディレクトリ領域を必要とすることなどから少なくとも2Kバイト程度が実用限界と思われます。単にシステムのコンフィギュレーションを記憶しておくメモリスイッチとしてなら必要最小限の容量でも動作可能です。なお、短縮ダイヤル用メモリは1件につき約100バイト程度の容量が必要です。 !!2.2 NUCの構成  NCUは図8.9のハードウェアを想定しています。この図は想定しているすべてのハードウェア機能を記載していますので、必ずしもこのような構成が実際的であるわけではありません。 {{svg 図7.9.svg}} '''図7.9 NCUの構成'''  SW1は回線をモデムダイアラに接続するか、外部電話機に接続するかを選択します。SW2は電話線上の音を装置付属のスピーカまたはMSXのカートリッジバスを通じてTVのスピーカでモニタするかどうかを選択します。RI信号はリングパルスをワンショットなどにより波形整形されたものとします。したがって、リング信号が存在するあいだ1が返されます。内蔵ハンドセット、内蔵ハンズフリーフォンは他の電話機能、たとえば音楽を回線に送り出したりするものと置き換えることができます。 !!2.3 メモリの構成  MSX MODEMのシステムソフトウェアが実行するためには、図8.10で示すメモリ構成が必要です。ここでいうBANKとはMSX本来のBANKではなく、同一スロット内でローカルに拡張されたBANKを意味します。 {{svg 図7.10.svg}} '''図7.10 メモリの構成''' !!2.4 I/Oの構成  I/Oレジスタはすべてメインメモリ空間上に配置しなければなりません。アドレスの40H番地からFFH番地はMSXシステム標準装置のための領域ですので、その装置が標準装置として認められない限り使うことができません。  00番地から3F番地は規定されていませんので使用することが可能ですが、規定されていないために、他のものと同じ番地を割り当ててしまいますと、システムが動作しない事態がおこってしまいます。  これを避けるために、必ずメモリ空間に配置して下さい。 !!2.5 拡張BASIC !2.5.1 概要  MSX MODEMには、各機能を簡単に使用できるように、MSX MODEM拡張BASICが用意されています。コマンド、ステートメント、関数はMSX BASIC、MSX Disk BASICと同じですが、書式や指定方法の違いにより、通信が行えるように機能が拡張されています。  使い方は、CALL COMINIのように拡張ステートメントの形式です。CALLは_(アンダーバー)で代用できます。  デバイス番号は、スロット番号の小さいスロットにさしこまれている通信用カートリッジの順に、0から割り当てられます。MSX RS-232Cカートリッジなど、MSX MODEM以外の通信用カートリッジといっしょに使用された場合にも、同様にスロット順に0から割り当てられます。  通信用カートリッジには、RS-232Cインターフェイス、MODEMカートリッジ、「MSX-SERIAL232」などがあります。 !2.5.2 この章の表記法 !2.5.3 拡張BASICコマンド一覧 '''1.拡張ステートメント(CALL文と共に使用します)''' ,コマンド名,機能,ページ ,COMBREAK*,電話回線にブレーク信号を送出します,153 ,COM GOSUB*,通信用ポートから割り込みがかかると指定したサブルーチンを実行します,153 ,COMHELP,COMINIのHELPメッセージを表示します,154 ,COMINI*,通信回線の初期化を行います,155 ,COMOFF*,通信用ポートからの割り込みを禁止します,158 ,COMON*,通信用ポートからの割り込みを許可します,159 ,COMPROTOCOL*,ファイル転送に用いるプロトコルを決定します,159 ,COMSTAT*,通信用ポートのステータスを求めます,161 ,COMSTOP*,通信用ポートからの割り込みを保留します,163 ,COMTERM*,ターミナルモードに切り換えます,164 ,DIAL,電話番号送出を行います,169 ,DIALC,1桁だけの電話番号を送出します,171 ,DTMF,DTMFデコーダよりデータを読み取ります,172 ,LINESEL*,回線の切り換えを行います,173 ,NETCARRIER,半2重通信時のキャリアを制御します,174 ,NETCONFIG*,ハードウェアのコンフィグレーションを返します,175 ,NET GOSUB,電話回線に着呼があったとき、またはDTMFデータが来たとき指定したサブルーチンを実行します,177 ,NETHOOK,回線の切断・接続を行います,178 ,NETINI*,NCUの初期設定を行います,179 ,NETMODEM,モデムの送出電力及びイコライザのON/OFFを指定します,180 ,NETOFF,電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを禁止します,181 ,NETON,電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを許可します,182 ,NETSPK,スピーカをON/OFFします,183 ,NETSTAT*,NCUのハードウェアの状態を返します,183 ,NETSTOP,電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを保留します,185 '''2.コマンド''' ,コマンド名,機能,ページ ,LOAD*,BASICプログラムを通信ポートからメモリにロードします,186 ,MERGE*,プログラムを通信ポートからロードし、メモリ上のプログラムとマージ(混合)します,187 ,RUN*,BASICプログラムを通信ポートからメモリにロードし実行します,187 ,SAVE*,BASICプログラムを通信ポートに送ります,188 '''3.ステートメント''' ,コマンド名,機能,ページ ,CLOSE*,OPEN文で開いたファイルを閉じます,189 ,INPUT#*,OPEN文で開かれたファイルからデータを順に読み取り、変数に代入します,190 ,LINE INPUT#*,254文字までの文字列をファイルから読み取り、文字が多変数に代入します,191 ,OPEN*,通信用ファイルを開きます,191 ,PRINT#*,OPEN文で開かれたファイルにデータを書き込みます,192 ,PRINT#USING*,OPEN文で開かれたファイルに指定した書式でデータを書き込みます,193 '''4.関数''' ,コマンド名,機能,ページ ,EOF*,ファイルの最後のデータが読み取られたかどうかを返します,196 ,INPUT$*,ファイルから指定した数の文字を入力します,196 ,LOC*,ファイルの中の文字数を返します,197 ,LOF*,ファイルの中の空きスペースの大きさを返します,198  *のステートメントは必須です。  その他は、ハードウェアがサポートしていなければ、「Illegal function call」になります。  デバイス番号が省略されたときは、0となります。  また、COMSTATとCOMBREAKは、その実行前に「OPEN"COM:"」命令が実行されていなければ「File not open」になります。  ハードウェアがその機能をサポートしているか否かは、CALL NETCONFIG命令で求められます。 !2.5.4 拡張BASICの解説 1,拡張ステートメント !CALL COMBREAK ,機能{SIZE:100|CENTER}  電話回線にブレーク信号を送出します。 ,書式{SIZE:100|CENTER}  CALL COMBREAK[("デバイス番号:"],式)] ,解説{SIZE:100|CENTER}  式で指定された文字数文のブレーク信号を電話回線に出力します。ブレーク信号送出中、すべての送出データは強制的に0になります。  CALL COMBREAK文を実行する前にOPEN文でCOM用のファイルがオープンされていなければ「File not open」になります。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。  '''式'''  数値定数、変数、配列変数、式で指定します。指定できる範囲は3から32767までの値です。省略した場合は1、0になります。 ,文例{SIZE:100|CENTER}  CALL COMBREAK("0:",20)  20文字分のブレイク信号を電話回線に出力します。 !CALL COM GOSUB ,機能{SIZE:100|CENTER}  通信用ポートから割り込みがかかると指定したサブルーチンへ実行を移します。 ,書式{SIZE:100|CENTER}  CALL COM(["デバイス番号:"],GOSUB 行番号) ,解説{SIZE:100|CENTER}  CALL COMON分を使って割り込みを許可してから、データが受信されると、割り込みがかかり、行番号で指定されたサブルーチンに実行が移ります。サブルーチンはRETURN文で終了します。サブルーチンの実行終了後は割り込みがおこった時点で実行していたステートメントの次のステートメントに戻ります。  サブルーチン実行中は自動的にCOMSTOP状態になり、サブルーチン内でCOMOFFしないかぎり、RETURNによってCOMON状態になります。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字が多変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。  ''行番号'''  0から65529までの整数型定数で指定します。 ,文例{SIZE:100|CENTER} CALL COM("0:", GOSUB 1000) デバイス番号0から割り込みがかかると、行番号1000で始まるサブルーチンを実行します。 CALL COM(, GOSUB 2000) デバイス番号0から割り込みがかかると、行番号2000で始まるサブルーチンを実行します。 !CALL COMHELP ,機能{SIZE:100|CENTER}  COMINIのHELPメッセージを表示します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMINI ,機能{SIZE:100|CENTER}  通信回線の初期化を行います。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMOFF ,機能{SIZE:100|CENTER}  通信用ポートからの割り込みを禁止します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMON ,機能{SIZE:100|CENTER}  通信用ポートからの割り込みを許可します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMPROTOCOL ,機能{SIZE:100|CENTER}  ファイル転送に用いるプロトコルを決定します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMSTAT ,機能{SIZE:100|CENTER}  通信用ポートのステータスを求めます。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMSTOP ,機能{SIZE:100|CENTER}  通信用ポートからの割り込みを保留します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL COMTERM ,機能{SIZE:100|CENTER}  ターミナルモードに切り換えます。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL DIAL ,機能{SIZE:100|CENTER}  電話番号送出を行います。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL DIALC ,機能{SIZE:100|CENTER}  1桁だけの電話番号を送出します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL DTMF ,機能{SIZE:100|CENTER}  DTMFデコーダよりデータを読み取ります。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL LINESEL ,機能{SIZE:100|CENTER}  回線の切り換えを行います。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETCARRIER ,機能{SIZE:100|CENTER}  半2重通信時のキャリアを制御します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETCONFIG ,機能{SIZE:100|CENTER}  ハードウェアのコンフィグレーションを返します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NET GOSUB ,機能{SIZE:100|CENTER}  電話回線に着呼があったとき、またはDTMFデータが来たとき指定したサブルーチンを実行します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETHOOK ,機能{SIZE:100|CENTER}  回線の切断・接続を行います。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETINI ,機能{SIZE:100|CENTER}  NCUの初期設定を行います。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETMODEM ,機能{SIZE:100|CENTER}  モデムの送出電力及びイコライザのON/OFFを指定します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETOFF ,機能{SIZE:100|CENTER}  電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを禁止します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETON ,機能{SIZE:100|CENTER}  電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを許可します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETSPK ,機能{SIZE:100|CENTER}  スピーカをON/OFFします。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETSTAT ,機能{SIZE:100|CENTER}  NCUのハードウェアの状態を返します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !CALL NETSTOP ,機能{SIZE:100|CENTER}  電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを保留します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !LOAD ,機能{SIZE:100|CENTER}  BASICプログラムを通信ポートからメモリにロードします。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !MERGE ,機能{SIZE:100|CENTER}  プログラムを通信ポートからロードし、メモリ上のプログラムとマージ(混合)します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !RUN ,機能{SIZE:100|CENTER}  BASICプログラムを通信ポートからメモリにロードし実行します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !SAVE ,機能{SIZE:100|CENTER}  BASICプログラムを通信ポートに送ります ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !!3.ステートメント !CLOSE ,機能{SIZE:100|CENTER}  OPEN文で開かれたファイルを閉じます。OPEN文で開かれたファイルからデータを順に読み取り、変数に代入します。 ,書式{SIZE:100|CENTER}  CLOSE[[#]ファイル番号][,[#]ファイル番号]... ,解説{SIZE:100|CENTER}  OPEN文で開かれたファイルの番号を指定して下さい。ファイルを閉じると、そのファイル番号が新たにファイルを開くときに使うことができます。  指定したファイルが送信用に開かれたファイルであった場合は、相手機器にEOFコード(1AH)が送信されます。  '''ファイル番号'''  対象となるファイル番号を1〜(MAXFILES文で指定された数)の整数値で指定します。省略時はすべてのファイルを閉じます。指定には、整数型定数、変数、配列変数、式が使えます。  '''キャリア信号'''  CLOSE文を実行すると回線に出ているキャリア信号はストップします。 ,文例{SIZE:100|CENTER} CLOSE # 1,2,3 ファイル番号1,2,3のファイルを閉じます。 CLOSE すべてのファイルを閉じます。 !INPUT # ,機能{SIZE:100|CENTER}  OPEN文で開かれたファイルからデータを順に読み取り、変数に代入します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !LINE INPUT # ,機能{SIZE:100|CENTER}  254文字までの文字列をファイルから読み取り、文字が多変数に代入します。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !OPEN ,機能{SIZE:100|CENTER}  通信用ファイルを開きます。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !PRINT # ,機能{SIZE:100|CENTER}  OPEN文で開かれたファイルにデータを書き込みます。 ,書式{SIZE:100|CENTER} ,解説{SIZE:100|CENTER} ,文例{SIZE:100|CENTER} !PRINT # USING ,機能{SIZE:100|CENTER}  OPEN文で開かれたファイルに指定した書式でデータを書き込みます。 ,書式{SIZE:100|CENTER}  PRINT # ファイル番号,USING 書式記号:式[,式]... ,解説{SIZE:100|CENTER}  式の値が、書式記号で指定した形式で書き込まれます。  '''ファイル番号'''  OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''式'''  文字型、整数型定数、変数、配列変数、式が使えます。  '''書式記号''' ,記号,表現形式と実行例 !!4.関数 !EOF ,機能{SIZE:100|CENTER}  ファイルの最後のデータが読み取られたら-1、それ以外なら0を返します。 ,書式{SIZE:100|CENTER}  EOF(ファイル番号) ,解説{SIZE:100|CENTER}  OPEN文で受信バッファとして開かれたファイルの番号を指定します。  この分により、受信バッファ内にある最後のデータが読み取られると-1を返します。それ以外なら0を返します。  '''ファイル番号'''  対象となるファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''返される値'''  整数値(-1または0)。 ,文例{SIZE:100|CENTER}  ファイル1の最後のデータが読み取られたら、そのファイルを閉じます。 !INPUT $ ,機能{SIZE:100|CENTER}  ファイルから指定した数の文字を入力します ,書式{SIZE:100|CENTER}  INPUT $(文字数,[#]ファイル番号) ,解説{SIZE:100|CENTER}  指定された数の文字(文字型データ)を受信バッファ用のファイルから入力します。ファイル番号は、OPEN文で受信バッファとして開かれたファイルを指定します。  '''文字数'''  入力する文字数を1〜255の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''ファイル番号'''  対象となるファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''返される値'''  文字型です。 ,文例{SIZE:100|CENTER}  ファイル番号を1として受信バッファ用ファイルを開き、そのファイルから50文字入力したところで、それを文字変数X$に代入して、ファイルを閉じます。 !LOC ,機能{SIZE:100|CENTER}  ファイル中の文字数を返します。 ,書式{SIZE:100|CENTER}  LOC(ファイル番号) ,解説{SIZE:100|CENTER}  受信バッファ用ファイルの文字数を返します。  '''ファイル番号'''  OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''返される値'''  0以上128以下の整数が返されます。 !LOF ,機能{SIZE:100|CENTER}  ファイルの中の空きスペースの大きさを返します ,書式{SIZE:100|CENTER}  LOF(ファイル番号) ,解説{SIZE:100|CENTER}  受信バッファ中の空きスペースを文字数で返します。  '''ファイル番号'''  OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILES文で指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。  '''返される値'''  0以上128以下の整数が返されます。 !!2.6 拡張BIOS !2.6.1 概要  MSX MODEM拡張BIOSは、MSXシステムのモデム装置のソフトウェアインターフェイスを標準化して、アプリケーションソフトウェアがハードウェアに独立して作成できるようにするのが目的です。  モデム、ダイアラなどのハードウェアを標準化するのは、次々と新しいものが発表されている現状ではきわめて困難と考えられます。しかし、MSXシステムの特徴であるソフトウェアの互換性を実現するためにBIOSでのインターフェイスを標準化しようとするものです。  このBIOSインターフェイスを守って作成されたソフトウェアは、たとえハードウェア仕様が異なるシステムでも互換性を持って使用することが可能となります。  MSX MODEM拡張BIOSは拡張BIOSコールに寄りアプリケーションソフトウェアから自由に利用できます。BIOSの各ルーチンは、MSX MODEM拡張BIOSのジャンプテーブルを経由してインタースロットコールなどにより呼び出されます。  高速処理を必要とする場合は、あらかじめスロットをイネーブルしておき、直接コールすることもできます。この章では、MSX-RS232C拡張BIOSを使用するのに必要な、拡張BIOSコールの方法と各BIOSの機能について解説します。  アプリケーションは先ず拡張BIOSコールによりジャンプテーブルのエントリを調べる必要があります。MSX MODEM拡張BIOSのデバイス番号は「8」です。これはRS-232Cデバイスと同じデバイス番号となっており、RS-232C用ソフトウェアとの互換性を保っています。  以下MSX MODEM拡張BIOSに必要な拡張BIOSコールについて解説します。 !2.6.2 拡張BIOSの呼び出し '''1.ジャンプテーブルアドレスの取得'''  アプリケーションは、まず以下の拡張BIOSコールにより、拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスを調べなければなりません。  拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスは、以下のようにして求めます。 +RETURN情報エリア用のワークエリア(64バイト)を取る +以下の設定を行い、0FFCAH番地をコールする。 ,コール手順 D E B HL  RAMのスロットアドレスは以下のワークエリアに保存されています。このワークエリアはディスクが接続されているシステムで有効です。 '''表7.18 RAMのスロットアドレス''' ,ページ,ワークエリアのアドレス ,0,F341H ,1,F342H ,2,F343H ,3,F344H ,戻り値 ,変更レジスタ  RETURN情報はアプリケーションが指定した領域に次のように格納されます。 {{svg 図7.11.svg}} '''図7.11 RETURN情報の形式'''  MSX MODEMが無いときは、BレジスタとHLレジスタの内容が変わらずに返ってきます。スロットアドレスの表現はMSX共通で以下の通りです。 {{svg 図7.12.svg}} '''図7.12 スロットアドレスの形式'''  拡張BIOSを使用する場合は、この拡張BIOSコールで得られたジャンプテーブルをインタースロットコールなどにより呼び出し、目的のBIOSを使用します。 '''2.BIOSジャンプテーブル'''  拡張BIOSは以下に示すジャンプテーブルを持っています。アプリケーションソフトウェアは、インタースロットコールなどで各エントリを呼び出すことにより、BIOSの各機能を利用できます。 ■DVINFB  デバイスインフォメーションバイト(DVINFB)はMODEMカートリッジに、各オプションがあるかどうかを示します。 {{svg 図7.13.svg}} '''図7.13 DVINFBの形式'''  各ビットは1でその機能があることを示し、0でないことを示します。 ■DVTYPE  デバイスタイプバイト()はこの装置がマルチタイプかシングルタイプかを示します。マルチタイプとは複数のMSX MODEMカートリッジを同時にスロットに挿入でき、ここに制御できる装置のことです。  DVTYPEが0以外であれば、マルチタイプのモデムカートリッジです。 {{svg 図7.14.svg}} '''図7.14 DVTYPEの形式''' '''3.拡張BIOSの各機能'''  拡張BIOSの各機能はインタースロットコールにより呼び出されます。インタースロットコールの呼び出しアドレスは001CHです。 ,コール手順 IY 上位8ビットにスロットアドレス IX コールアドレス その他のレジスタは機能により異なります。各項を参照して下さい。 ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[1章 MSX RS-232C]] ,{BSIZE:0|RIGHT} [[3.1 ハードウェア|3.1 MSX-MUSIC ハードウェア]] →