MSX Datapack wiki化計画

1章 MSX RS-232C

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

 1.1 ハードウェア

 MSX RS-232Cには、シングルチャンネルタイプとマルチチャンネルタイプの2つの仕様があります。それぞれについて、以下で解説します。

1.1.1 シングルチャンネルバージョン

1. 使用するLSl

i8251通信インターフェイス
i8253プログラマブルインターバルタイマ
ROM システムソフトウェア用(8Kバイト)

2. ポートアドレス

  表7.1 シングルチャンネルタイプのポートアドレス

I/OアドレスRead/Write意味
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番地ビット割り当て

82H Readシステムステータスの獲得

  表7.2 シングルチャンネルタイプのシステムステータス

データビット意味
D7 CTS (Clear To Send)
0CTS Asserted
1CTS Negated
D6 タイマ/カウンタ出力2(8253より)
D5 システム予約
D4 システム予約
D3 システム予約
D2 システム予約
D1 RI (Ring Indicator)*
0RI Asserted
1RI Negated
D0 CD (Carrier Detect)*
0CD Asserted
1CD Negated

注 意*印の信号はオプション。どちらか一方をインプリメントする場合、必ずCD信号にする。
82H Write割り込みマスクレジスタ

  表7.3 シングルチャンネルタイプの割り込みマスクレジスタ

データビット意味
D7 システム予約
D6 システム予約
D5 システム予約
D4 システム予約
D3 Timer Interrupt from i8253 channel2*
1割り込み不許可(初期値)
0割り込み許可
D2 Sync character detect/Break detect*
1割り込み不許可(初期値)
0割り込み許可
D1 Transmit Data Ready (TxReady)*
1割り込み不許可(初期値)
0割り込み許可
D0 Receive Data Ready (RxReady)
1割り込み不許可(初期値)
0割り込み許可

注 意*印の信号はオプション。最小構成では、割り込み信号はRxReadyのみ。

4. 8253を使用した8251へのボーレートクロック発生

1.水晶発振器 発信周波数 1.8432MHz

  表7.4 シングルチャンネルタイプのボーレートとスケールファクタ

ボーレートスケールファクタと誤差
50 2304
75 1536
110 1047110.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
192006

2.使用するカウンタチャンネル

CH0Rx Baud rate clock
CH1Tx Baud rate clock
CH2Used by Application(Interrupt generated optionally)

5. DSUB25コネクタのピン配列

  表7.5 DSUB25コネクタのピン配列

ピン番号信号名ピン番号信号名
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 20Data Terminal Ready
8 Carrier Detect 21
9 22RING Indicator
1023
1124
1225
13

1.1.2 マルチチャンネルバージョン

1. 使用するLSl

i8251通信インターフェイス
i8253プログラマブルインターバルタイマ
ROM システムソフトウェア用(8Kバイト)
RAM 受信バッファ、ワークエリア用(2Kバイト)

2. ROMアドレス
 RS-232Cのシステムソフトウェアは4000H〜5FFFHに配置します。ROMは以下のモジュールを含みます。

  1. RS-232Cドライバ
  2. RS-232C拡張BASIC
  3. RS-232C拡張BIOS

 マルチチャンネルバージョンでサポートしているチャンネル数は1つのカートリッジにつき、最大4チャンネル(1台のシステムにつき、最大4チャンネル)です。

画像ファイルが存在しません。
図7.1 マルチチャンネルRS-232Cカートリッジの実装例

3.RAMアドレス
 RAMは6000H〜67FFHに配置します。また、同じRAMがA000H〜A7FFHにも見えるようにイメージを出します。したがって、6000Hに1を書き込むと、A000Hも1になります。システムソフトウェアから両方のアドレスのRAMにアクセス出来るように回路を設計しなければなりません。これは、RS-232Cカートリッジの実行速度をなるべく高速にするためです。
 RAMは以下の目的で使われます。

  1. 1チャンネルにつき、128バイトのキャラクタとそれぞれのキャラクタについてのエラー情報128バイト、合計256バイトの受信バッファ
  2. フラグと変数の保存
  3. 通信パラメータの保存

4. ポートアドレス
 マルチチャンネルRS-232Cをサポートするためには、アドレスの衝突を防ぐために全てのポートはメモリ上に置かなければなりません。しかし、シングルチャンネルRS-232CのI/Oポートを直接アクセスしているアプリケーションソフトウェアを救済するために、最初の1チャンネルはI/Oポートに接続して下さい。また、この仕様については、システムソフトウェアでコントロールが可能でなければなりません。

  表7.6 マルチチャンネルタイプのメモリアドレス

