※ ※ このページは書きかけです。以下の可能性があります。 ※ ・誤字、脱字等のチェックをおこなっていません。 ※ ・テキスト、表などフォーマットがされていない。 ※ ・画像が抜けている。 ※
2.1 ハードウェア
2.1.1 基本構成
MSX MODEMの基本ハードウェア構成は下図のとおりです。シリアルインターフェイスとしてi8251相当、ROM 32Kバイト、RAM(バッテリバックアップ)8Kバイト、NCU制御のためのパラレルポートとしてi8255相当を基本前提としています。ただし、後述のBIOSにより、この基本ハードウェアとは異なった構成のハードウェアにも移植が可能です。
短縮ダイヤルやシステムの設定値を記憶するためのバッテリバックアップされたCMOS RAMはオプション設定とします。ソフトウェアではファイルとしてのデータアクセスをサポートするため容量は任意ですが、ディレクトリ領域を必要とすることなどから少なくとも2Kバイト程度が実用限界と思われます。単にシステムのコンフィギュレーションを記憶しておくメモリスイッチとしてなら必要最小限の容量でも動作可能です。なお、短縮ダイヤル用メモリは1件につき約100バイト程度の容量が必要です。
2.2 NUCの構成
NCUは図7.9のハードウェアを想定しています。この図は想定しているすべてのハードウェア機能を記載していますので、必ずしもこのような構成が実際的であるわけではありません。
2.3 メモリの構成
MSX MODEMのシステムソフトウェアが実行するためには、図7.10で示すメモリ構成が必要です。ここでいうBANKとはMSX本来のBANKではなく、同一スロット内でローカルに拡張されたBANKを意味します。
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
機能 |
電話回線にブレーク信号を送出します。 |
書式 |
CALL COMBREAK[("デバイス番号:"],式)] |
解説 |
式で指定された文字数文のブレーク信号を電話回線に出力します。ブレーク信号送出中、すべての送出データは強制的に0になります。 | |
CALL COMBREAK文を実行する前にOPEN文でCOM用のファイルがオープンされていなければ「File not open」になります。 | |
デバイス番号 | |
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。省略するときはコロン(:)まで省略します。 | |
式 | |
数値定数、変数、配列変数、式で指定します。指定できる範囲は3から32767までの値です。省略した場合は1、0になります。 |
文例 |
CALL COMBREAK("0:",20) | |
20文字分のブレイク信号を電話回線に出力します。 |
CALL COM GOSUB
機能 |
通信用ポートから割り込みがかかると指定したサブルーチンへ実行を移します。
書式 |
CALL COM(["デバイス番号:"],GOSUB 行番号)
解説 |
CALL COMON分を使って割り込みを許可してから、データが受信されると、割り込みがかかり、行番号で指定されたサブルーチンに実行が移ります。サブルーチンはRETURN文で終了します。サブルーチンの実行終了後は割り込みがおこった時点で実行していたステートメントの次のステートメントに戻ります。
サブルーチン実行中は自動的にCOMSTOP状態になり、サブルーチン内でCOMOFFしないかぎり、RETURNによってCOMON状態になります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
行番号'
0から65529までの整数型定数で指定します。
文例 |
CALL COM("0:", GOSUB 1000) デバイス番号0から割り込みがかかると、行番号1000で始まるサブルーチンを実行します。
CALL COM(, GOSUB 2000) デバイス番号0から割り込みがかかると、行番号2000で始まるサブルーチンを実行します。
CALL COMHELP
機能 |
COMINIのHELPメッセージを表示します。
書式 |
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}> <1 dummy {any character}> <auto LF on receive {A,N}> <auto LF on transmit {A,N}> <SI/SO {S,N}> , <receive speed(BPS)> , <send speed(BPS)> , <time out count> ) Default: CALL COMINI("0:8NIX NNN",300, 300 ,0)
デバイス番号
省略するとデバイス番号は0と見なされます。
文例 |
CALL COMHELP("0:") CALL COMHELP デバイス番号0にさしこんである通信カートリッジのCOMINI文で設定できる通信モードの項目を表示します。
CALL COMINI
機能 |
通信回線の初期化を行います。
書式 |
CALL COMINI[("[デバイス番号:][デバイス番号:][キャラクタ長[パリティ[ストップビット長[XON/XOFF制御[ダミー[受信LF[送信LF[SI/SO制御]]]]]]]]")[,[受信速度][,[送信速度],[タイムアウト]]]])]
解説 |
通信に必要なパラメータの設定を行います。COMINIを実行しなくても電源投入時、RESET時に省略値で初期設定されます。
デバイス番号
0(*)〜9までの整数値を指定します。省略するときはコロン(:)まで省略します。省略するとデバイス番号は0:になります。
キャラクタ長
接続する機種に合わせて送信する1キャラクタのビット数を5,6,7,8の範囲で指定します。省略するとキャラクタ長は8になります。
パリティ
パリティチェックの方法を指定します。
ストップビット長
ストップビットのビット数を指定します。
XON/XOFF制御
XON/XOFFによるフロー制御を行うかどうかを指定します。
ダミー
RS-232Cの拡張BASICと互換性を持たせるためのダミーデータです。スペースを設定してください。
受信LF挿入
CR(0DH)コードを受信したときに、CRコードとLF(0AH)コードに変換する制御です。
送信LF削除
CR(0DH)コードの次にLF(0AH)コードを続けて送信するとき、LFコードを削除して、CRコードのみを送信する制御です。
SI/SO制御
キャラクタ長が7ビットのときに、080Hから0FFHコードに対してSI/SO制御の指定を行います。
送信速度
送信側の速度を設定します。その速度がサポートされていない場合はシステムのデフォルト値または指定速度より遅いモデムの速度に読み替えられます。
受信速度
受信側の速度を設定します。その速度がサポートされていない場合はシステムのデフォルト値または指定速度より遅いモデムの速度に読み替えられます。
タイムアウト
XON/XOFFコントロールの待ち時間を0(*)〜255の整数値で指定します。単位は約1秒です。省略した場合や、0を指定した場合はタイムアウトしません。
文例 |
CALL COMINI("0:8N1X")
デバイス番号 0
キャラクタ長 8ビット
パリティ なし
ストップビット長 1ビット
XON/XOFF制御 あり
受信LF挿入 なし
送信LF削除 なし
SI/SO制御 なし
CALL COMINI("7E3N AAS")
デバイス番号 0
キャラクタ長 7ビット
パリティ 偶数
ストップビット長 2ビット
XON/XOFF制御 なし
受信LF挿入 あり
送信LF削除 あり
SI/SO制御 あり
CALL COMOFF
機能 |
通信用ポートからの割り込みを禁止します。
書式 |
CALL COMOFF[("デバイス番号:")]
解説 |
通信用ポートからの割り込みを禁止します。CALL COMOFF後に通信ポートデータが来ても割り込みは発生しません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはカッコごと省略します。
文例 |
CALL COMOFF("0:")
または
CALL COMOFF
デバイス番号0での割り込みを禁止します。
CALL COMON
機能 |
通信用ポートからの割り込みを許可します。
書式 |
CALL COMON[("デバイス番号:")]
解説 |
CALL COMON実行後に通信ポートにデータが来ると割り込みが発生し、CALL COM GOSUB文で指定してある行のサブルーチンが実行されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
文例 |
CALL COMON("0:")
または
CALL COMON
デバイス番号0にデータが来ると、割り込みが発生します。
CALL COMPROTOCOL
機能 |
ファイル転送に用いるプロトコルを決定します。
書式 |
CALL COMPROTOCOL[(["デバイス番号:][プロトコル]"],タイマ1][,タイマ2?)]
解説 |
ファイル転送に用いるプロトコルを決定します。COMINIを実行しなくても電源投入時、RESET時に省略値で初期設定されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
プロトコル
T | テキスト転送(EOFを処理する)(*) |
R | テキスト転送(たれ流し) |
X | XMODEM(チェックサム) |
C | XMODEM(CRCチェック) |
タイマ1
プロトコルがTおよびRの場合は送出する文字間の時間となります。この値は1/60秒単位となります。省略時は0とします。
プロトコルがXおよびCの場合はXMODEMプロトコルのタイムアウト値となり、秒単位で指定します。省略時は10とします。
数値型変数、変数、配列変数、式で指定できます。
タイマ2
プロトコルがTおよびRの場合は送出する行間の時間となります。この値は1/60秒単位となります。省略時は0とします。
プロトコルがXおよびCの場合はXMODEMプロトコルのブロック監視タイマ値となり、秒単位で指定します。省略時は20とします。
数値型変数、変数、配列変数、式で指定できます。
COMTERMでファイルのUP/DOWNLOADを行う時、次のようにXON/XOFF制御の設定を行います。
T | XON/XOFF制御あり |
R | XON/XOFF制御あり |
X | XON/XOFF制御なし |
C | XON/XOFF制御なし |
文例 |
CALL COMPROTOCOL("0:T") デバイス番号0の通信カートリッジでファイルをテキスト転送します。
CALL COMSTAT
機能 |
通信用ポートのステータスを求めます。
書式 |
CALL COMSTAT(["デバイス番号:"],数値変数)
解説 |
通信用ポートのステータスを2バイトの数値型データとして返し、数値変数に代入します。
数値変数
整数型変数で、各ビットの意味は次のとおりです。
ビット0
キャリア信号の検出
ビット1
被呼表示(リングインジケータ)の検出
ビット2
ブレーク信号の検出
ビット3
データセットレディ
ビット4
NCU機能
ビット5
未使用(常に0)
ビット6
未使用(常に0)
ビット7
未使用(常に0)
ビット8
未使用(常に0)
ビット9
Long loop検出
ビット10
CTRL+STOPキー検出
ビット11
パリティエラー
ビット12
オーバーランエラー
ビット13
フレーミングエラー
ビット14
タイムアウトエラー
ビット15
オーバフローエラー
CALL COMSTAT文を実行する前に、OPEN文でCOM用のファイルがオープンされていなければ「File not open」になります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
CALL COMSTAT文を実行する前に、OPEN文でCOM用のファイルがオープンされていなければ「File not open」になります。
文例 |
CALL COMSTOP
機能 |
通信用ポートからの割り込みを保留します。
書式 |
CALL COMSTOP[("デバイス番号:")]
解説 |
CALL COMSTOP実行後に通信用ポートにデータが来ても次にCALLCOMONが実行されるまで割り込みが保留されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
文例 |
CALL COMSTOP("0:") または CALL COMSTOP デバイス番号0からの割り込みを保留します。
CALL COMTERM
機能 |
ターミナルモードに切り換えます。
書式 |
CALL COMTERM[("[デバイス番号:][文字セット[インターレース[漢字コード[DEL受信処理]]]]")]]
解説 |
コンピュータをターミナルモードに切り替えます。この時、回線はモデム側に切り替えます。また、HOOKはOFFに切り替えます。回線が接続されていない場合は、「Device I/O Error」となります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
文字セット
表示に使用する文字フォントを指定します。
インターレース
ノンインターレースかインターレースかを指定します。インターレースの指定はMSX2、MSX2+で文字セットが漢字、グレイスケール漢字、および12ドット数字の時有効で、その他の時は無視します。
漢字コード
漢字コードを指定します。漢字コードの指定は文字セットが漢字、グレースケール漢字、および12ドット漢字で、日本語入力フロントエンド(MSX-JE)がサポートされているときのみ有効です。それ以外の時は無視されます。
DEL受信処理
1.ターミナルモードの使用方法
ターミナルモードでは、以下のキーを使って、オプション機能を設定できます。
表7.14 ターミナルモードのオプション機能
キー | 機能 |
SHIFT+F1 | リテラルモードの切り換え |
SHIFT+F2 | エコーバックの切り換え |
SHIFT+F3 | プリンタエコーバックの切り換え |
STOP | ブレーク信号の送信 |
SHIFT+F4 | アップロード |
SHIFT+F5 | ダウンロード |
SHIFT+SELECT | ターミナルモードの一時中断 |
GRAPH+SELECT、 | 日本語入力フロントエンド実行/終了 |
CTRL+SPACE |
1.リテラルモード
SHIFT+F1でON、OFFを切り換えます。
ONの時は、アスキーコードの1FH以下に割り当てられているコントロールコードは、すべてはっとマーク(^)とコントロールコードに40Hを足したコードであらわされる文字として画面に表示されます。例えば、CRコード(0DH)は、
^M
と画面に表示されます。(Mのコードは4DH)
XON/OFF制御を指定しているときは、XONとXOFFコードは表示されません。
もう一度、SHIFT+F1を押すと、リテラルモードはOFFになります。
2.ローカルエコーバック
SHIFT+F2でON、OFFを切り換えます。
ONの時は、キーボードから入力したデータは、相手のコンピューターに送られるとともにもう一度、SHIFT+F2を押すと、エコーバックはOFFになります。
画面に表示されます。
3.プリンタエコーバック
SHIFT+F3でON/OFFを切り換えます。
ONの時は、画面に表示されたデータがプリンタに出力されます。10秒以上プリンタに出力されない状態が続くとこのモードは解除されます。
もう一度、SHIFT+F3を押すと、プリンタへのエコーバックはOFFになります。
4.ブレーク信号の送出
STOPキーを押すと、ブレーク信号が100文字分出力され、送信データが0になります。
5.アップロード
SHIFT+F4でON/OFFを切り換えます。
ONの時は、ファイルを相手のコンピュータに送ります。再度このキーを押すとアップロードを中断します、ただし、XMODEMを使用している場合は中断できません。
6.ダウンロード
SHIFT+F5でON/OFFを切り換えます。
ONの時は、ファイルを相手のコンピュータから受け取ります。再度このキーを押すとダウンロードを中断します、ただし、XMODEMを使用している場合は中断できません。
7.ターミナルモードの一時中断
SHIFT+SELECTでON/OFFを切り換えます。
ONの時に、ターミナルモードを中断します。この時回線は保持されます。
8.日本語入力フロントエンド実行/終了
GRAPH+SELECTまたはCTRL+SPACEでON/OFFを切り換えます。
ONの時、日本語漢字入力フロントエンドの実行を開始します。
2.各モードの設定条件
1.MSX1
表7.15 MSX1K時のスクリーンモード
指定 | COMTERM入力時のスクリーンモード | |||
0 | 1 | 2 | 3 | |
AN、AI | AN2 | AN2 | AN2 | AN2 |
MN、MI | MN2 | MN2 | MN2 | MN2 |
KN、KI | KN2 | KN2 | KN2 | KN2 |
GN、GI | KN2 | KN2 | KN2 | KN2 |
SN、SI | SN2 | SN2 | SN2 | SN2 |
2.MSX2(VRAM64K)
表7.16 VRAM64K時のスクリーンモード
指定 | 画面サイズ | COMTERM入力時のスクリーンモード | ||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | ||
AN、AI | 1〜40 | AN2 | AN2 | AN2 | AN2 | AN2 | AN5 | AN6 |
41〜80 | AN6 | - | AN2 | AN2 | AN2 | AN5 | AN6 | |
MN、MI | 1〜40 | MN2 | MN2 | MN2 | MN2 | MN2 | MN5 | MN6 |
41〜80 | MN6 | - | MN2 | MN2 | MN2 | MN5 | MN6 | |
KN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | KN5 | KN6 |
41〜80 | KN6 | - | KN2 | KN2 | KN2 | KN5 | KN6 | |
KI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | KI5 | KI6 |
41〜80 | KN6 | - | KN2 | KN2 | KN2 | KI5 | KI6 | |
GN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | GN6 | GN6 |
41〜80 | GN6 | - | KN2 | KN2 | KN2 | GN6 | GN6 | |
GI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | GI6 | GI6 |
41〜80 | GI6 | - | KN2 | KN2 | KN2 | GI6 | GI6 | |
SN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | SN5 | SN6 |
41〜80 | SN6 | - | KN2 | KN2 | KN2 | SN5 | SN6 | |
SI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | SI5 | SI6 |
41〜80 | SI6 | - | KN2 | KN2 | KN2 | SI5 | SI6 |
3.MSX2、MSX2+
表7.17 VRAM128K時のスクリーンモード
指定 | 画面サイズ | COMTERM入力時のスクリーンモード | ||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
AN、AI | 1〜40 | AN2 | AN2 | AN2 | AN2 | AN2 | AN5 | AN6 | AN7 | AN5 |
41〜80 | AN7 | - | AN2 | AN2 | AN2 | AN5 | AN6 | AN7 | AN5 | |
MN、MI | 1〜40 | MN2 | MN2 | MN2 | MN2 | MN2 | MN5 | MN6 | MN7 | MN5 |
41〜80 | MN7 | - | MN2 | MN2 | MN2 | MN5 | MN6 | MN7 | MN5 | |
KN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | KN5 | KN6 | KN7 | KN5 |
41〜80 | KN7 | - | KN2 | KN2 | KN2 | KN5 | KN6 | KN7 | KN5 | |
KI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | KI5 | KI6 | KI7 | KI5 |
41〜80 | KI7 | - | KN2 | KN2 | KN2 | KI5 | KI6 | KI7 | KI5 | |
GN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | GN6 | GN6 | GN6 | GN6 |
41〜80 | GN6 | - | KN2 | KN2 | KN2 | GN6 | GN6 | GN6 | GN6 | |
GI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | GI6 | GI6 | GI6 | GI6 |
41〜80 | GI6 | - | KN2 | KN2 | KN2 | GI6 | GI6 | GI6 | GI6 | |
SN | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | SN5 | SN6 | SN7 | SN5 |
41〜80 | SN7 | - | KN2 | KN2 | KN2 | SN5 | SN6 | SN7 | SN5 | |
SI | 1〜40 | KN2 | KN2 | KN2 | KN2 | KN2 | SI5 | SI6 | SI7 | SI5 |
41〜80 | SI7 | - | KN2 | KN2 | KN2 | SI5 | SI6 | SI7 | SI5 |
3.ターミナルモードの例
CALL COMTERM("0KI") CALL COMTERM("KI")
この例は、デバイス番号0の通信カートリッジで、キャラクタを漢字、インタレースでターミナルモードを実行します。
CALL DIAL
機能 |
電話番号送出を行います。
書式 |
CALL DIAL(["デバイス番号:"],電話番号[,モード])
解説 |
電話番号の文字列にしたがって回線をダイヤルに接続し、約3秒後に(ただし、コールプログレストーン検出機能がある場合は、ダイヤルトーン検出後すみやかに)ダイヤル送出を開始します。
回線使用中及び回線が接続されていない場合は「Device I/O Error」となります。
ダイヤル終了後、回線はモデム側のままです。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
電話番号
電話番号として使用できるのは以下の半角文字です。
モード
電話回線の種類を数値定数、変数、配列変数、式で指定します。
サポートされていない機能を選択したときは「Illegal function call」になります。
文例 |
CALL DIAL("0:","0:03-123-4567",0)
デバイス番号0のカートリッジから、03-123-4567に電話をかけます。
A$="03 123 4567”:CALL DIAL(,A$)
デバイス番号0のカートリッジから、03-123-4567に電話をかけます。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL DIALC
機能 |
1桁だけの電話番号を送出します。
書式 |
CALL DIALC(["デバイス番号:"],1桁の電話番号[,モード])
解説 |
1桁だけダイヤル送出を行います。2桁以上は「Illegal function call」になります。回線をダイヤルに接続します。
回線が接続されていない場合は「Device I/O Error」となります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
電話番号
電話番号として使用できるのは以下の半角文字です。
0から9までの整数 | |
H | 約1秒間ON HOOKします。 |
A〜D、#、* | DTMFのみ有効です。 |
< | 3秒間ポーズを作ります。 |
: | 第2ダイヤルトーンを待ちます。トーン検出機能のない場合は<と同じです。 |
モード
電話回線の種類を数値定数、変数、配列変数、式で指定します。
0 | プッシュボタン(DTMF) |
1 | ダイヤルパルス(10pps) |
2 | ダイヤルパルス(20pps) |
省略 | 初期設定値(モデムのハードウェア設定による) |
文例 |
CALL DIALC("0:","3",0)
デバイス番号0の通信カートリッジから番号"3"を電話回線に送り出します。使用する電話はプッシュホンとします。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL DTMF
機能 |
DTMFデコーダよりデータを読み取ります。
書式 |
CALL DTMF(["デバイス番号:"],文字変数)
解説 |
DTMFデコーダよりデータを読み取り、文字変数に代入します。データが来ていない場合は来るまで待ちます。
文字変数には最大32バイトのDTMFコードが入りますが、それ以上のDTMFコードは無視します。
CTRL+STOPの入力があった場合は中止します。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
文例 |
CALL DTMF("0:",D$):PRINT D$ または CALL DTMF(,D$):PRINT D$ デバイス番号0の通信カートリッジからDTMF信号を読み込み、D$に代入します。その後に、その値を画面に表示します。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL LINESEL
機能 |
回線の切り換えを行います。
書式 |
CALL LINESEL(["デバイス番号:"],数値変数)
解説 |
電話回線を電話機に接続するか、内蔵モデムに接続するかを選択します。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
数値変数
各ビットの意味は次のとおりです。
ビット0
0 | 内蔵モデムに接続 |
1 | 電話機に接続 |
1 | 内蔵ハンドセットのマイクに接続 |
1 | 内蔵ハンドセットのスピーカに接続 |
1 | 内蔵ハンズフリーフォンのマイクに接続 |
1 | 内蔵ハンズフリーフォンのスピーカに接続 |
サポートされていない機能のビットを1にしたときは「Illegal function call」になります。
数値変数を省略したときは「Syntax error」になります。
文例 |
CALL LINESEL("0:”,0)
電話回線をデバイス番号0の通信カートリッジ側に切り替えます。
A=&B11000;CALL LINESEL(,A)
電話回線を電話機側に切り替えます。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL NETCARRIER
機能 |
半2重通信時のキャリアを制御します。
書式 |
CALL NETCARRIER(["デバイス番号:"],数値変数[ [,タイマ1][,タイマ2]])
解説 |
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
数値変数
数値型変数、変数、配列変数、式で指定できます。
タイマ1
このコマンドがコールされてからモデムのRS信号をONにするまでの時間となります。この値は10m秒単位となります。
数値型変数、変数、配列変数、式で指定できます。
タイマ2
モデムのCS信号がONになってからNETCARRIERコマンドがリターンするまでの時間となります。この値は10m秒単位となります。
数値型変数、変数、配列変数、式で指定できます。
文例 |
CALL NETCARRIER(, 1,2,2)
デバイス番号の通信カートリッジのキャリアをONします。
この時ガードタイムT1およびT2を20mSとします。
CALL NETCONFIG
機能 |
ハードウェアのコンフィグレーションを返します。
書式 |
CALL NETCONFIG(["デバイス番号:"],モード,数値変数)
解説 |
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
モード0
ビット0 | Bell 103 | 300bps | Full duplex |
ビット1 | Bell 212A | 1200bps | Full duplex |
ビット2 | CCITT V21 | 300bps | Full duplex |
ビット3 | CCITT V22 | 1200bps | Full duplex |
ビット4 | CCITT V22bis | 2400bps | Full duplex |
ビット5 | CCITT V23 | 1200bps | Half duplex |
ビット6 | CCITT V27ter | 4800bps | Half duplex |
ビット7 | CCITT V29 | 9600bps | Half duplex |
ビット8 | CCITT V32 | 9600bps | Full duplex |
モード1
ビット0 | プッシュボタン(DTMF) |
ビット1 | ダイヤルパルス(10pps) |
ビット2 | ダイヤルパルス(20pps) |
ビット3 | 自動検出 |
ビット4 | A〜Dをサポートしている |
ビット5 | Hをサポートしている |
ビット6 | DTMF-パルスの切り換えがソフトでできます。 |
ビット7 | 10pps、20ppsの切り換えがソフトでできます。 |
モード2
ビット0 | 外部電話機 |
ビット1 | 内蔵モデム |
ビット2 | 内蔵ハンドセット |
ビット3 | 内蔵ハンズフリーフォン |
モード3
ビット0 | リング信号検出 |
ビット1 | Call progress検出 |
ビット2 | 回線極性検出 |
ビット3 | 課金パルス検出 |
ビット4 | DTMFデコーダ |
ビット5 | スピーカ |
ビット6 | ONFF HOOK機能 |
ビット7 | 外部電話機ONFF HOOK検出 |
ビット8 | MSX標準カートリッジ |
ビット9 | RS-232C |
ビット10 | 送出電力切替機能 |
ビット11 | キャリア制御作用 |
ビット12 | Long loop検出機能 |
モード0〜3以外
数値変数=0(固定) |
文例 |
CALL NETCONFIG("0:",1,F):PRINT BIN$(F)
デバイス番号0の通信カートリッジにおいてモード1のステータスを変数Fに代入して、2進数で表示します。
返される値は、
上位バイト | 00000000 |
下位バイト | 11100111 |
デバイス番号0の通信カートリッジにおいてモード3のステータスを変数Fに代入して、2進数で表示します。
返される値は、
上位バイト | 00000010 |
下位バイト | 00100001 |
CALL NET GOSUB
機能 |
電話回線に着呼があったとき、またはDTMFデータが来たとき指定したサブルーチンを実行します。
書式 |
CALL NET GOSUB(["デバイス番号:"],GOSUB 行番号)
解説 |
CALL NETON文を使って割り込みを許可してから、電話回線に着呼があるかDTMFデータが受信されると、割り込みがかかり、行番号で指定されたサブルーチンに実行が移ります。サブルーチンはRETURN文で終了します。サブルーチンの実行終了後は、割り込みがかかった時点で実行していた次のステートメントに戻ります。
着呼による割り込みか、DTMFデータによる割り込みかの区別は、CALL NETSTAT文を実行しリターン値のビット8とビット0で行います。
サブルーチン実行中は自動的にNETSTOP文により割り込み保留となります。サブルーチン中でNETOFF文を指定しない限り、RETURN文により再び割り込み許可状態になります。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
行番号
0から65529までの整数型変数で指定します。
文例 |
CALL NET("0:",GOSUB 1000)
デバイス番号0の通信カートリッジに着信かDTMFの入力があった場合は、行番号1000に実行を移します。
注意 |
リングインジケータとDTMFデコーダが両方ともサポートされてないときは、「Illegal function call」になります。
CALL NETHOOK
機能 |
回線の切断・接続を行います。
書式 |
CALL NETHOOK(["デバイス番号:"],数値変数)
解説 |
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
数値変数
0 | ON HOOK(受話器を置き、回線が切れた状態) |
1 | OFF HOOK(受話器をあげ、回線が接続された状態) |
省略 | 「Syntax error」になる |
文例 |
CALL NETHOOK("0:",0)
または
CALL NETHOOK(,0)
デバイス番号0の通信カートリッジのフックをONにします。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL NETINI
機能 |
NCUの初期設定を行います。
書式 |
CALL NETINI[(["[デバイス番号:][通信モード]"][,ダイアラモード][,モデム])]
解説 |
NCUの初期設定を行います。NETINIを実行しなくても電源投入時、RESET時に省略値で初期設定されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
通信モード
A | アンサモード |
O | オリジネートモード(*) |
ダイアラモード
0 | プッシュボタン(DTMF) |
1 | ダイヤルパルス(10pps) |
2 | ダイヤルパルス(20pps) |
3 | 自動検出 |
省略 | 初期設定値(モデムのハードウェア設定による) |
モデム
0 | Bell 103 | 300bps | Full duplex |
1 | Bell 212A | 1200bps | Full duplex |
2 | CCITT V21 | 300bps | Full duplex |
3 | CCITT V22 | 1200bps | Full duplex |
4 | CCITT V22bis | 2400bps | Full duplex |
5 | CCITT V23 | 1200bps | Half duplex |
6 | CCITT V27ter | 4800bps | Half duplex |
7 | CCITT V29 | 9600bps | Half duplex |
8 | CCITT V32 | 9600bps | Full duplex |
省略 | 初期設定値 |
サポートされていないモデムを選択したときは、「Illegal function call」になります。
文例 |
CALL NETINI("A",0)
デバイス番号0の通信カートリッジをアンサーモード、使用している電話回線をプッシュホンに設定します。
CALL NETMODEM
機能 |
モデムの送出電力及びイコライザのON/OFFを指定します。
書式 |
CALL NETMODEM[(["デバイス番号:"][,送出電力][,イコライザ])]
解説 |
モデムキャリアの出力電力およびイコライザ制御を指定します。キャリアの出力値は回線インピーダンス60Ω時の電力とします。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
送出電力
送出電力×(-1)の値を設定します。15がデフォルトで-15dBmが指定されたことになります。
文字型変数、変数、配列変数、式で指定できます。
イコライザ
数値型変数、変数、配列変数、式で指定できます。
0 | イコライザを使用しない(デフォルト) |
1 | イコライザを使用する |
2 | 自動的にイコライザを制御する |
文例 |
CALL NETMODEM(,5)
送出電力を、-5dBmにします。
CALL NETOFF
機能 |
電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを禁止します。
書式 |
CALL NETOFF[("デバイス番号:")]
解説 |
CALL NETOFF後電話回線に着呼があるか、またはDTMFデータが来ても割り込みは発生しません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはカッコごと省略します。
文例 |
CALL NETOFF("0:")
CALL NETOFF
注意 |
リングインジケータとDTMFデコーダが両方ともサポートされていないときは、「Illegal function call」になります。
CALL NETON
機能 |
電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを許可します。
書式 |
CALL NETON[("デバイス番号:")]
解説 |
CALL NETON実行後電話回線に着呼があるか、またはDTMFデータが来ると割り込みが発生し、CALL NET GOSUB文で指定してある行のサブルーチンが実行されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはカッコごと省略します。
文例 |
CALL NETON("0:")
CALL NETON
注意 |
リングインジケータとDTMFデコーダが両方ともサポートされていないときは、「Illegal function call」になります。
CALL NETSPK
機能 |
スピーカをON/OFFします。
書式 |
CALL NETSPK(["デバイス番号:"],数値変数)
解説 |
カートリッジスロットのSUNDINと電話回線を接続・切断します。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
数値変数
0 | スピーカOFF |
1 | スピーカON |
省略 | 「Syntax error」になる |
文例 |
CALL NETSPK("0:",0)
A=0:CALL NETSPK(,A)
デバイス番号0の通信カートリッジからの音を切ります。
注意 |
ハードウェアでサポートされてないときは、「Illegal function call」になります。
CALL NETSTAT
機能 |
NCUのハードウェアの状態を返します。
書式 |
CALL NETSTAT(["デバイス番号:"],数値変数)
解説 |
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはコロン(:)まで省略します。
数値変数
数値型変数で、各ビットの意味は次のとおりです。
文例 |
CALL NETSTAT("0:",F):PRINT BIN$(F)
CALL NETSTAT(,F):PRINT BIN$(F)
デバイス番号0の通信カートリッジのNCUステータスを変数Fに代入して、2進法で表示します。
CALL NETSTOP
機能 |
電話回線の着呼があったとき、またはDTMFデータが来た時の割り込みを保留します。
書式 |
CALL NETSTOP[("デバイス番号:")]
解説 |
CALL NETSTOP実行後電話回線に着呼があるか、またはDTMFデータが来ても、次にCALL NETONが実行されるまで割り込みが保留されます。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。省略するときはカッコごと省略します。
文例 |
CALL NETSTOP("0:")
CALL NETSTOP
注意 |
リングインジケータとDTMFデコーダが両方ともサポートされていないときは、「Illegal function call」になります。
LOAD
機能 |
BASICプログラムを通信ポートからメモリにロードします。
書式 |
LOAD "COM[デバイス番号]:"[,R]
解説 |
LOAD実行前のプログラムを消去し、開いているファイルを閉じてから、アスキー形式のBASICプログラムをロードします。EOFコード(1AH)を受信するとロードを終了します。Rオプションを指定するとロード終了後プログラムが実行されます。この場合、開いているファイルは閉じません。
プログラム転送に際しエラーコレクションは行いません。
文例 |
LOAD "COM0:",R
MSX BASICのプログラムを通信用ポートからメモリにロードし、実行します。
MERGE
機能 |
プログラムを通信ポートからロードし、メモリ上のプログラムとマージ(混合)します。
書式 |
MERGE "COM[デバイス番号]:"
解説 |
アスキー形式のBASICプログラムを通信用デバイスからロードします。この時メモリ上にすでにあるプログラムはそのまま残り、MERGE文でロードされたプログラムと合併します。ただし、同じ行番号の場合はMERGEでロードされた方の行が残り、前のプログラムの行は消えます。
プログラム転送に際しエラーコレクションは行いません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。
文例 |
MERGE"COM0:"
RUN
機能 |
BASICプログラムを通信ポートからメモリにロードし実行します。
書式 |
RUN "COM[デバイス番号]:"[,R]
解説 |
アスキー形式のBASICプログラムをロードし実行します。RUN文実行前のプログラムを消去し、全てのファイルを閉じます。EOFコード(1AH)を受信するとプログラムのロードを終了し実行に入ります。Rオプションを指定すると、全てのファイルは開いたままになります。
プログラム転送に際しエラーコレクションは行いません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。
文例 |
RUN "COM0:",R
MSX BASICのプログラムをロードします。ファイルは閉じたままにします。
SAVE
機能 |
BASICプログラムを通信ポートに送ります
書式 |
SAVE ”COM[デバイス番号:]"
解説 |
通信用ポートにアスキー形式のBASICプログラムを送出します。
プログラム転送に際しエラーコレクションは行いません。
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。
文例 |
デバイス番号0にBASICのプログラムを送ります。
SAVE ”COM0:”
3.ステートメント
CLOSE
機能 |
OPEN文で開かれたファイルを閉じます。OPEN文で開かれたファイルからデータを順に読み取り、変数に代入します。
書式 |
CLOSE[[#]ファイル番号][,[#]ファイル番号]...
解説 |
OPEN文で開かれたファイルの番号を指定して下さい。ファイルを閉じると、そのファイル番号が新たにファイルを開くときに使うことができます。
指定したファイルが送信用に開かれたファイルであった場合は、相手機器にEOFコード(1AH)が送信されます。
RUN、END、CLEAR、NEWなどのコマンドを実行した場合も、ファイルは閉じられます。
ファイル番号
対象となるファイル番号を1〜(MAXFILES文で指定された数)の整数値で指定します。省略時は全てのファイルを閉じます。指定には、整数型定数、変数、配列変数、式が使えます。
キャリア信号
CLOSE文を実行すると回線に出ているキャリア信号はストップします。
文例 |
CLOSE # 1,2,3
ファイル番号1,2,3のファイルを閉じます。
CLOSE
すべてのファイルを閉じます。
INPUT #
機能 |
OPEN文で開かれたファイルからデータを順に読み取り、変数に代入します。
書式 |
INPUT#ファイル番号,変数[,変数]...
解説 |
受信バッファ用ファイルからデータを読み取り、変数に代入します。ファイル番号は、OPEN文で受信バッファとして開かれたファイルを指定します。データが数値型の場合、データの前に描かれたスペース、リターンコード、ラインフィードコードは無視されます。データが文字型の場合、最初に読み取られた文字からスペース、カンマ、リターンコード、ラインフィードコードの前までを一つのデータとして読み取ります。""で囲まれている場合は、""の中の文字だけをデータとして読み取ります。変数を指定する場合は、読み取るデータに合ったタイプの変数を指定します。
ファイル番号
対象となるファイル番号を1〜(MAXFILES文で指定された数)の整数値で指定します。省略時は全てのファイルを閉じます。指定には、整数型定数、変数、配列変数、式が使えます。
変数
数値型または文字型変数、それらの配列変数
文例 |
10 OPEN"COM0:"FOR INPUT AS #1 20 IF EOF(1) THEN GOTO 60 30 INPUT #1,A$:PRINT A$ 40 GOTO 20 50 CLOSE #1
ファイル番号を1として、受信バッファ用のファイルを開きます。
最後のデータが読み取られるまで文字型データを読み取り、文字型変数A$に代入して表示し、ファイルを閉じます。
LINE INPUT #
機能 |
254文字までの文字列をファイルから読み取り、文字型変数に代入します。
書式 |
INPUT#ファイル番号,変数[,変数]...
解説 |
受信バッファ用ファイルから文字型データを読み取りますが、INPUT#文と異なり、スペース、カンマ、ラインフィードコードを文字列データとして変数に代入します。データの区切とみなされるのはリターンコードだけです。ファイル番号は、OPEN文で受信バッファとして開かれたファイルを指定します。
ファイル番号
対象となるファイル番号を1〜(MAXFILES文で指定された数)の整数値で指定します。省略時は全てのファイルを閉じます。指定には、整数型定数、変数、配列変数、式が使えます。
変数
文字型変数、配列変数です。
文例 |
10 OPEN"COM0:"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
ファイル番号を1として、受信バッファ用のファイルを開きます。
最後のデータが読み取られるまで文字型データを読み取り、文字型変数A$に代入して表示し、ファイルを閉じます。
OPEN
機能 |
通信用ファイルを開きます。
書式 |
OPEN "COM[デバイス番号]:"[FORモード] AS [#]ファイル番号
解説 |
通信の入出力に必要な送信、受信バッファの領域をファイルとして確保します。OPEN文は次のコマンドや関数を使用する前に必ず実行してください。
PRINT #、PRINT # USING、LINE INPUT #、INPUT$
デバイス番号
設定の対象となるカートリッジを0(*)〜9の整数値で指定します。指定には、文字型変数、変数、配列変数、式が使えます。
モード
オープン時のモードを指定します。
ファイル番号
OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
文例 |
OPEN "COM0:"For OUTPUT AS #1
送信バッファとしてファイル1を開きます。
PRINT #
機能 |
OPEN文で開かれたファイルにデータを書き込みます。
書式 |
PRINT #ファイル番号,[式][セパレータ][式]
解説 |
式で指定したデータを送信バッファ用のファイルに書き込みます。
ファイル番号
OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
式
文字型、数値型の変数、変数、配列変数、式が使えます。
セパレータ
また、正の数値データを書き込むと、データの区切りを示すスペースがデータの間に挿入されます。
末尾にセパレータを書かないと、データ送信後CRコード(0DH)とLFコード(0AH)が続いて書き込まれます。
文例 |
10 OPEN"COM0:"FOR INPUT AS #1 20 A$="ABC":B$="DEF" 30 PRINT #1,A$,B$ 40 PRINT #1,A$;B$ 50 PRINT #1,+50,-50 60 CLOSE #1
送信バッファのファイル1に次の形式で順にデータを書き込みます。
PRINT # USING
機能 |
OPEN文で開かれたファイルに指定した書式でデータを書き込みます。
書式 |
PRINT # ファイル番号,USING 書式記号:式[,式]...
解説 |
式の値が、書式記号で指定した形式で書き込まれます。
ファイル番号
OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
式
文字型、整数型定数、変数、配列変数、式が使えます。
書式記号
記号 | 表現形式と実行例 |
! | 最初の1文字を出力します。 |
& & | n+2文字を出力します。データがn+2文字より少ない場合は、残りの文字数だけスペースを挿入します。 |
@ | 文字列全部を出力します。 |
# | 送信したい数字の桁数だけ「#」を描きます。小数点は「.」です。 |
+ | 数値データの前または後ろに、正数ならば「+」を、負数ならば「-」を付けます。 |
- | 負の数値データの後ろに「-」を付けます。 |
** | 数値データのスペースを「*」で埋めます。書式中の「*」もひとつで1桁に数えられます。 |
\\ | 数値データの前に「\」を付けます。書式中の「\」もひとつで1桁に数えられます。 |
**\ | 数値データの直前に「\」を付け、それより前のスペースを「*」で埋めます。。 |
, | 小数点の前のいずれかの個所に「,」を付けると、小数点から左に3桁ごとにカンマを入れて出力します。 |
^^^^ | 数値データを浮動小数点で出力します。「^^^^」は指数部用のスペースに対応します。 |
4.関数
EOF
機能 |
ファイルの最後のデータが読み取られたら-1、それ以外なら0を返します。
書式 |
EOF(ファイル番号)
解説 |
OPEN文で受信バッファとして開かれたファイルの番号を指定します。
この分により、受信バッファ内にある最後のデータが読み取られると-1を返します。それ以外なら0を返します。
ファイル番号
対象となるファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
返される値
整数値(-1または0)。
文例 |
ファイル1の最後のデータが読み取られたら、そのファイルを閉じます。
INPUT $
機能 |
ファイルから指定した数の文字を入力します。
書式 |
INPUT $(文字数,[#]ファイル番号)
解説 |
指定された数の文字(文字型データ)を受信バッファ用のファイルから入力します。ファイル番号は、OPEN文で受信バッファとして開かれたファイルを指定します。
文字数
入力する文字数を1〜255の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
ファイル番号
対象となるファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
返される値
文字型です。
文例 |
10 OPEN"COM0:",FOR INPUT AS #1 20 X$=INPUT$(50,#1) 30 CLOSE
ファイル番号を1として受信バッファ用ファイルを開き、そのファイルから50文字入力したところで、それを文字変数X$に代入して、ファイルを閉じます。
LOC
機能 |
ファイル中の文字数を返します。
書式 |
LOC(ファイル番号)
解説 |
受信バッファ用ファイルの文字数を返します。
ファイル番号
OPEN文で受信バッファとして開かれたファイル番号を1〜(MAXFILESで指定された数)の整数値で指定します。指定には、整数型定数、変数、配列変数、式が使えます。
返される値
0以上128以下の整数が返されます。
LOF
機能 |
ファイルの中の空きスペースの大きさを返します。
書式 |
LOF(ファイル番号)
解説 |
受信バッファ中の空きスペースを文字数で返します。
ファイル番号
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 | デバイス番号(8) |
E | ファンクション番号(0) |
B | RETURN情報エリアのスロットアドレス |
HL | RETURN情報エリアの先頭アドレス |
RAMのスロットアドレスは以下のワークエリアに保存されています。このワークエリアはディスクが接続されているシステムで有効です。
表7.18 RAMのスロットアドレス
ページ | ワークエリアのアドレス |
0 | F341H |
1 | F342H |
2 | F343H |
3 | F344H |
戻り値 |
B | 次のRETURN情報エリアのスロットアドレス |
HL | 次のRETURN情報エリアの先頭アドレス |
変更レジスタ |
RETURN情報はアプリケーションが指定した領域に次のように格納されます。
画像ファイルが存在しません。
図7.11 RETURN情報の形式
MSX MODEMが無いときは、BレジスタとHLレジスタの内容が変わらずに返ってきます。スロットアドレスの表現はMSX共通で以下の通りです。
拡張BIOSを使用する場合は、この拡張BIOSコールで得られたジャンプテーブルをインタースロットコールなどにより呼び出し、目的のBIOSを使用します。
2.BIOSジャンプテーブル
拡張BIOSは以下に示すジャンプテーブルを持っています。アプリケーションソフトウェアは、インタースロットコールなどで各エントリを呼び出すことにより、BIOSの各機能を利用できます。
■DVINFB
デバイスインフォメーションバイト(DVINFB)はMODEMカートリッジに、各オプションがあるかどうかを示します。
各ビットは1でその機能があることを示し、0でないことを示します。
■DVTYPE
デバイスタイプバイト()はこの装置がマルチタイプかシングルタイプかを示します。マルチタイプとは複数のMSX MODEMカートリッジを同時にスロットに挿入でき、ここに制御できる装置のことです。
DVTYPEが0以外であれば、マルチタイプのモデムカートリッジです。
3.拡張BIOSの各機能
拡張BIOSの各機能はインタースロットコールにより呼び出されます。インタースロットコールの呼び出しアドレスは001CHです。
コール手順 |
IY 上位8ビットにスロットアドレス
IX コールアドレス
その他のレジスタは機能により異なります。各項を参照して下さい。