※ ※ このページは書きかけです。以下の可能性があります。 ※ ・誤字、脱字等のチェックをおこなっていません。 ※ ・テキスト、表などフォーマットがされていない。 ※ ・画像が抜けている。 ※
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) | ||
0 | CTS Asserted | ||
1 | CTS Negated | ||
D6 | タイマ/カウンタ出力2(8253より) | ||
D5 | システム予約 | ||
D4 | システム予約 | ||
D3 | システム予約 | ||
D2 | システム予約 | ||
D1 | RI (Ring Indicator)* | ||
0 | RI Asserted | ||
1 | RI Negated | ||
D0 | CD (Carrier Detect)* | ||
0 | CD Asserted | ||
1 | CD 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 | 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.使用するカウンタチャンネル
CH0 | Rx Baud rate clock | |
CH1 | Tx Baud rate clock | |
CH2 | Used 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 | 20 | Data Terminal Ready | |
8 | Carrier Detect | 21 | ||
9 | 22 | RING Indicator | ||
10 | 23 | |||
11 | 24 | |||
12 | 25 | |||
13 |
1.1.2 マルチチャンネルバージョン
1. 使用するLSl
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チャンネル)です。
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 マルチチャンネルタイプのメモリアドレス
メモリアドレス | I/Oアドレス | Read/Write | 意味 | |
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のメモリアドレスです。各チャンネルの最下位アドレスは以下の通りです。
■チャンネル1 | BFF0H | |
■チャンネル2 | BFE8H | |
■チャンネル3 | BFE0H |
チャンネルは連続し、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. アドレスマップ
6. BFFAH(メモリ)、82H(I/O)番地ビット割り当て
82H Read | システムステータスの獲得 |
表7.8 マルチチャンネルタイプのシステムステータス
データビット | 意味 | ||
D7 | CTS (Clear To Send) | ||
0 | CTS Asserted | ||
1 | CTS Negated | ||
D6 | タイマ/カウンタ出力2(8253より) | ||
D5 | システム予約 | ||
D4 | システム予約 | ||
D3 | システム予約 | ||
D2 | システム予約 | ||
D1 | RI (Ring Indicator)* | ||
0 | RI Asserted | ||
1 | RI Negated | ||
D0 | CD (Carrier Detect)* | ||
0 | CD Asserted | ||
1 | CD Negated |
注 意 | *印の信号はオプション。どちらか一方をインプリメントする場合、必ずCD信号にする。 |
82H Write | 割り込みマスクレジスタ |
表7.9 マルチチャンネルタイプの割り込みマスクレジスタ
データビット | 意味 | ||
D7 | システム予約(必ず1) | ||
D6 | システム予約(必ず1) | ||
D5 | システム予約(必ず1) | ||
D4 | チャンネル0のI/Oポートのアクセス(BFFAHのみ) | ||
1 | I/Oポートの接続を許可 | ||
0 | I/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 | 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.使用するカウンタチャンネル
CH0 | Rx Baud rate clock | |
CH1 | Tx Baud rate clock | |
CH2 | Used 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 | 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 この章の表記法
1.2.3 拡張BASICコマンド一覧
1.拡張ステートメント(CALL文と共に使用します)
コマンド名 | 機能 | ページ | |
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.コマンド
コマンド名 | 機能 | ページ | |
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の解説
CALL COMBREAK
機能 |
ブレーク信号を送信します。
書式 |
CALL COMBREAK[("デバイス番号:"],式)]
解説 |
SD(送信データ)を強制的にブレーク状態にします。ブレーク状態とは回線が切断状態になることです。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。
式
数値定数、変数、配列変数、式で指定します。指定できる範囲は3から32767までの値です。式の値は次のように計算します。
値の式= | 送信速度×ブレーク送信時間 | |
1+キャラクタ長+ストップビット長 |
省略した場合は、10になります。
文例 |
CALL COMBREAK(,480)
もしくは
CALL COMBREAK("0:",480)
CALL COMINIにおいて以下のように設定した場合にデバイス番号0に対して、ブレーク信号を500m秒送信します。
キャラクタ長 | 8ビット |
ストップビット長 | 1ビット |
送信速度 | 9600bps |
CALL COMDTR
機能 |
DTR(ER)信号をON/OFFします。
書式 |
CALL COMDTR[("デバイス番号:"],式)]
解説 |
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。
式
0と1の値で指定します。
0 | DTR(ER)をOFF | |
1 | DTR(ER)をON | |
0以外の数値を指定した場合にも、DTR(ER)はONになる |
文例 |
CALL COMDTR(,0)
もしくは
CALL COMDTR("0:",0)
デバイス番号0のDTR(ER)信号をOFFにします。
CALL COM GOSUB
機能 |
RS-232Cからの割り込み処理サブルーチンの開始行を指定します。
書式 |
CALL COM(["デバイス番号:"],GOSUB 行番号)
解説 |
RS-232Cから割り込みがかかると、指定されたサブルーチンが実行されます。
CALL COMON文を使って割り込みを許可してからデータが受信されると、実行中の文の実行が終わってからサブルーチンが実行されます。サブルーチンはRETURN文で終了します。サブルーチンの実行終了後は、割り込みがかかった時点で、実行していたステートメントの次のステートメントに実行が戻ります。
割り込み処理サブルーチンの実行中は、自動的にCOMSTOPとなり、COMOFFしないかぎり、RETURN文によってCOMON状態になります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。
行番号'
0から65529までの整数型定数で指定します。
文例 |
CALL COM(, GOSUB 10000)
もしくは
CALL COM("0:", GOSUB 10000)
デバイス番号0から割り込みがかかると行番号10000にGOSUBします。
CALL COMHELP
機能 |
COMINIのパラメータの指定方法がヘルプメッセージとして出力します。
書式 |
CALL COMHELP[("デバイス番号:")]
解説 |
次のようにメッセージを送信します。
Initialize statement options
CALL COMINI("
<device # {0,1,2,...9}>:
<character length {5,6,7,8}>
<parity {E,O,I,N}>
<stop bits {1,2,3}>
<XON/XOFF {X,N}>
<CTS hand-shake {H,N}>
<auto LF on recieve {A,N}>
<auto LF on transmit {A,N}>
<SI/SO {S,N}>
,<receive baud rate>
,<transmitter baud rate>
,<time out count>
Default:
CALL COMINI("0:8N1XHNNN"
,1200,1200,0)
CALL COMINI
機能 |
通信機能の初期設定をします。
書式 |
CALL COMINI[("[デバイス番号:][デバイス番号:][キャラクタ長[パリティ[ストップビット長[XON/XOFF制御[ダミー[受信LF[送信LF[SI/SO制御]]]]]]]]")[,[受信速度][,[送信速度],[タイムアウト]]]])]
解説 |
通信機能の初期設定をします。指定する文字は大文字でも小文字でもかまいません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9までの整数値を指定します。省略するときはコロン(:)まで省略します。
キャラクタ長
接続する機種に合わせて送信する1キャラクタのビット数を指定します。
5 | 5ビット | |
6 | 6ビット | |
7 | 7ビット | |
8(*) | 8ビット |
パリティ
パリティチェックの方法を指定します。
E | 偶数パリティ | |
O | 奇数パリティ | |
I | 受信時にパリティを無視する(キャラクタ長が5、6、7ビットの時に有効)。送信時にはパリティビットを0にする。 | |
N(*) | パリティを使用しない |
ストップビット長
ストップビットのビット数を指定します。
1(*) | 1ビット | |
2 | 1.5ビット | |
3 | 2ビット |
XON/XOFF制御
XON/XOFFによるフロー制御を行うかどうかを指定します。
X(*) | XON/OFF制御を行う | |
N | XON/OFF制御を行わない | |
XONコード=&H11、XOFFコード=&H13 |
RS/CS制御
受信バッファの空き領域が少なくなったときに、RSをOFFして相手側からの送信を中断させ、バッファが空くと、RSをONして送信を再開させます。CSがOFFだと、相手への送信を中断して、CSがONになると送信を再開します。
H(*) | RS/CS制御を行う | |
N | RS/CS制御を行わない |
受信LF挿入
CR(0DH)コードを受信したときに、CRコードとLF(0AH)コードに変換する制御です。
A | CRコードとLFコードに変換する | |
N(*) | CRコードとLFコードに変換しない |
送信LF削除
CR(0DH)コードの次にLF(0AH)コードを続けて送信するとき、LFコードを削除して、CRコードのみを送信する制御です。
A | LFコードを削除する | |
N(*) | LFコードを削除しない |
SI/SO制御
キャラクタ長が7ビットのときに、0A1Hコードから0FEHコードを送受信するときの制御を指定します。SI(0EH)コードによりG0集合を呼び出し、SO(0FH)コードによりG1集合を呼び出します。*1
G0集合とは21Hコードから7EHコードまでの集合を、G1集合とは0A1Hコードから0FEHコードまでの集合を指します。
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)に変換されて送信されるため、正常な更新が行われなくなる場合があります。
文例 |
CALL COMINI("0:8N1XHNNN",9600,,3)
この例は、RS-232Cを以下のように設定します。
デバイス番号 | 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を以下のように設定します。
デバイス番号 | 0 |
キャラクタ長 | 7ビット |
パリティ | E |
ストップビット長 | 2ビット |
XON/OFF制御 | N |
RS/CS制御 | N |
受信LF挿入 | A |
送信LF削除 | A |
SI/SO制御 | S |
受信速度 | 1200bps |
送信速度 | 1200bps |
送信タイムアウト | なし |
CALL COMOFF
機能 |
RS-232からの割り込みを禁止します。
書式 |
CALL COMOFF[("デバイス番号:")]
解説 |
CALL COMOFF文を実行後、RS-232Cにデータが来ても、割り込みは発生しません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはカッコごと省略します。
文例 |
CALL COMOFF
もしくは
CALL COMOFF("0:")
デバイス番号0をCOMOFFします。
CALL COMON
機能 |
RS-232からの割り込みを許可します。
書式 |
CALL COMON[("デバイス番号:")]
解説 |
CALL COMON文を実行後、RS-232Cにデータが来ると、COM GOSUB文で指定してある行番号が実行されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはカッコごと省略します。
文例 |
CALL COMON
もしくは
CALL COMON("0:")
デバイス番号0をCOMONします。
CALL COMSTAT
機能 |
RS-232Cのステータスを求めます。
書式 |
CALL COMSTAT(["デバイス番号:"],数値変数)
解説 |
RS-232Cのステータスを数値変数に代入します。
ステータスは数値変数値の下位16ビットが1か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 エラーあり |
文例 |
CALL COMSTAT(,F):PRINT BIN$(F)
もしくは
CALL COMSTAT("0:",F):PRINT BIN$(F)
デバイス番号0のステータスを数値変数Fに代入して、画面に2進数表示をします。
CALL COMSTOP
機能 |
RS-232Cからの割り込みを保留します。
書式 |
CALL COMSTOP[("デバイス番号:")]
解説 |
CALL COMSTOP文を実行後、RS-232Cにデータが来ても、CALL COMONが実行されるまで割り込みは保留されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。
文例 |
CALL COMSTOP
もしくは
CALL COMSTOP("0:")
デバイス番号0をCOMSTOPします。
CALL COMTERM
機能 |
ターミナルモードにします。
書式 |
CALL COMTERM[("[デバイス番号:]")]
解説 |
コンピュータをターミナルモードにします。ターミナルモードとは、MSXをホストコンピュータの入出力端末として使用するモードです。ターミナルモードでは、MSXはホストコンピュータから受信したデータをディスプレイに表示します。そして、キーボードから入力されたデータを、ホストコンピュータに送信します。
1.ターミナルモードの起動
1.接続する機器の仕様を確認する
2.CALL COMINI命令による初期設定を行う
3.CALL COMTERM命令で内蔵ターミナルソフトを起動する
RS-232CポートをOPENしている場合には、CLOSEしてからCALL COMTERM命令を実行してください。
2.ターミナルモードの使用方法
ターミナルモードでは、以下のキーを使って、オプション機能を設定できます。
表7.12 ターミナルモードのオプション機能一覧
キー | 機能 |
SHIFT+F1 | リテラルモードの切り換え |
SHIFT+F2 | エコーバックの切り換え |
SHIFT+F3 | プリンタエコーバックの切り換え |
STOP | ブレーク信号の送信 |
1.リテラルモード
SHIFT+F1でON、OFFを切り換えます。
SHIFT+F1を押すと、リテラルモードがONになります。ONの時には、コントロールコード(&H1F以下のコード)はハットマーク(^)とコントロールコードに40Hを足したコードの2文字で画面に表示されます。例えば&H01なら
^A
と表示されます。
XON・OFF制御を指定しているときは、XONとXOFFコードは表示されません。
もう一度、SHIFT+F1を押すと、リテラルモードはOFFになります。
2.ローカルエコーバック
SHIFT+F2でON、OFFを切り換えます。
SHIFT+F2を押すと、エコーバックがONになります。
ONの時には、キー入力した文字を送信すると同時に画面にも表示(エコーバック)します。
もう一度、SHIFT+F2を押すと、エコーバックはOFFになります。
3.プリンタエコーバック
SHIFT+F3でON/OFFを切り換えます。
SHIFT+F3を押すと、プリンタへのエコーバックがONになります。ONの時には、画面に出力したデータをプリンタにも出力します。
もう一度、SHIFT+F3を押すと、プリンタへのエコーバックはOFFになります。
4.ブレーク信号の送信
STOPキーを押してる間、ブレーク信号が送信されます。ブレーク信号とは、データ信号線(SD)がOFFになる状態です。
5.ターミナルモードの終了
CTRL+STOPキーを押すとターミナルモードは終了します。
ターミナルモードでは、
F6 リテラルモードのON/OFF
F7 エコーバックのON/OFF
F8 プリンタエコーのON/OFF
となり、その機能の略号が画面に表示されます。そのほかのファンクションキーは、画面に表示されているファンクションキーの内容をそのまま送信します。
注意 |
MSXでは、画面表示の際に、DELコードとBS(バックスペース)コードは同じ扱いをします。ホストコンピュータと接続した場合、ホストコンピュータによっては、行の先頭にDELコードを送信するものがあり、画面表示が乱れることがあります。その場合、ホストコンピュータがDELコードを送信しないように設定する必要があります。DELコードの送信を止めることができないホストコンピュータと更新する場合は、ターミナルモードは使用できません。データの交信を行うプログラムを作成して、そこでDELコードの処理をしてください。
3.ターミナルモードの例
call comini
Ok
call comterm
この例は、RS-232Cを以下のように設定して、内蔵のターミナルソフトを起動する例です。
デバイス番号 | 0 |
キャラクタビット | 8ビット |
パリティ | N |
ストップビット長 | 1ビット |
XON/OFF制御 | X |
RS/CS制御 | H |
受信LF挿入 | N |
送信LF削除 | N |
SI/SO制御 | H |
受信速度 | 1200bps |
送信速度 | 1200bps |
送信タイムアウト | 0 |
設定の意味は、COMINIの項をご参照下さい。
4.エスケープシーケンス
RS-232Cの内蔵ターミナルソフトがサポートするエスケープシーケンスは以下の通りです。
カーソル移動
<ESC>A | カーソルを上に移動 |
<ESC>B | カーソルを下に移動 |
<ESC>C | カーソルを右に移動 |
<ESC>D | カーソルを左に移動 |
<ESC>H | カーソルをホームポジションに移動 |
<ESC>Y<Y座標+20H><X座標+20H> | |
カーソルを(X,Y)の位置に移動 |
編集・削除
<ESC>j | 画面をクリア |
<ESC>l | 行全体を削除 |
<ESC>E | 画面をクリア |
<ESC>K | 行の終わりまで削除 |
<ESC>J | 画面の終わりまで削除 |
<ESC>L | 1行挿入 |
<ESC>M | 1行削除 |
その他
<ESC>x4 | カーソルの形を「■」にする |
<ESC>x5 | カーソルを消す |
<ESC>y4 | カーソルの形を「_」にする |
<ESC>y5 | カーソルを表示する |
LOAD
機能 |
プログラムを受信します。
書式 |
LOAD "COM[デバイス番号]:"[,R]
解説 |
RS-232CからASCII形式のBASICプログラムをロードします。EOF(&H1A)コードを受信するとロードを終了します。ロードする前のプログラムは消え、Rオプションを指定していなかった場合、開いているファイルは閉じられます。通信誤りが検出された場合、
Device I/O error
のエラーメッセージが表示されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。
Rオプション
ロード終了後に、プログラムが実行されます。開いているファイルは閉じません。
文例 |
LOAD "COM:"
デバイス番号0からASCII形式のBASICプログラムをロードします。
MERGE
機能 |
プログラムを受信してメモリ上のプログラムとマージ混合します。
書式 |
MERGE "COM[デバイス番号]:"
解説 |
RS-232CからASCII形式のBASICプログラムをロードします。このときロードする前のプログラムは消去されずに、ロードされたプログラムと合併されます。EOF(&H1A)コードを受信すると、ロードを終了します。ロードする前のプログラムと同じ行番号がある場合は、ロードされたプログラムの行が残ります。通信誤りが検出された場合、
Device I/O error
のエラーメッセージが表示されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。
文例 |
MERGE "COM:"
デバイス番号0からASCII形式のBASICプログラムをロードしてマージします。
RUN
機能 |
プログラムを受信した後に実行を開始します。
書式 |
RUN "COM[デバイス番号]:"[,R]
解説 |
RS-232CからASCII形式のBASICプログラムをロードして実行します。EOF(&H1A)コードを受信するとロードを終了します。ロードする前のプログラムは消去され、Rオプションを指定していなかった場合、開いているファイルは閉じられます。通信誤りが検出された場合、
Device I/O error
のエラーメッセージが表示されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。
Rオプション
ロード終了後に、プログラムが実行されます。開いているファイルは閉じません。
文例 |
RUN "COM:"
デバイス番号0からASCII形式のBASICプログラムをロードして実行します。
SAVE
機能 |
プログラムを送信します。
書式 |
SAVE "COM[デバイス番号]:"
解説 |
RS-232CにASCII形式のBASICプログラムを送出します。通信誤りが検出された場合、
Device I/O error
のエラーメッセージが表示されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。
文例 |
SAVE "COM:"
デバイス番号0からASCII形式のBASICプログラムを送出します。
CLOSE
機能 |
RS-232C用ファイルをクローズします。
書式 |
CLOSE [[#]ファイル番号[,[#]ファイル番号]...]
解説 |
OPEN文でオープンされたファイル番号をクローズします。クローズしたファイル番号は、次にオープンするとき使用できます。ファイルが送信モードでオープンされている場合には、クローズするとEOFコードが送信されます。RUN、END、CLEAR、NEWなどのコマンドを実行した場合も、クローズされます。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。省略すると全てのファイル番号がクローズされます。
文例 |
CLOSE #1,#2
ファイル番号1と2をクローズします。
CLOSE
全てのファイル番号をクローズします。
INPUT#
機能 |
数値や文字を受信して変数に代入します。
書式 |
INPUT #ファイル番号,変数[,変数]...
解説 |
RS-232Cからデータを受信して、変数に代入します。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
変数
整数型定数、文字型変数、数値型配列変数、文字型配列変数を使用できます。
LINE INPUT#とは以下の点が異なります。
文例 |
10 OPEN "COM:" FOR INPUT AS #1
20 IF EOF(1) THEN GOTO 50
30 INPUT #1,A$:PRINT A$
40 GOTO 20
50 CLOSE #1
60 END
ファイル番号1からデータを取得して文字型変数A$に代入して表示します。
LINE INPUT#
機能 |
254文字までの文字を受信して文字型変数に代入します。
書式 |
LINE INPUT #ファイル番号,変数
解説 |
RS-232CからCRコードまでの文字列データを取得して、文字型変数に代入します。
INPUT#文と異なり、データの区切りはCRコードのみ有効です。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
変数
文字型変数、文字型配列変数を使用できます。
文例 |
10 OPEN "COM:" FOR INPUT AS #1
20 IF EOF(1) THEN GOTO 60
30 LINE INPUT #1,A$
40 PRINT A$
50 GOTO 20
60 CLOSE #1
70 END
ファイル番号1からデータを取得して文字型変数A$に代入して表示します。
OPEN
機能 |
RS-232C用ファイルをオープンします。
書式 |
OPEN "COM[デバイス番号]:"[FORモード] AS [#]ファイル番号
解説 |
RS-232Cでデータの送受信をする前に、RS-232C用のファイルをオープンして、ファイル番号を割り当てます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。
モード
OPEN時のモードを指定します。
OUTPUT 送信モード
出力用に使用します。CLOSEするときに、EOF(&H1A)コードが送信されます。
INPUT 受信モード
入力用に使用します。EOF(&H1A)コードを受信すると、それ以降のデータを受信することはできなくなりますから、必要な場合は、一度クローズして、オープンしなおしてください。EOFコードを受信したかどうかは、EOF関数で判ります。EOFコードは取得できません。
省略したとき 送受信モード
CLOSEしてもEOFコードは送信されません。また、EOF(1AH)コードを受信しても、そのまま渡されます。EOF関数では必ず0を返します。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。すでにオープンしているファイル番号を使用することはできません。
文例 |
OPEN "COM:" FOR OUTPUT AS #1
デバイス番号0を送信モードでファイル番号1としてオープンします。
PRINT#
機能 |
数値や文字を送信します。
書式 |
PRINT #ファイル番号,[式[セパレータ 式]...]
解説 |
式で指定したデータをRS-232C用へ送信します。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
式
文字型、数値型の定数、変数、配列変数、式などが使用できます。
■数値
最初に1個の空白(数値が正のとき)かマイナス符号が送信され、次に数字が文字列に変換され、最後に1個が出力されます。
■文字列
文字列が文字数だけ出力されます。
セパレータ
カンマ(,)とセミコロン(;)を使用できます。省略した場合には、CRコードとLFコードが出力されます。
■カンマ(,)
次のタブ位置までスペースを入れる。
■セミコロン(;)
何も出力せず、直後に次のデータを出力する。
文例 |
10 OPEN "COM:" FOR OUTPUT AS #1
20 A$="ABC":B$="DEF"
30 PRINT #1,A$,B$
40 PRINT #1,A$,B$
50 PRINT #1,+50,-50
60 CLOSE
70 END
ファイル番号1に文字型変数の内容および数値型定数を送信します。実行結果は次のようになります。
ABC DEF
ABCDEF
50 -50
PRINT # USING
機能 |
書式付きPRINT#
書式 |
PRINT#ファイル番号、USING 書式記号; 式[,式]…
解説 |
式で指定したデータを指定した書式で、RS-232Cへ送信します。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
書式記号
■文字列を編集するもの。
! | 文字列の左側1文字を表示する。 |
&空白& | 文字列の左側から、指定した空白の数+2文字を表示する。 |
@ | @を編集用として指定した文字列で置き換える。 |
# | 数値を#で指定した桁数だけ表示する。 |
. | 小数点の位置を指定する。 |
+- | 数値に正負符号をつける。書式の左端につけると数値の前に、右端につけると数値の後ろに正負符号をつける(ただし、-は左端にはつけられない)。 |
** | 書式の左端を**にしておくと、数値の整数部の桁数が書式の指定より小さいときに、小さい分だけ*が表示される。 |
\\ | 書式の左端を\\にしておくと、数値の直前に\がつけられる。\\は指数形式の書式指定をしているときには使えない。 |
**\ | 書式の左端を**\しておくと、数値の直前に\がつけられ、整数部の桁数が書式の指定より小さいときに、小さい分だけ*が表示される。**\は指数形式の書式指定をしているときには使えない。,を整数部の#と#の間、あるいは小数点の左側に置いたときには、整数部が3桁ごとにカンマで区切られて表示される。,は指数形式の書式指定をしているときには使えない。 |
^^^^ | ^^^^を#の後ろにつけると、数値が指数形式で表示される。書式に+または-を指定していない場合、数値が正ならば数値の前に空白が1つ、負なら数値の前に-が表示される。 |
% | 表示しようとする編集済みの数値が書式で指定した桁数より大きいと、数値の前に%がつけられる。 |
書式の中にこれらの記号以外の文字を置くと、文字の位置に応じて数値の前や後ろにその文字が表示されます。
式
文字型、数値型の定数、変数、配列変数、式などが使用できます。
文例 |
10 A$="MSX-RS232C"
20 OPEN "COM:" FOR OUTPUT AS #1
30 PRINT #1,USING "":A$
40 L=LEN(A$):IF L=1 THEN GOTO 70
50 A$=RIGHT$(A$,L-1)
60 GOTO 30
70 CLOSE #1
80 END
ファイル番号1に文字型変数A$の文字列から左側1文字ずつを送信します。
M
S
X
-
R
S
2
3
2
C
EOF
機能 |
EOFコード(&H1A)が受信されたかどうかを求めます。
書式 |
EOF(ファイル番号)
解説 |
EOF(&H1A)コードが受信され、それ以前のデータ全てをINPUT$などにより読み込まれた場合は-1を、それ以外なら0を返します。送受信モードでオープンした場合には必ず0が返ります。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
文例 |
IF EOF(1) THEN CLOSE#1
ファイル番号1の最後のデータが読み取られたら、そのファイルを閉じます。
INPUT$
機能 |
指定した数の文字を受信します。
書式 |
INPUT$(文字数,[#]ファイル番号)
解説 |
RS-232Cから指定した数の文字を受信します。
文字数
1から255までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
文例 |
10 OPEN "COM:" FOR INPUT AS #1
20 IF LOC(1)>=50 THEN X$=INPUT$(50,#1) ELSE GOTO 20
30 PRINT X$
40 GOTO 20
ファイル番号1から50文字を文字型変数X$に代入して表示します。
LOC
機能 |
受信バッファの未取得文字数を求めます。
書式 |
LOC(ファイル番号)
解説 |
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
文例 |
10 OPEN "COM:" FOR INPUT AS #1
20 IF LOC(1)>=1 THEN X$=INPUT$(1,#1) ELSE GOTO 50
30 PRINT X$
40 GOTO 20
50 IF EOF(1) THEN CLOSE #1 ELSE GOTO 20
60 END
ファイル番号1から未取得文字数を求めて1文字を文字列型変数X$に代入して表示します。
LOF
機能 |
受信バッファの残りバイト数を求めます。
書式 |
LOF(ファイル番号)
解説 |
ファイル番号
1からMAXFILES文で指定された数までの整数値を指定できます。整数型定数、変数、配列変数、式などを使用できます。OPEN文で受信用もしくは送受信用にオープンしたファイル番号を指定します。
文例 |
10 X0$=CHR$(&H11):X1$=CHR$(&H13)
20 CALL COMINI("0:8N1NNNN",300,,0)
30 OPEN "COM:" AS #1
40 IF LOC(1)=12 THEN X$=INPUT$(1,#1) ELSE GOTO 40
50 PRINT X$
60 IF LOF(1)<=32 THEN PRINT #1,X1$
70 IF LOF(1)>=120 THEN PRINT #1,X0$
80 GOTO 40
ファイル番号1の受信バッファの残りバイト数を求めて、32バイト以下になったらXOFFを送信し、120バイト以上になったらXONを送信します。
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情報エリア用のワークエリア(64バイト)をとる
- 以下の設定を行い、FFCAH番地をコールする
コール手順 |
D | デバイス番号 (8) | |
MSX RS-232C拡張BIOSのデバイス番号は8 | ||
E | ファンクション番号 (0) | |
B | RETURN情報エリアのスロットアドレス | |
スロットアドレスは、システムワークエリアに保存されている | ||
HL | RETURN情報エリアの先頭アドレス |
RAMのスロットアドレスは以下のワークエリアに保存されています。このワークエリアはディスクが接続されているシステムで有効です。
表7.13 RAMのスロットアドレス
ページ | ワークエリアのアドレス |
0 | F341H |
1 | F342H |
2 | F343H |
3 | F344H |
戻り値 |
B | 次のRETURN情報エリアのスロットアドレス | |
HL | 次のRETURN情報エリアの先頭アドレス |
変更レジスタ |
F |
RETURN情報はアプリケーションが指定した領域に次のように格納されます。
RS-232Cが無いときは、BレジスタとHLレジスタの内容が変わらずに返ってきます。
スロットアドレスの表現はMSX共通で以下の通りです。
拡張BIOSを使用する場合は、この拡張BIOSコールで得られたジャンプテーブルをインタースロットコールなどにより呼び出し、目的のBIOSを使用します。
2.BIOSジャンプテーブル
MSX RS-232C拡張BIOSは以下に示すジャンプテーブルを持っています。アプリケーションソフトウェアはインタースロットコール等で各エントリを呼び出すことにより、BIOSの各機能を利用できます。
EXBTBL: DEFB DVINFB ; Device information DEFB DVTYPE ; Device type DEFB 0 ; Reserved JP INIT ; Initialize RS-232C port JP OPEN ; Open RS-232C port JP STAT ; Read status JP GETCHR ; Receive data JP SNDCHR ; Send data JP CLOSE ; Close RS-232C port JP LOC ; Reports the number of characters ; in the receiver buffer JP LOF ; Reports the number of free spaces ; left in the receiver buffer JP BACKUP ; Back up a character JP SNDBRK ; Send break character JP DTR ; Trun DTR(ER) line on/off ; (multi type only) RET ; Reserved for MODEM cartridge RET ; Reserved for MODEM cartridge RET ; Reserved for MODEM cartridge RET ; Reserved for MODEM cartridge RET ; Reserved for MODEM cartridge RET ; Reserved for MODEM cartridge
DVINFB
DVINFBは以下の構成でそのカートリッジの仕様を表します。
各ビットは1でその機能があることを示し、0でないことを示します。
DVTYPE
DVTYPEが0であればシングルチャンネルタイプのRS-232Cカートリッジです。この場合はSETCHNのエントリはありません。
DVTYPEが0以外であればマルチチャンネルタイプのRS-232Cカートリッジです。
3.BIOSの各機能
MSX RS-232C拡張BIOSの各機能はインタースロットコールにより呼び出されます。インタースロットコール(CALSLT)の呼び出しアドレスは001CHです。
コール手順 |
IY | 上位8ビットにスロットアドレス | |
IX | 呼び出しアドレス |
その他のレジスタは機能により異なります。各項を参照してください。
INIT
機能 |
RS-232C拡張BIOSをイニシャライズします。
コール手順 |
B | パラメータテーブルのスロットアドレス | |
HL | パラメータテーブルのアドレス |
オフセット+0から+7はASCIIキャラクタ、+8から+12まではバイナリです。
ASCIIキャラクタはすべて大文字とします。
戻り値 |
CYフラグ | パラメータの指定に間違いがある場合、1にセットされます。 |
変更レジスタ |
AF
解説 |
イニシャライズデータの意味を説明します。
キャラクタ長
通信データのビット長を指定します。
5 | 5ビット |
6 | 6ビット |
7 | 7ビット |
8 | 8ビット |
パリティ
データに付加するパリティの指定をします。
N | パリティなし | |
E | 偶数パリティ | |
O | 奇数パリティ | |
I | 送信時にはパリティビットは0 | |
受信時には無視する |
ストップビット
ストップビット長を指定します。
1 | ストップビット1ビット |
2 | ストップビット1.5ビット |
3 | ストップビット2ビット |
XON/XOFF制御
XON/XOFF制御を行うかどうかの指定します。
X | XON/XOFF制御を行う |
N | 行わない |
説明抜け
RS/CS制御
RS/CS制御を行うかどうかの指定です。Hが指定されると、キャラクタを送信するときに、CSがチェックされます。
H | RS/CS制御を行う |
N | 行わない |
説明抜け
受信LF挿入
CR(0DH)コードを受信したときにそのあとにLF(0AH)が受信されたものとみなす制御を行うかどうかの指定です。
A | LFを挿入する |
N | 挿入しない |
送信LF挿入
CR(0DH)コードを送信した直後のLF(0AH)コードは送信せずに捨てる制御を行うかどうかの指定です。
A | LFを削除する |
N | 削除しない |
SI/SO制御
データ長が7ビットのときに0AHコードから0FFHのコードを送受信するとき文字セットの切り換えの制御を行うかどうかの指定です。SI(0FH)コードによりG0集合を呼び出し、SO(0EH)コードによりG1集合を呼び出します。
S | SI/SO制御を行う |
N | 行わない |
受信/送信速度
通信速度をビット/秒で以下の中から指定します。
50、75、110、300、600、1200、1800、2000、2400、3600、4800、7200、9600、19200
なお、受信速度、送信速度はそれぞれ別に設定できます。
送信タイムアウト
データを送信するときに、XOFFコードが受信されていたりCSがOFFだったりしてデータが送信できない場合の待ち時間を指定します。単位は秒で範囲は0から255までです。0を指定した場合はタイムアウトせずに送出できるまで待ち続けます。
解説 |
このエントリは他の機能を呼び出す前に、必ず一度は呼び出されなくてはなりません。
OPEN
機能 |
RS-232Cをオープンします。
コール手順 |
HL | FCBのアドレス(8000H番地以上のアドレスを指定する) | ||
C | バッファ長(範囲は32文字〜127文字) | ||
E | オープンモード | ||
1 | <INPUT>モード | ||
2 | <OUTPUT>モード | ||
4 | <RAW> and <INPUT/OUTPUT>モード |
FCBの取り方
戻り値 |
CYフラグ | オープンモードが正しくない場合は1にセットされます。 |
変更レジスタ |
AF
解説 |
この機能はRS-232Cのすべての入出力処理に先立って行う必要があります。FCBエリアは9バイトのワークエリアと受信するデータの2倍の長さのバッファが必要です。
受信データは受信データそのものと、エラー情報の2バイト構成でバッファに格納されます。子のバッファ長はCレジスタで指定されます。FCBエリアは8000H番地以上に置かなければいけません。これはRS-232Cカートリッジが割り込みによって呼び出されたときに、スロット間リード/ライトによるオーバーヘッドを避けるためにFCBエリアを直接アクセスしているためです。
STAT
機能 |
ハードウェアの状態を返します。
コール手順 |
なし
戻り値 |
HL | ステータス | |||||||||||||||
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を返します。
(*)のビットは読み出されるとリセットされます。
変更レジスタ |
なし
GETCHR
機能 |
受信バッファから文字を読み出します。
コール手順 |
なし
戻り値 |
A | 受信文字 |
Sフラグ | エラーがある場合1にセットされます。 |
CYフラグ | オープンモードが1(Input mode)で、文字がEOFコードである場合1にセットされます。 |
変更レジスタ |
なし
解説 |
このBIOSを呼び出す時は、LOCを使用して受信バッファに文字があるかどうかを調べて、文字がある場合にのみ呼び出せます。文字がない状態で呼び出したときの結果は、保証しません。
SNDCHR
機能 |
RS-232Cに文字を送出します。
コール手順 |
A | 送信文字 |
戻り値 |
Cフラグ | XOFFを受信していたりCSがONになっていなかったりしたときに、CTRL+STOPが押されると1にセットされます。 |
Zフラグ | XOFFを受信していたりCSがONになっていなかったときに、INITで指定された時間が経過しても待機条件がクリアされなかった場合、タイムアウトして、1にセットされます。 |
変更レジスタ |
AF
解説 |
タイムアウトエラーが発生したとき、およびCTRL+STOPキーが押された場合、文字は送出しません。
CLOSE
機能 |
RS-232Cポートをクローズします。
コール手順 |
なし
戻り値 |
OPEN時にOutputモードに設定されていた場合
CYフラグ | XOFFを受信していたりCSがONになっていなかったりしたときに、CTRL+STOPが押されると1にセットされます。 |
Zフラグ | XOFFを受信していたりCSがONになっていなかったときに、INITで指定された時間が経過しても待機条件がクリアされなかった場合、1にセットされます。 |
OPEN時にInputモードに設定されていた場合
なし
変更レジスタ |
AF
解説 |
FCBが解放されます。OPEN時にOUTPUTモードの指定がされていた時は、EOFコード(1AH)が送出されます。
タイムアウトエラーが発生する可能性があるのは、このEOFコードを送出するときだけです。
CLOSEされると、ハードウェアの受信割り込みが禁止されます。
EOF
機能 |
次の受信文字がEOFかどうかをチェックします。
コール手順 |
なし
戻り値 |
HL | EOFの場合、-1でさらにキャリーフラグが1にセットされます。 | ||
EOFでない場合もしくはまだ受信バッファに文字がない場合、0でさらにキャリーフラグが0にリセットされます。 | |||
RAWモードでRS-232Cポートがオープンされたときは、EOFは常に0で、キャリーフラグが0にリセットされます。 |
変更レジスタ |
AF
LOC
機能 |
受信バッファの中にある文字数を返します。
コール手順 |
なし
戻り値 |
HL | 受信バッファ内の文字数 |
変更レジスタ |
AF
解説 |
この機能が返す値にはバックアップされていた文字が含まれます。デバイスがInputモードでオープンされている場合にはEOF以降の文字は含まれません。ただし、この文字もバッファのスペースを必要とします。
LOF
機能 |
文字を受信バッファに戻します。これは1文字のみ可能です。
コール手順 |
なし
戻り値 |
HL | 受信バッファの空き容量 |
変更レジスタ |
AF
解説 |
この機能が返す値は、OPENの時に指定した受信バッファの文字数から上記LOCの値を引いた値に1を加えた(バックアップ文字の文)値です。
BACKUP
機能 |
文字を受信バッファに戻します。これは1文字のみ可能です。
コール手順 |
C | バックアップする文字 |
戻り値 |
なし
変更レジスタ |
AF
SNDBRK
機能 |
指定した数のブレーク文字を送出します。
コール手順 |
DE | 送出するブレーク文字数 |
戻り値 |
Cフラグ | CTRL+STOPが押されると1にセットされます。 |
変更レジスタ |
AF、DE
DTR
機能 |
DTR(ER)をON/OFFします。
コール手順 |
A | コントロール指定 |
0 | DTR(ER)をOFFします。 |
0以外 | DTR(ER)をONします。 |
戻り値 |
なし
変更レジスタ |
F
SETCHN
機能 |
マルチチャンネルタイプのRS-232Cカートリッジで、制御の対象とするチャンネルを指定します。
コール手順 |
E | チャンネル番号 |
戻り値 |
Cフラグ | チャンネル番号が正しくない場合に1が返されます。 |
変更レジスタ |
AF、BC
解説 |
チャンネル番号はリセット時に0に設定されます。
注意 |
ここでのチャンネル番号は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>