{{include unfinished_page}} ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7部 オプションの周辺機器]] ,{BSIZE:0|RIGHT}[[2章 MSX MODEM]] → !!1.1 ハードウェア  MSX RS-232Cには、シングルチャンネルタイプとマルチチャンネルタイプの2つの仕様があります。それぞれについて、以下で解説します。 !1.1.1 シングルチャンネルバージョン '''1. 使用するLSl''' ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{SIZE:50|BSIZE:0},{SIZE:300|BSIZE:0} ,,i8251,通信インターフェイス ,,i8253,プログラマブルインターバルタイマ ,,ROM ,システムソフトウェア用(8Kバイト) '''2. ポートアドレス''' '''  表7.1 シングルチャンネルタイプのポートアドレス''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:400|BSIZE:1 0} ,,I/Oアドレス,Read/Write,意味 ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,80H ,R/W ,8251データポート ,,81H ,R/W ,8251コマンド/ステータスポート ,,82H ,R ,CTS、Timer/Counter2、RI、CD用ステータスセンス ,,82H ,W ,割り込みマスクレジスタ ,,83H , ,システム予約 ,,84H ,R/W ,8253カウンタ0 ,,85H ,R/W ,8253カウンタ1 ,,86H ,R/W ,8253カウンタ2 ,,87H ,W ,8253モードレジスタ '''3. 82H番地ビット割り当て''' ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:300|BSIZE:0} ,,82H Read,システムステータスの獲得 '''  表7.2 シングルチャンネルタイプのシステムステータス''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:400|BSIZE:1 0} ,,データビット,意味, ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,D7 ,{COLS:2}CTS (Clear To Send) , ,, ,0{CENTER},CTS Asserted ,, ,1{CENTER},CTS Negated ,,D6 ,{COLS:2}タイマ/カウンタ出力2(8253より), ,,D5 ,システム予約, ,,D4 ,システム予約, ,,D3 ,システム予約, ,,D2 ,システム予約, ,,D1 ,{COLS:2}RI (Ring Indicator)*, ,, ,0{CENTER},RI Asserted ,, ,1{CENTER},RI Negated ,,D0 ,{COLS:2}CD (Carrier Detect)*, ,, ,0{CENTER},CD Asserted ,, ,1{CENTER},CD Negated ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:1},{BSIZE:0} ,注 意{CENTER},*印の信号はオプション。どちらか一方をインプリメントする場合、必ずCD信号にする。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{SIZE:300|BSIZE:0} ,82H Write,割り込みマスクレジスタ '''  表7.3 シングルチャンネルタイプの割り込みマスクレジスタ''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:400|BSIZE:1 0} ,,データビット,意味, ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,D7 ,システム予約, ,,D6 ,システム予約, ,,D5 ,システム予約, ,,D4 ,システム予約, ,,D3 ,{COLS:2}Timer Interrupt from i8253 channel2*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D2 ,{COLS:2}Sync character detect/Break detect*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D1 ,{COLS:2}Transmit Data Ready (TxReady)*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D0 ,{COLS:2}Receive Data Ready (RxReady), ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:1},{BSIZE:0} ,注 意{CENTER},*印の信号はオプション。最小構成では、割り込み信号はRxReadyのみ。 '''4. 8253を使用した8251へのボーレートクロック発生''' 1.水晶発振器 発信周波数 1.8432MHz '''  表7.4 シングルチャンネルタイプのボーレートとスケールファクタ''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0} ,,ボーレート,スケールファクタと誤差{COLS:3},, ,{c},{SIZE:10|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:100|BSIZE:0},{SIZE:100|BSIZE:0},{SIZE:320|BSIZE:0} ,,50 ,2304, , ,,75 ,1536, , ,,110 ,1047,110.0287,+0.03% ,,150 ,768 , , ,,300 ,384 , , ,,600 ,192 , , ,,1200 ,96 , , ,,1800 ,64 , , ,,2000 ,58 ,1986.2 ,-0.7% ,,2400 ,48 , , ,,3600 ,32 , , ,,4800 ,24 , , ,,7200 ,16 , , ,,9600 ,12 , , ,,19200,6 , , 2.使用するカウンタチャンネル ,{t},{BSIZE:0} ,{c},{SIZE:50|BSIZE:0},{SIZE:50|BSIZE:0},{BSIZE:0} ,,CH0,Rx Baud rate clock ,,CH1,Tx Baud rate clock ,,CH2,Used by Application(Interrupt generated optionally) '''5. DSUB25コネクタのピン配列''' '''  表7.5 DSUB25コネクタのピン配列''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0 1 1},{BSIZE:1 0} ,,ピン番号,信号名,ピン番号,信号名 ,{c},{SIZE:10|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:200|BSIZE:0},{SIZE:80|BSIZE:0 0 0 1},{SIZE:200|BSIZE:0} ,,1 ,Frame Ground ,14, ,,2 ,Transmit Data ,15, ,,3 ,Receive Data ,16, ,,4 ,Request To Send ,17, ,,5 ,Clear To Send ,18, ,,6 ,Data Set Ready ,19, ,,7 ,Signal Ground ,20,Data Terminal Ready ,,8 ,Carrier Detect ,21, ,,9 , ,22,RING Indicator ,,10, ,23, ,,11, ,24, ,,12, ,25, ,,13, , , !1.1.2 マルチチャンネルバージョン '''1. 使用するLSl''' ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{SIZE:50|BSIZE:0},{SIZE:300|BSIZE:0} ,,i8251,通信インターフェイス ,,i8253,プログラマブルインターバルタイマ ,,ROM ,システムソフトウェア用(8Kバイト) ,,RAM ,受信バッファ、ワークエリア用(2Kバイト) '''2. ROMアドレス'''  RS-232Cのシステムソフトウェアは4000H〜5FFFHに配置します。ROMは以下のモジュールを含みます。 + RS-232Cドライバ + RS-232C拡張BASIC + RS-232C拡張BIOS  マルチチャンネルバージョンでサポートしているチャンネル数は1つのカートリッジにつき、最大4チャンネル(1台のシステムにつき、最大4チャンネル)です。 {{svg 図7.1.svg}} '''図7.1 マルチチャンネルRS-232Cカートリッジの実装例''' '''3.RAMアドレス'''  RAMは6000H〜67FFHに配置します。また、同じRAMがA000H〜A7FFHにも見えるようにイメージを出します。したがって、6000Hに1を書き込むと、A000Hも1になります。システムソフトウェアから両方のアドレスのRAMにアクセス出来るように回路を設計しなければなりません。これは、RS-232Cカートリッジの実行速度をなるべく高速にするためです。  RAMは以下の目的で使われます。 + 1チャンネルにつき、128バイトのキャラクタとそれぞれのキャラクタについてのエラー情報128バイト、合計256バイトの受信バッファ + フラグと変数の保存 + 通信パラメータの保存 '''4. ポートアドレス'''  マルチチャンネルRS-232Cをサポートするためには、アドレスの衝突を防ぐために全てのポートはメモリ上に置かなければなりません。しかし、シングルチャンネルRS-232CのI/Oポートを直接アクセスしているアプリケーションソフトウェアを救済するために、最初の1チャンネルはI/Oポートに接続して下さい。また、この仕様については、システムソフトウェアでコントロールが可能でなければなりません。 '''  表7.6 マルチチャンネルタイプのメモリアドレス''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:300|BSIZE:1 0} ,,メモリアドレス,I/Oアドレス,Read/Write,意味 ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,BFF8H,80H ,R/W ,8251データポート ,,BFF9H,81H ,R/W ,8251コマンド/ステータスポート ,,BFFAH,82H ,R ,CTS、Timer/Counter2、RI、CD用ステータスセンス ,,BFFAH,82H ,W ,割り込みマスクレジスタ ,,BFFBH,83H , ,システム予約 ,,BFFCH,84H ,R/W ,8253カウンタ0 ,,BFFDH,85H ,R/W ,8253カウンタ1 ,,BFFEH,86H ,R/W ,8253カウンタ2 ,,BFFFH,87H ,W ,8253モードレジスタ これはチャンネル0のメモリアドレスです。各チャンネルの最下位アドレスは以下の通りです。 ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{SIZE:100|BSIZE:0},{SIZE:100|BSIZE:0} ,,■チャンネル1,BFF0H ,,■チャンネル2,BFE8H ,,■チャンネル3,BFE0H チャンネルは連続し、0から始まらなければなりません。 '''  表7.7 チャンネル配置の例''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0 1 1},{BSIZE:1 0} ,,良い例,,悪い例 ,{c},{SIZE:10|BSIZE:0},{SIZE:200|BSIZE:0},{SIZE:10|BSIZE:0 0 0 1},{SIZE:200|BSIZE:0} ,,チャンネル1のみ ,,チャンネル0と2 ,,チャンネル0と1 ,,チャンネル0と3 ,,チャンネル0、1、2 ,,チャンネル1のみ ,,チャンネル0、1、2、3 ,,チャンネル1と2 ,, ,,チャンネル1、2、3 ,, ,,チャンネル3のみ ,, ,,など  チャンネル0は特別なチャンネルで、I/Oポートのイネーブルビット(BFFAHのビット4)を持っています。そのビットが1の時、チャンネル0はI/Oポートを通してアクセスできます。これはシングルチャンネルのRS-232Cインターフェイスとの互換性を保つためです。  システムソフトウェアはまず、I/OにRS-232Cインターフェイスが接続されているかどうかを調べます。接続されていなければ、BFFAHのビット4に1をセットし、チャンネル0をI/Oに接続します。これにより、I/Oポートを直接アクセスしているアプリケーションソフトウェアでもマルチチャンネルのRS-232Cで動作可能になります。  I/Oポートの82Hは、ビット4以外はBFFAHと同じです。アプリケーションが誤ってビットを反転し、RS-232Cがアクセス不可能にならないよう、このビットはI/Oポートからはアクセスできません。  メモリのBFFBH(I/Oの83H)番地は、システム用に予約されています。 '''5. アドレスマップ''' {{svg 図7.2.svg}} '''図7.2 アドレスマップ''' '''6. BFFAH(メモリ)、82H(I/O)番地ビット割り当て''' ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:300|BSIZE:0} ,,82H Read,システムステータスの獲得 '''  表7.8 マルチチャンネルタイプのシステムステータス''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:400|BSIZE:1 0} ,,データビット,意味, ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,D7 ,{COLS:2}CTS (Clear To Send) , ,, ,0{CENTER},CTS Asserted ,, ,1{CENTER},CTS Negated ,,D6 ,{COLS:2}タイマ/カウンタ出力2(8253より), ,,D5 ,システム予約, ,,D4 ,システム予約, ,,D3 ,システム予約, ,,D2 ,システム予約, ,,D1 ,{COLS:2}RI (Ring Indicator)*, ,, ,0{CENTER},RI Asserted ,, ,1{CENTER},RI Negated ,,D0 ,{COLS:2}CD (Carrier Detect)*, ,, ,0{CENTER},CD Asserted ,, ,1{CENTER},CD Negated ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:1},{BSIZE:0} ,注 意{CENTER},*印の信号はオプション。どちらか一方をインプリメントする場合、必ずCD信号にする。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{SIZE:300|BSIZE:0} ,82H Write,割り込みマスクレジスタ '''  表7.9 マルチチャンネルタイプの割り込みマスクレジスタ''' ,{t},{BSIZE:2 0} ,{c},{SIZE:10|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:100|BSIZE:1 0},{SIZE:400|BSIZE:1 0} ,,データビット,意味, ,{c},{BSIZE:0},{BSIZE:0},{BSIZE:0},{BSIZE:0} ,,D7 ,システム予約(必ず1), ,,D6 ,システム予約(必ず1), ,,D5 ,システム予約(必ず1), ,,D4 ,{COLS:2}チャンネル0のI/Oポートのアクセス(BFFAHのみ), ,, ,{CENTER}1,I/Oポートの接続を許可 ,, ,{CENTER}0,I/Oポートの接続を禁止(初期値) ,,D3 ,{COLS:2}Timer Interrupt from i8253 channel2*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D2 ,{COLS:2}Sync character detect/Break detect*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D1 ,{COLS:2}Transmit Data Ready (TxReady)*, ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,,D0 ,{COLS:2}Receive Data Ready (RxReady), ,, ,{CENTER}1,割り込み不許可(初期値) ,, ,{CENTER}0,割り込み許可 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:1},{BSIZE:0} ,注 意{CENTER},*印の信号はオプション。最小構成では、割り込み信号はRxReadyのみ。 '''7. 8253を使用した8251へのボーレートクロック発生''' 1.水晶発振器 発信周波数 1.8432MHz '''  表7.10 マルチチャンネルタイプのボーレートとスケールファクタ''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0} ,,ボーレート,スケールファクタと誤差{COLS:3},, ,{c},{SIZE:10|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:100|BSIZE:0},{SIZE:100|BSIZE:0},{SIZE:320|BSIZE:0} ,,50 ,2304, , ,,75 ,1536, , ,,110 ,1047,110.0287,+0.03% ,,150 ,768 , , ,,300 ,384 , , ,,600 ,192 , , ,,1200 ,96 , , ,,1800 ,64 , , ,,2000 ,58 ,1986.2 ,-0.7% ,,2400 ,48 , , ,,3600 ,32 , , ,,4800 ,24 , , ,,7200 ,16 , , ,,9600 ,12 , , ,,19200,6 , , 2.使用するカウンタチャンネル ,{t},{BSIZE:0} ,{c},{SIZE:50|BSIZE:0},{SIZE:50|BSIZE:0},{BSIZE:0} ,,CH0,Rx Baud rate clock ,,CH1,Tx Baud rate clock ,,CH2,Used by Application(Interrupt generated optionally) '''8. DSUB25コネクタのピン配列''' '''  表7.11 DSUB25コネクタのピン配列''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0 1 1},{BSIZE:1 0} ,,ピン番号,信号名,ピン番号,信号名 ,{c},{SIZE:10|BSIZE:0},{SIZE:80|BSIZE:0},{SIZE:200|BSIZE:0},{SIZE:80|BSIZE:0 0 0 1},{SIZE:200|BSIZE:0} ,,1 ,Frame Ground ,14, ,,2 ,Transmit Data ,15, ,,3 ,Receive Data ,16, ,,4 ,Request To Send ,17, ,,5 ,Clear To Send ,18, ,,6 ,Data Set Ready ,19, ,,7 ,Signal Ground ,20,Data Terminal Ready ,,8 ,Carrier Detect ,21, ,,9 , ,22,RING Indicator ,,10, ,23, ,,11, ,24, ,,12, ,25, ,,13, , , !!1.2 拡張BASIC !1.2.1 概要  MS RS-232Cには、各機能を簡単に使用できるように、MSX RS-232C拡張BASICが用意されています。コマンド、ステートメント、関数はMSX-BASIC、MSX Disk BASICとおなじですが、書式や指定方法の違いにより、RS-232C通信が行えるように機能が拡張されています。  使い方は、CALL COMINIのように拡張ステートメントの形式です。CALLは_(アンダーバー)で代用できます。  デバイス番号は、スロット番号の小さいスロットにさしこまれている通信用カートリッジの順に、0から割り当てられます。モデムカートリッジなど、MSX RS-232C以外の通信用カートリッジといっしょに使用された場合にも、同様にスロット順に0から割り当てられます。  通信用カートリッジには、RS-232Cインターフェイス、MODEMカートリッジ、「MSX-SERIAL232」などがあります。 !1.2.2 この章の表記法 {{svg 図P100.svg}} !1.2.3 拡張BASICコマンド一覧 '''1.拡張ステートメント(CALL文と共に使用します)''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE: 1 0} ,,コマンド名,機能,ページ ,{c},{SIZE:10|BSIZE:0},{SIZE:150|BSIZE:0},{SIZE:500|BSIZE:0},{SIZE:80|BSIZE:0} ,,COMBREAK ,ブレーク信号を送信します ,103 ,,COMDTR ,DTR(ER)信号をON/OFFします ,104 ,,COM GOSUB,RS-232Cからの割り込み処理サブルーチンの開始行を指定します,104 ,,COMHELP ,COMINIのパラメータ指定方法をヘルプメッセージとして出力します,105 ,,COMINI ,通信機能の初期設定をします,106 ,,COMOFF ,RS-232Cからの割り込みを禁止します,109 ,,COMON ,RS-232Cからの割り込みを許可します,110 ,,COMSTAT ,RS-232Cのステータスを求めます,111 ,,COMSOP ,RS-232Cからの割り込みを保留します,113 ,,COMTERM ,ターミナルモードにします,113 '''2.コマンド''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE: 1 0} ,,コマンド名,機能,ページ ,{c},{SIZE:10|BSIZE:0},{SIZE:150|BSIZE:0},{SIZE:500|BSIZE:0},{SIZE:80|BSIZE:0} ,,LOAD ,プログラムを受信します,117 ,,MERGE,プログラムを受信してメモリ上のプログラムとマージします,117 ,,RUN ,プログラムを受信した後に実行を開始します,118 ,,SAVE ,プログラムを送信します,119 '''3.ステートメント''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0} ,,コマンド名,機能,ページ ,{c},{SIZE:10|BSIZE:0},{SIZE:150|BSIZE:0},{SIZE:500|BSIZE:0},{SIZE:80|BSIZE:0} ,,CLOSE ,RS-232C用ファイルをクローズします,120 ,,INPUT # ,数値や文字を入力して変数に代入します,120 ,,LINE INPUT #,254文字までの文字を受信して文字型変数に代入します,121 ,,OPEN ,RS-232C用ファイルをオープンします,122 ,,PRINT # ,数値や文字を送信します,123 ,,PRINT # USING,書式付きPRINT #です,125 '''4.関数''' ,{t},{BSIZE:2 0} ,{c},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0},{BSIZE:1 0} ,,コマンド名,機能,ページ ,{c},{SIZE:10|BSIZE:0},{SIZE:150|BSIZE:0},{SIZE:500|BSIZE:0},{SIZE:80|BSIZE:0} ,,EOF ,EOFコード(&H1A)が受信されたかどうかを求めます,127 ,,INPUT$ ,指定した数の文字を入力します,127 ,,LOC ,受信バッファ内の文字数を獲得します,128 ,,LOF ,通信用バッファの空き容量を獲得します,129 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:1},{BSIZE:0} ,注 意{CENTER},{ROWS:2|BSIZE:0}COMON、COMOFF、COMSTOPの説明にある、RS-232Cからの割り込みとは、BASICのプログラム実行に対する割り込みです。RS-232Cポート(ハードウェア)から発生する実際の割り込みではありません。 !1.2.4 拡張BASICの解説 !CALL COMBREAK ,機能{SIZE:100|CENTER}  ブレーク信号を送信します。 ,書式{SIZE:100|CENTER}  CALL COMBREAK[("デバイス番号:"],式)] ,解説{SIZE:100|CENTER}  SD(送信データ)を強制的にブレーク状態にします。ブレーク状態とは回線が切断状態になることです。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。  '''式'''  数値定数、変数、配列変数、式で指定します。指定できる範囲は3から32767までの値です。式の値は次のように計算します。  省略した場合は、10になります。 ,文例{SIZE:100|CENTER}  CALL COMBREAK(,480)  もしくは  CALL COMBREAK("0:",480)  CALL COMINIにおいて以下のように設定した場合にデバイス番号0に対して、ブレーク信号を500m秒送信します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:140},{BSIZE:0} ,キャラクタ長,8ビット ,ストップビット長,1ビット ,送信速度,9600bps !CALL COMDTR ,機能{SIZE:100|CENTER}  DTR(ER)信号をON/OFFします。 ,書式{SIZE:100|CENTER}  CALL COMDTR[("デバイス番号:"],式)] ,解説{SIZE:100|CENTER}  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。  '''式'''  0と1の値で指定します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,0,DTR(ER)をOFF ,1,DTR(ER)をON{COLS:2} ,,0以外の数値を指定した場合にも、DTR(ER)はONになる ,文例{SIZE:100|CENTER}  CALL COMDTR(,0)  もしくは  CALL COMDTR("0:",0)  デバイス番号0のDTR(ER)信号をOFFにします。 !CALL COM GOSUB ,機能{SIZE:100|CENTER}  RS-232Cからの割り込み処理サブルーチンの開始行を指定します。 ,書式{SIZE:100|CENTER}  CALL COM(["デバイス番号:"],GOSUB 行番号) ,解説{SIZE:100|CENTER}  RS-232Cから割り込みがかかると、指定されたサブルーチンが実行されます。  CALL COMON文を使って割り込みを許可してからデータが受信されると、実行中の文の実行が終わってからサブルーチンが実行されます。サブルーチンはRETURN文で終了します。サブルーチンの実行終了後は、割り込みがかかった時点で、実行していたステートメントの次のステートメントに実行が戻ります。  割り込み処理サブルーチンの実行中は、自動的にCOMSTOPとなり、COMOFFしないかぎり、RETURN文によってCOMON状態になります。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。  ''行番号'''  0から65529までの整数型定数で指定します。 ,文例{SIZE:100|CENTER}  CALL COM(, GOSUB 10000)  もしくは  CALL COM("0:", GOSUB 10000)  デバイス番号0から割り込みがかかると行番号10000にGOSUBします。 !CALL COMHELP ,機能{SIZE:100|CENTER}  COMINIのパラメータの指定方法がヘルプメッセージとして出力します。 ,書式{SIZE:100|CENTER}  CALL COMHELP[("デバイス番号:")] ,解説{SIZE:100|CENTER}  次のようにメッセージを送信します。 !CALL COMINI ,機能{SIZE:100|CENTER}  通信機能の初期設定をします。 ,書式{SIZE:100|CENTER}  CALL COMINI[("[デバイス番号:][デバイス番号:][キャラクタ長[パリティ[ストップビット長[XON/XOFF制御[ダミー[受信LF[送信LF[SI/SO制御]]]]]]]]")[,[受信速度][,[送信速度],[タイムアウト]]]])] ,解説{SIZE:100|CENTER}  通信機能の初期設定をします。指定する文字は大文字でも小文字でもかまいません。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9までの整数値を指定します。省略するときはコロン(:)まで省略します。  '''キャラクタ長'''  接続する機種に合わせて送信する1キャラクタのビット数を指定します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,5,5ビット ,6,6ビット ,7,7ビット ,8(*),8ビット  '''パリティ'''  パリティチェックの方法を指定します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,E,偶数パリティ ,O,奇数パリティ ,I,受信時にパリティを無視する(キャラクタ長が5、6、7ビットの時に有効)。送信時にはパリティビットを0にする。 ,N(*),パリティを使用しない  '''ストップビット長'''  ストップビットのビット数を指定します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,1(*),1ビット ,2,1.5ビット ,3,2ビット  '''XON/XOFF制御'''  XON/XOFFによるフロー制御を行うかどうかを指定します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,X(*),XON/OFF制御を行う ,N,XON/OFF制御を行わない ,,XONコード=&H11、XOFFコード=&H13  '''RS/CS制御'''  受信バッファの空き領域が少なくなったときに、RSをOFFして相手側からの送信を中断させ、バッファが空くと、RSをONして送信を再開させます。CSがOFFだと、相手への送信を中断して、CSがONになると送信を再開します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,H(*),RS/CS制御を行う ,N,RS/CS制御を行わない  '''受信LF挿入'''  CR(0DH)コードを受信したときに、CRコードとLF(0AH)コードに変換する制御です。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,A,CRコードとLFコードに変換する ,N(*),CRコードとLFコードに変換しない  '''送信LF削除'''  CR(0DH)コードの次にLF(0AH)コードを続けて送信するとき、LFコードを削除して、CRコードのみを送信する制御です。 ,{t},{BSIZE:0} ,{c},{SIZE:20|BSIZE:0},{BSIZE:0} ,A,LFコードを削除する ,N(*),LFコードを削除しない  '''SI/SO制御'''  キャラクタ長が7ビットのときに、0A1Hコードから0FEHコードを送受信するときの制御を指定します。SI(0EH)コードによりG0集合を呼び出し、SO(0FH)コードによりG1集合を呼び出します。*1  G0集合とは21Hコードから7EHコードまでの集合を、G1集合とは0A1Hコードから0FEHコードまでの集合を指します。 ,{t},{BSIZE:0} ,{c},{SIZE:80|BSIZE:0},{BSIZE:0} ,S,SI/SO制御を行う ,N(*),SI/SO制御を行わない  '''受信速度'''  データ受信速度を設定します。単位はビット/秒です。  50、75、110、300、600、1200、1800、2000、2400、3600、4800、7200、9600、19200  '''送信速度'''  データ送信速度を設定します。指定できる速度および指定方法はデータ受信速度と同じです。ただし、送信速度と送信タイムアウトをカンマ(,)まで含めて省略すると、送信速度は受信速度と同じになります。  '''送信タイムアウト'''  データを送信するときに、   XOFFコードを受信している   CSがOFFのためデータが送信できない  などの場合の待ち時間を指定します。単位は約1秒です。タイムアウトした場合には送信を注視して、   Device I/O error  というエラーメッセージを表示します。両略した場合や、0を指定した場合はタイムアウトしません。指定できるのは、0〜25の整数値です。 *1 SI/SO制御を行うときは&H80〜&H9Fのコードは送信しないで下さい。コントロールコード(&H00〜&H1F)に変換されて送信されるため、正常な更新が行われなくなる場合があります。 ,文例{SIZE:100|CENTER}  CALL COMINI("0:8N1XHNNN",9600,,3)  この例は、RS-232Cを以下のように設定します。 ,{t},{BSIZE:0} ,{c},{SIZE:160|BSIZE:0},{BSIZE:0} ,デバイス番号,0 ,キャラクタ長,8ビット ,パリティ,N ,ストップビット長,1ビット ,XON/OFF制御,X ,RS/CS制御,H ,受信LF挿入,N ,送信LF削除,N ,SI/SO制御,N ,受信速度,9600bps ,送信速度,9600bps ,送信タイムアウト,3秒  CALL COMINI("7E3NNAAS")  この例は、RS-232Cを以下のように設定します。 ,{t},{BSIZE:0} ,{c},{SIZE:160|BSIZE:0},{BSIZE:0} ,デバイス番号,0 ,キャラクタ長,7ビット ,パリティ,E ,ストップビット長,2ビット ,XON/OFF制御,N ,RS/CS制御,N ,受信LF挿入,A ,送信LF削除,A ,SI/SO制御,S ,受信速度,1200bps ,送信速度,1200bps ,送信タイムアウト,なし !CALL COMOFF ,機能{SIZE:100|CENTER}  RS-232からの割り込みを禁止します。 ,書式{SIZE:100|CENTER}  CALL COMOFF[("デバイス番号:")] ,解説{SIZE:100|CENTER}  CALL COMOFF文を実行後、RS-232Cにデータが来ても、割り込みは発生しません。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはカッコごと省略します。 ,文例{SIZE:100|CENTER}  CALL COMOFF  もしくは  CALL COMOFF("0:")  デバイス番号0をCOMOFFします。 !CALL COMON ,機能{SIZE:100|CENTER}  RS-232からの割り込みを許可します。 ,書式{SIZE:100|CENTER}  CALL COMON[("デバイス番号:")] ,解説{SIZE:100|CENTER}  CALL COMON文を実行後、RS-232Cにデータが来ると、COM GOSUB文で指定してある行番号が実行されます。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはカッコごと省略します。 ,文例{SIZE:100|CENTER}  CALL COMON  もしくは  CALL COMON("0:")  デバイス番号0をCOMONします。 !CALL COMSTAT ,機能{SIZE:100|CENTER}  RS-232Cのステータスを求めます。 ,書式{SIZE:100|CENTER}  CALL COMSTAT(["デバイス番号:"],数値変数) ,解説{SIZE:100|CENTER}  RS-232Cのステータスを数値変数に代入します。  ステータスは数値変数値の下位16ビットが1か0かで示します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,ビット0,キャリア信号の検出 ,(LSB),0 キャリアを検出していない。 ,,1 キャリアを検出。 ,ビット1,被呼表示(リングインジケータ)の検出 ,,0 被呼表示を検出していない。 ,,1 被呼表示を検出。 ,ビット2,ブレーク信号の検出 ,,0 ブレーク信号を検出していない。 ,,1 ブレーク信号を検出。 ,ビット3,データセットレディ ,,0 DR(DSR)信号を検出していない。 ,,1 DR(DSR)信号を検出。 ,ビット4,未使用(常に0) ,ビット5,未使用(常に0) ,ビット6,タイマ/カウンタ出力2 ,,0 タイマ/カウンタ出力2が偽である。 ,,1 タイマ/カウンタ出力2が真である。 ,ビット7,CS信号検出 ,,0 CS(CTS)信号を検出していない。 ,,1 CS(CTS)信号を検出。 ,ビット8,未使用(常に0) ,ビット9,未使用(常に0) ,ビット10,CTRL+STOPキー検出 ,,0 押されていなかった ,,1 押されていた ,ビット11,パリティエラー ,,0 エラーなし ,,1 エラーあり ,ビット12,オーバーランエラー ,,0 エラーなし ,,1 エラーあり ,ビット13,フレーミングエラー ,,0 エラーなし ,,1 エラーあり ,ビット14,送信タイムアウトエラー ,,0 エラーなし ,,1 エラーあり ,ビット15,バッファオーバフローエラー ,(MSB),0 エラーなし ,,1 エラーあり ,文例{SIZE:100|CENTER}  CALL COMSTAT(,F):PRINT BIN$(F)  もしくは  CALL COMSTAT("0:",F):PRINT BIN$(F)  デバイス番号0のステータスを数値変数Fに代入して、画面に2進数表示をします。 !CALL COMSTOP ,機能{SIZE:100|CENTER}  RS-232Cからの割り込みを保留します。 ,書式{SIZE:100|CENTER}  CALL COMSTOP(["デバイス番号:")] ,解説{SIZE:100|CENTER}  CALL COMSTOP文を実行後、RS-232Cにデータが来ても、CALL COMONが実行されるまで割り込みは保留されます。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。 ,文例{SIZE:100|CENTER}  CALL COMSTOP  もしくは  CALL COMSTOP("0:")  デバイス番号0をCOMSTOPします。 !CALL COMTERM ,機能{SIZE:100|CENTER}  ターミナルモードにします。 ,書式{SIZE:100|CENTER}  CALL COMTERM(["デバイス番号:")] ,解説{SIZE:100|CENTER}  コンピュータをターミナルモードにします。ターミナルモードとは、MSXをホストコンピュータの入出力端末として使用するモードです。ターミナルモードでは、MSXはホストコンピュータから受信したデータをディスプレイに表示します。そして、キーボードから入力されたデータを、ホストコンピュータに送信します。 1.ターミナルモードの起動 1.接続する機器の仕様を確認する 2.CALL COMINI命令による初期設定を行う 3.CALL COMTERM命令で内蔵ターミナルソフトを起動する  RS-232CポートをOPENしている場合には、CLOSEしてからCALL COMTERM命令を実行してください。 2.ターミナルモードの使用方法  ターミナルモードでは、以下のキーを使って、オプション機能を設定できます。 '''表7.12 ターミナルモードのオプション機能一覧 3.ターミナルモードの例 4.エスケープシーケンス  RS-232Cの内蔵ターミナルソフトがサポートするエスケープシーケンスは以下の通りです。 カーソル移動 ,{t},{BSIZE:0} ,{c},{SIZE:100|BSIZE:0},{BSIZE:0} ,<ESC>A,カーソルを上に移動 ,<ESC>B,カーソルを下に移動 ,<ESC>C,カーソルを右に移動 ,<ESC>D,カーソルを左に移動 ,<ESC>H,カーソルをホームポジションに移動 ,<ESC>Y,"カーソルを(X,Y)の位置に移動" 編集・削除 ,{t},{BSIZE:0} ,{c},{SIZE:100|BSIZE:0},{BSIZE:0} ,<ESC>j,画面をクリア ,<ESC>l,行全体を削除 ,<ESC>E,画面をクリア ,<ESC>K,行の終わりまで削除 ,<ESC>J,画面の終わりまで削除 ,<ESC>L,1行挿入 ,<ESC>M,1行削除 その他 ,{t},{BSIZE:0} ,{c},{SIZE:100|BSIZE:0},{BSIZE:0} ,<ESC>x4,カーソルの形を「■」にする ,<ESC>x5,カーソルを消す ,<ESC>y4,カーソルの形を「_」にする ,<ESC>y5,カーソルを表示する !LOAD ,機能{SIZE:100|CENTER}  プログラムを受信します。 ,書式{SIZE:100|CENTER}  LOAD "COM[デバイス番号]:"[,R] ,解説{SIZE:100|CENTER}  RS-232CからASCII形式のBASICプログラムをロードします。EOF(&H1A)コードを受信するとロードを終了します。ロードする前のプログラムは消え、Rオプションを指定していなかった場合、開いているファイルは閉じられます。通信誤りが検出された場合、  のエラーメッセージが表示されます。  '''デバイス番号'''  設定の対象となるカートリッジを0(*)〜9の整数値で指定します。  '''Rオプション'''  ロード終了後に、プログラムが実行されます。開いているファイルは閉じません。 !MERGE ,機能{SIZE:100|CENTER}  プログラムを受信してメモリ上のプログラムとマージ混合します。 ,書式{SIZE:100|CENTER}  MERGE "COM[デバイス番号]:" !RUN ,機能{SIZE:100|CENTER}  プログラムを受信した後に実行を開始します。 ,書式{SIZE:100|CENTER}  RUN "COM[デバイス番号]:"[,R] !SAVE ,機能{SIZE:100|CENTER}  プログラムを送信します。 ,書式{SIZE:100|CENTER}  SAVE "COM[デバイス番号]:" !CLOSE ,機能{SIZE:100|CENTER}  RS-232C用ファイルをクローズします。 ,書式{SIZE:100|CENTER}  CLOSE [[#]ファイル番号[,[#]ファイル番号]...] !INPUT# ,機能{SIZE:100|CENTER}  数値や文字を受信して変数に代入します。 ,書式{SIZE:100|CENTER}  INPUT #ファイル番号,変数[,変数]... !LINE INPUT# ,機能{SIZE:100|CENTER}  254文字までの文字を受信して文字型変数に代入します。 ,書式{SIZE:100|CENTER}  LINE INPUT #ファイル番号,変数 !OPEN ,機能{SIZE:100|CENTER}  RS-232C用ファイルをオープンします。 ,書式{SIZE:100|CENTER}  OPEN "COM[デバイス番号]:"[FORモード] AS [#]ファイル番号 !PRINT# ,機能{SIZE:100|CENTER}  数値や文字を送信します。 ,書式{SIZE:100|CENTER}  PRINT #ファイル番号,[式[セパレータ 式]...] !PRINT # USING ,機能{SIZE:100|CENTER}  書式付きPRINT# ,書式{SIZE:100|CENTER}  PRINT#ファイル番号、USING 書式記号: 式[,式]… ,解説{SIZE:100|CENTER}  式で指定したデータを指定した書式で、RS-232Cへ送信します。  '''ファイル番号'''  1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。  '''書式記号'''  ■文字列を編集するもの。 ,{t},{BSIZE:0} ,{c},{SIZE:100|BSIZE:0},{BSIZE:0} ,!,文字列の左側1文字を表示する。 ,&空白&,文字列の左側から、指定した空白の数+2文字を表示する。 ,@,@を編集用として指定した文字列で置き換える。 ,#,数値を#で指定した桁数だけ表示する。 ,.,小数点の位置を指定する。 ,+-,数値に正負符号をつける。書式の左端につけると数値の前に、右端につけると数値の後ろに正負符号をつける(ただし、-は左端にはつけられない)。 ,**,書式の左端を**にしておくと、数値の整数部の桁数が書式の指定より小さいときに、小さい分だけ*が表示される。 ,\\,書式の左端を\\にしておくと、数値の直前に\がつけられる。\\は指数形式の書式指定をしているときには使えない。 ,**\,"書式の左端を**\しておくと、数値の直前に\がつけられ、整数部の桁数が書式の指定より小さいときに、小さい分だけ*が表示される。**\は指数形式の書式指定をしているときには使えない。,を整数部の#と#の間、あるいは小数点の左側に置いたときには、整数部が3桁ごとにカンマで区切られて表示される。,は指数形式の書式指定をしているときには使えない。" ,^^^^,^^^^を#の後ろにつけると、数値が指数形式で表示される。書式に+または-を指定していない場合、数値が正ならば数値の前に空白が1つ、負なら数値の前に-が表示される。 ,%,表示しようとする編集済みの数値が書式で指定した桁数より大きいと、数値の前に%がつけられる。  書式の中にこれらの記号以外の文字を置くと、文字の位置に応じて数値の前や後ろにその文字が表示されます。  '''式'''  文字型、数値型の定数、変数、配列変数、式などが使用できます。 !EOF ,機能{SIZE:100|CENTER}  EOFコード(&H1A)が受信されたかどうかを求めます。 ,書式{SIZE:100|CENTER}  EOF(ファイル番号) ,解説{SIZE:100|CENTER}  EOF(&H1A)コードが受信され、それ以前のデータ全てをINPUT$などにより読み込まれた場合は-1を、それ以外なら0を返します。送受信モードでオープンした場合には必ず0が返ります。  '''ファイル番号'''  1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。 ,文例{SIZE:100|CENTER} !INPUT$ ,機能{SIZE:100|CENTER}  指定した数の文字を受信します。 ,書式{SIZE:100|CENTER}  INPUT$(文字数,[#]ファイル番号) ,解説{SIZE:100|CENTER}  RS-232Cから指定した数の文字を受信します。  '''文字数'''  1から255までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。  '''ファイル番号'''  1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。 ,文例{SIZE:100|CENTER} !LOC ,機能{SIZE:100|CENTER}  受信バッファの未取得文字数を求めます。 ,書式{SIZE:100|CENTER}  LOC(ファイル番号) ,解説{SIZE:100|CENTER}  '''ファイル番号'''  1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。 ,文例{SIZE:100|CENTER} !LOF ,機能{SIZE:100|CENTER}  受信バッファの残りバイト数を求めます。 ,書式{SIZE:100|CENTER}  LOF(ファイル番号) ,解説{SIZE:100|CENTER}  '''ファイル番号'''  1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。 ,文例{SIZE:100|CENTER} !!1.3 拡張BIOS !1.3.1 概要  MSX RS-232Cでは、アプリケーションソフトウェア用のサービスルーチンとして、拡張BIOSコールが用意されています。拡張BIOSコールにより、アプリケーションソフトウェアはそのスロットアドレスやアドレスなどの位置を調べ、インタースロットコール等により、ジャンプテーブルを経由して呼び出します。  高速処理を必要とする場合は、あらかじめスロットをイネーブルしておき、直接コールすることもできます。この章では、MSX RS-232C拡張BIOSを使用するのに必要な、拡張BIOSコールの方法と各BIOSの機能について解説します。 !1.3.2 拡張BIOSの呼び出し 1.ジャンプテーブルアドレスの取得  アプリケーションは、まず以下の拡張BIOSコールにより、MSX RS-232C拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスを調べなければなりません。  拡張BIOSの存在するスロットとジャンプテーブルの先頭アドレスは、以下のようにして求めます。 +RETURN情報エリア用のワークエリアをとる +以下の設定を行い、FFCAH番地をコールする  RETURN情報はアプリケーションが指定した領域に次のように格納されます。 {{svg 図7.3P131.svg}} '''図7.3 RETURN情報の形式'''  RS-232Cが無いときは、BレジスタとHLレジスタの内容が変わらずに返ってきます。  スロットアドレスの表現はMSX共通で以下の通りです。 {{svg 図7.4P131.svg}} '''図7.4 スロットアドレスの形式'''  拡張BIOSを使用する場合は、この拡張BIOSコールで得られたジャンプテーブルをインタースロットコールなどにより呼び出し、目的のBIOSを使用します。 2.BIOSジャンプテーブル  MSX RS-232C拡張BIOSは以下に示すジャンプテーブルを持っています。アプリケーションソフトウェアはインタースロットコール等で各エントリを呼び出すことにより、BIOSの各機能を利用できます。 DVINFB  DVINFBは以下の構成でそのカートリッジの仕様を表します。 {{svg 図P132.svg}} '''図7.5 DVINFBの形式'''  各ビットは1でその機能があることを示し、0でないことを示します。 DVTYPE  DVTYPEが0であればシングルチャンネルタイプのRS-232Cカートリッジです。この場合はSETCHNのエントリはありません。  DVTYPEが0以外であればマルチチャンネルタイプのRS-232Cカートリッジです。 3.BIOSの各機能  MSX RS-232C拡張BIOSの各機能はインタースロットコールにより呼び出されます。インタースロットコール(CALSLT)の呼び出しアドレスは001CHです。 ,コール手順 その他のレジスタは機能により異なります。各項を参照してください。 !INIT ,機能{SIZE:100|CENTER}  RS-232C拡張BIOSをイニシャライズします。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,B,パラメータテーブルのスロットアドレス ,HL,パラメータテーブルのアドレス {{svg 図7.6P134.svg}} '''図7.6 INITパラメータテーブルの形式'''  オフセット+0から+7はASCIIキャラクタ、+8から+12まではバイナリです。  ASCIIキャラクタはすべて大文字とします。 ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,CYフラグ,パラメータの指定に間違いがある場合、1にセットされます。 ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  イニシャライズデータの意味を説明します。 '''キャラクタ長'''  通信データのビット長を指定します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,5,5ビット ,6,6ビット ,7,7ビット ,8,8ビット '''パリティ'''  データに付加するパリティの指定をします。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,N,パリティなし ,E,偶数パリティ ,O,奇数パリティ ,I,送信時にはパリティビットは0{COLS:2} ,,受信時には無視する '''ストップビット'''  ストップビット長を指定します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,1,ストップビット1ビット ,2,ストップビット1.5ビット ,3,ストップビット2ビット '''XON/XOFF制御'''  XON/XOFF制御を行うかどうかの指定します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:70},{BSIZE:0} ,X,XON/XOFF制御を行う ,N,行わない '''RS/CS制御'''  RS/CS制御を行うかどうかの指定です。Hが指定されると、キャラクタを送信するときに、CSがチェックされます。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:70},{BSIZE:0} ,H,RS/CS制御を行う ,N,行わない '''受信LF挿入'''  CR(0DH)コードを受信したときにそのあとにLF(0AH)が受信されたものとみなす制御を行うかどうかの指定です。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,A,LFを挿入する ,N,挿入しない '''送信LF挿入'''  CR(0DH)コードを送信した直後のLF(0AH)コードは送信せずに捨てる制御を行うかどうかの指定です。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,A,LFを削除する ,N,削除しない '''SI/SO制御'''  データ長が7ビットのときに0AHコードから0FFHのコードを送受信するとき文字セットの切り換えの制御を行うかどうかの指定です。SI(0FH)コードによりG0集合を呼び出し、SO(0EH)コードによりG1集合を呼び出します。 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,S,SI/SO制御を行う ,N,行わない '''受信/送信速度'''  通信速度をビット/秒で以下の中から指定します。   50、75、110、300、600、1200、1800、2000、2400、3600、4800、7200、9600、19200  なお、受信速度、送信速度はそれぞれ別に設定できます。 '''送信タイムアウト'''  データを送信するときに、XOFFコードが受信されていたりCSがOFFだったりしてデータが送信できない場合の待ち時間を指定します。単位は秒で範囲は0から255までです。0を指定した場合はタイムアウトせずに送出できるまで待ち続けます。 ,解説{SIZE:100|CENTER}  このエントリは他の機能を呼び出す前に、必ず一度は呼び出されなくてはなりません。 !OPEN ,機能{SIZE:100|CENTER}  RS-232Cをオープンします。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0|SIZE:80},{BSIZE:0} ,HL,FCBのアドレス(8000H番地以上のアドレスを指定する){COLS:2}, ,C,バッファ長(範囲は32文字〜127文字){COLS:2}, ,E,オープンモード{COLS:2} ,,1,モード ,,2,モード ,,4, and モード {{svg 図7.7P137.svg}} '''図7.7 FCBの形式''' ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,CYフラグ,オープンモードが正しくない場合は1にセットされます。 ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  この機能はRS-232Cのすべての入出力処理に先立って行う必要があります。FCBエリアは9バイトのワークエリアと受信するデータの2倍の長さのバッファが必要です。  受信データは受信データそのものと、エラー情報の2バイト構成でバッファに格納されます。子のバッファ長はCレジスタで指定されます。FCBエリアは8000H番地以上に置かなければいけません。これはRS-232Cカートリッジが割り込みによって呼び出されたときに、スロット間リード/ライトによるオーバーヘッドを避けるためにFCBエリアを直接アクセスしているためです。 !STAT ,機能{SIZE:100|CENTER}  ハードウェアの状態を返します。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,HL,ステータス{COLS:16} ,,bit0 CD信号 ,,bit1 RI信号 ,,bit2 ブレーク信号検出(*) ,,bit3 DR信号 ,,bit4 システム予約 ,,bit5 システム予約 ,,bit6 システム予約 ,,bit7 CS信号 ,,bit8 システム予約 ,,bit9 システム予約 ,,bit10 CTRL+STOPキー検出(*) ,,bit11 パリティエラー(*) ,,bit12 オーバーランエラー(*) ,,bit13 フレーミングエラー(*) ,,bit14 タイムアウトエラー(*) ,,bit15 バッファオーバーフロー(*)  bit0からbit7はLレジスタ、bit8からbit15はHレジスタ、サポートされていない機能のビットは0を返します。  (*)のビットは読み出されるとリセットされます。 ,変更レジスタ{SIZE:100|CENTER}  なし !GETCHR ,機能{SIZE:100|CENTER}  受信バッファから文字を読み出します。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,A,受信文字 ,Sフラグ,エラーがある場合1にセットされます。 ,CYフラグ,オープンモードが1(Input mode)で、文字がEOFコードである場合1にセットされます。 ,変更レジスタ{SIZE:100|CENTER}  なし ,解説{SIZE:100|CENTER}  このBIOSを呼び出す時は、LOCを使用して受信バッファに文字があるかどうかを調べて、文字がある場合にのみ呼び出せます。文字がない状態で呼び出したときの結果は、保証しません。 !SNDCHR ,機能{SIZE:100|CENTER}  RS-232Cに文字を送出します。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:140},{BSIZE:0} ,A,送信文字 ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,Cフラグ,XOFFを受信していたりCSがONになっていなかったりしたときに、CTRL+STOPが押されると1にセットされます。 ,Zフラグ,XOFFを受信していたりCSがONになっていなかったときに、INITで指定された時間が経過しても待機条件がクリアされなかった場合、タイムアウトして、1にセットされます。 ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  タイムアウトエラーが発生したとき、およびCTRL+STOPキーが押された場合、文字は送出しません。 !CLOSE ,機能{SIZE:100|CENTER}  RS-232Cポートをクローズします。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER}  OPEN時にOutputモードに設定されていた場合 ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,CYフラグ,XOFFを受信していたりCSがONになっていなかったりしたときに、CTRL+STOPが押されると1にセットされます。 ,Zフラグ,XOFFを受信していたりCSがONになっていなかったときに、INITで指定された時間が経過しても待機条件がクリアされなかった場合、1にセットされます。  OPEN時にInputモードに設定されていた場合  なし ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  FCBが解放されます。OPEN時にOUTPUTモードの指定がされていた時は、EOFコード(1AH)が送出されます。  タイムアウトエラーが発生する可能性があるのは、このEOFコードを送出するときだけです。  CLOSEされると、ハードウェアの受信割り込みが禁止されます。 !EOF ,機能{SIZE:100|CENTER}  次の受信文字がEOFかどうかをチェックします。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,HL,EOFの場合、-1でさらにキャリーフラグが1にセットされます。{COLS:3} ,,EOFでない場合もしくはまだ受信バッファに文字がない場合、0でさらにキャリーフラグが0にリセットされます。 ,,RAWモードでRS-232Cポートがオープンされたときは、EOFは常に0で、キャリーフラグが0にリセットされます。 ,変更レジスタ{SIZE:100|CENTER}  AF !LOC ,機能{SIZE:100|CENTER}  受信バッファの中にある文字数を返します。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,HL,受信バッファ内の文字数 ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  この機能が返す値にはバックアップされていた文字が含まれます。デバイスがInputモードでオープンされている場合にはEOF以降の文字は含まれません。ただし、この文字もバッファのスペースを必要とします。 !LOF ,機能{SIZE:100|CENTER}  文字を受信バッファに戻します。これは1文字のみ可能です。 ,コール手順{SIZE:100|CENTER}  なし ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:140},{BSIZE:0} ,HL,受信バッファの空き容量 ,変更レジスタ{SIZE:100|CENTER}  AF ,解説{SIZE:100|CENTER}  この機能が返す値は、OPENの時に指定した受信バッファの文字数から上記LOCの値を引いた値に1を加えた(バックアップ文字の文)値です。 !BACKUP ,機能{SIZE:100|CENTER}  文字を受信バッファに戻します。これは1文字のみ可能です。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,C,バックアップする文字 ,戻り値{SIZE:100|CENTER}  なし ,変更レジスタ{SIZE:100|CENTER}  AF !SNDBRK ,機能{SIZE:100|CENTER}  指定した数のブレーク文字を送出します。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,DE,送出するブレーク文字数 ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,Cフラグ,CTRL+STOPが押されると1にセットされます。 ,変更レジスタ{SIZE:100|CENTER}  AF、DE !DTR ,機能{SIZE:100|CENTER}  DTR(ER)をON/OFFします。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,A,コントロール指定 ,0,DTR(ER)をOFFします。 ,0以外,DTR(ER)をONします。 ,戻り値{SIZE:100|CENTER}  なし ,変更レジスタ{SIZE:100|CENTER}  F !SETCHN ,機能{SIZE:100|CENTER}  マルチチャンネルタイプのRS-232Cカートリッジで、制御の対象とするチャンネルを指定します。 ,コール手順{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:80},{BSIZE:0} ,E,チャンネル番号 ,戻り値{SIZE:100|CENTER} ,{t},{BSIZE:0} ,{c},{BSIZE:0|SIZE:140},{BSIZE:0} ,Cフラグ,チャンネル番号が正しくない場合に1が返されます。 ,変更レジスタ{SIZE:100|CENTER}  AF、BC ,解説{SIZE:100|CENTER}  チャンネル番号はリセット時に0に設定されます。 ,注意{SIZE:100|CENTER}  ここでのチャンネル番号はBASICでのCOM0:などの番号とは異なり、マルチチャンネルRS-232Cカートリッジのポートだけに付けられた番号です。つまりシングルチャンネルタイプのRS-232Cカートリッジがマルチチャンネルタイプのものより小さいスロット番号に遭っても、チャンネル番号は0から始まります。 !!1.4 サンプルプログラム  添付のフロッピーディスクの中に、RS-232C拡張BIOSを使ったサンプルプログラムが入っています。ファイル名は、「TERMINAL.MAC」です。  MSX-DOSからこのプログラムを起動すると、簡単なターミナルモードになります。終了するにはCTRL+STOPを押してください。  このプログラムを作成するにはMSX-DOS TOOLSを使って、次の操作を行います。 A>m80=b:sample No Fatal error(s) A>l80 b:sample,b:sample/n/e MSX-L.80 1.00 01-Apr-85 (c) 1981,1985 Microsoft DATA 0103 0267 < 356> XXXXX Bytes Free [0000 0267 2] A> ,{t},{BSIZE:1 0|SIZE:100%} ,{BSIZE:0}←[[7部 オプションの周辺機器]] ,{BSIZE:0|RIGHT}[[2章 MSX MODEM]] →