{{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:100|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:100|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:100|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:100|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ポート(ハードウェア)から発生する実際の割り込みではありません。 ,{BSIZE:0} , !1.2.4 拡張BASICの解説 !!1.3 拡張BIOS !1.3.1 概要 !1.3.2 拡張BIOSの呼び出し !!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]] →