メモリアドレスI/OアドレスRead/Write意味
BFF8H80H R/W 8251データポート
BFF9H81H R/W 8251コマンド/ステータスポート
BFFAH82H R CTS、Timer/Counter2、RI、CD用ステータスセンス
BFFAH82H W 割り込みマスクレジスタ
BFFBH83H システム予約
BFFCH84H R/W 8253カウンタ0
BFFDH85H R/W 8253カウンタ1
BFFEH86H R/W 8253カウンタ2
BFFFH87H W 8253モードレジスタ

これはチャンネル0のメモリアドレスです。各チャンネルの最下位アドレスは以下の通りです。

■チャンネル1BFF0H
■チャンネル2BFE8H
■チャンネル3BFE0H

チャンネルは連続し、0から始まらなければなりません。

  表7.7 チャンネル配置の例

良い例悪い例
チャンネル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. アドレスマップ

画像ファイルが存在しません。
図7.2 アドレスマップ

6. BFFAH(メモリ)、82H(I/O)番地ビット割り当て

82H Readシステムステータスの獲得

  表7.8 マルチチャンネルタイプのシステムステータス

データビット意味
D7 CTS (Clear To Send)
0CTS Asserted
1CTS Negated
D6 タイマ/カウンタ出力2(8253より)
D5 システム予約
D4 システム予約
D3 システム予約
D2 システム予約
D1 RI (Ring Indicator)*
0RI Asserted
1RI Negated
D0 CD (Carrier Detect)*
0CD Asserted
1CD Negated

注 意*印の信号はオプション。どちらか一方をインプリメントする場合、必ずCD信号にする。
82H Write割り込みマスクレジスタ

  表7.9 マルチチャンネルタイプの割り込みマスクレジスタ

データビット意味
D7 システム予約(必ず1)
D6 システム予約(必ず1)
D5 システム予約(必ず1)
D4 チャンネル0のI/Oポートのアクセス(BFFAHのみ)
1I/Oポートの接続を許可
0I/Oポートの接続を禁止(初期値)
D3 Timer Interrupt from i8253 channel2*
1割り込み不許可(初期値)
0割り込み許可
D2 Sync character detect/Break detect*
1割り込み不許可(初期値)
0割り込み許可
D1 Transmit Data Ready (TxReady)*
1割り込み不許可(初期値)
0割り込み許可
D0 Receive Data Ready (RxReady)
1割り込み不許可(初期値)
0割り込み許可

注 意*印の信号はオプション。最小構成では、割り込み信号はRxReadyのみ。

7. 8253を使用した8251へのボーレートクロック発生

1.水晶発振器 発信周波数 1.8432MHz

  表7.10 マルチチャンネルタイプのボーレートとスケールファクタ

ボーレートスケールファクタと誤差
50 2304
75 1536
110 1047110.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
192006

2.使用するカウンタチャンネル

CH0Rx Baud rate clock
CH1Tx Baud rate clock
CH2Used by Application(Interrupt generated optionally)

8. DSUB25コネクタのピン配列

  表7.11 DSUB25コネクタのピン配列

ピン番号信号名ピン番号信号名
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 20Data Terminal Ready
8 Carrier Detect 21
9 22RING Indicator
1023
1124
1225
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 この章の表記法

画像ファイルが存在しません。

1.2.3 拡張BASICコマンド一覧

1.拡張ステートメント(CALL文と共に使用します)

コマンド名機能ページ
COMBREAK ブレーク信号を送信します 103
COMDTR DTR(ER)信号をON/OFFします 104
COM GOSUBRS-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.コマンド

コマンド名機能ページ
LOAD プログラムを受信します117
MERGEプログラムを受信してメモリ上のプログラムとマージします117
RUN プログラムを受信した後に実行を開始します118
SAVE プログラムを送信します119

3.ステートメント

コマンド名機能ページ
CLOSE RS-232C用ファイルをクローズします120
INPUT # 数値や文字を入力して変数に代入します120
LINE INPUT #254文字までの文字を受信して文字型変数に代入します121
OPEN RS-232C用ファイルをオープンします122
PRINT # 数値や文字を送信します123
PRINT # USING書式付きPRINT #です125

4.関数

コマンド名機能ページ
EOF EOFコード(&H1A)が受信されたかどうかを求めます127
INPUT$ 指定した数の文字を入力します127
LOC 受信バッファ内の文字数を獲得します128
LOF 通信用バッファの空き容量を獲得します129

注 意COMON、COMOFF、COMSTOPの説明にある、RS-232Cからの割り込みとは、BASICのプログラム実行に対する割り込みです。RS-232Cポート(ハードウェア)から発生する実際の割り込みではありません。

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>