-------- はじめに -------- このたびは弊社製品をお買い上げいただきありがとうございました。 ここでは以下の項目について説明します。 --------------------------------------------------- 1.著作権について 2.商標について 3.変更について --------------------------------------------------- --------------- 著作権について --------------- Copyright (C) 1996-2000 I-O DATA DEVICE INC. All rights reserved. 本書のどの部分も、株式会社アイ・オー・データ機器からの事前の書面による許可なく、電子的、機械的、複写機、記録などいかなる方法、いかなる形でも、転送、複製、検索システムに登録してはなりません。 ------------ 商標について ------------ ◆ 他のすべての商標は、各権利所有者の所有によるものです。 ------------ 変更について ------------ ◆ この文書の資料はすべて単なる情報として提供されるものであり、予告なく変更される可能性があります。 ◆ 本書の制作に際し正確さを期するために万全の注意を払ってはおりますが、本書中の誤記や情報の抜け、あるいは情報の使用に起する結果に関して、弊社はいかなる責任も負いません。 ◆ 弊社は、ユーザーに対する事前の約束および告知なしに製品のデザインを変更する権利を留保します。 ◆ 資料はすべて弊社によって作成されたものです。これらの資料の使用の結果損害が生じても、それが必然的なものであろうと、特別なものであろうと、あるいは付随的なものであろうと、いかなる場合でも、弊社は損害に対する責任は負わないものとします。 ◆ 弊社は、特定の目的に対する適合性あるいは市販品としての適合性は、明示的にも暗示的にもいっさい保証しません。 ----------------------- このマニュアルの使い方 ----------------------- このオンラインマニュアルは、皆様がより簡単に弊社製品をお使いいだだけるように特別に配慮して作られたものです。 ここでは以下の項目について説明します。 --------------------------------------------------- 1.このマニュアルの構成 2.操作方法 3.表記について 4.呼び方 --------------------------------------------------- --------------------- このマニュアルの構成 --------------------- このオンラインマニュアルは以下のジャンルに分かれています。 ◆ はじめに すべてのジャンルに共通する事項を説明しています。はじめに必ずお読みください。 ◆ 【RSA-DVシリーズ BIOS】 RSA-DVシリーズのBIOSファンクションを使用するための動作環境や概要を説明しています。BIOSファンクションをご使用になる場合は必ずお読みください。 ◆ 【BIOSファンクション】 BIOSファンクションの詳細説明です。必要に応じた項目をお読みください。 ◆ 【通信パラメータパケット】 BIOSファンクションで使用するパラメータの説明です。BIOSファンクションをご使用になる場合は必ずお読みください。 ◆ 【エラーコード一覧】 BIOSファンクションで使用するエラーコードの一覧です。必要に応じてお読みください。 ◆ 【シリアルドライバ】 RSA-DVシリーズを使用して、copyコマンドなどでデータを送受信するためのシリアルドライバの説明です。 必要に応じてお読みください。 --------- 操作方法 --------- このオンラインマニュアルはWindowsとDOSの両方で参照できます。(起動プログラム名は同じ) 操作は多少違いますが、表示される内容は全く同じです。 ◆ Windows版 【1】[ジャンル]リストボックスより、参照したいジャンルを選択します。 【2】指定ジャンルのメニュータイトルが表示されます。 参照したいメニュータイトルを選び、[ジャンプ]ボタンをクリックします。 または、参照したいメニュータイトルをダブルクリックします。 メニュータイトルの後に「...」とあるものは、さらにサブメニュータイトルがあることを示します。 【3】指定したメニュータイトルのマニュアル内容が表示されます。 使用できる機能は以下の通りです。 ・[検索]ボタン:検索文字列を入力して、現在表示中のマニュアル内容から、該当文字列を検索します。 ・[戻る]ボタン:メニューへ戻ります。 【4】 メニュー画面で[終了]ボタンを押すと、オンラインマニュアルが終了します。 ◆ DOS版 【1】[SPACE]キーを押して、参照したいジャンルを矢印キーで選択し、[Enter]キーを押します。 【2】指定ジャンルのメニュータイトルが表示されます。 参照したいメニュータイトルを矢印キーで選び、[Enter]キーを押します。 「◆」で始まるメニュータイトルにはマニュアル内容はありません。 【3】指定したメニュータイトルのマニュアル内容が表示されます。 使用できる機能は以下の通りです。 ・[F1:前の項目]キー:1つ前のメニュータイトルのマニュアル内容を表示 ・[F2:次の項目]キー:1つ後のメニュータイトルのマニュアル内容を表示 ・[F4:上方検索]キー:画面最上行に検索文字列を入力します。[Enter]キーを押すと、カーソル行より上方へ、該当文字列を検索します。 [ESC]キーで、検索機能を終了します。 ・[F5:下方検索]キー:操作は[F4:上方検索]に同じです。カーソル行より下方へ、該当文字列を検索します。 ・[ESC]キー:メニューへ戻ります。 はじめてお読みになる場合は、[F2:次の項目]キーを押して、最初から通してご覧になることをお薦めします。 いったん、[上方検索]または[下方検索]を行い、同じ文字列をさらに探したい場合は、再度[F4]または[F5]キーを押した後、[Enter]キーを押してください。 【4】メニュー画面で[ESC]キーを押すと、オンラインマニュアルが終了します。 ------------ 表記について ------------ このマニュアルでは、以下の表記を使います。 ◆ xx ユーザーが決定してタイプしなければならないテキストを示します。 xの数は桁数を示します。 ◆ 16進数 最後に"h"を付けて表します。たとえば、280h のように表記します。 ◆ 注意事項の表記 以下は、重要なポイントを強調したり、あるいはシステムや、データに被害を及ぼす可能性がある場合などを警告する短い注記です。このマニュアルでは次の2種類を使用します。 【メモ】:使用方法を容易にするためのヒント、あるいは提案などを示します。 【注意】:データの消失の可能性がある場合や動作不可の場合に注意を促します。 ------------------------------- サポートセンターへのお問合わせ ------------------------------- ◆ 事前のご確認事項 お問い合わせの前に以下の事項をご確認ください。 ・ご使用の当社製品名。 ・ご使用のパソコン本体と周辺機器の型番。 ・ご使用のMS-DOSのバージョン。 ・現在の状態、または開発したプログラム。 ◆ お問い合わせ方法 お問い合わせ方法についてはマニュアルを参照してください。 ------------------- RSA-DVシリーズ BIOS ------------------- RSA-DVシリーズ BIOSは、MS-DOS上でRSA-DVシリーズ をサポートする調歩同期・多回線RS-232Cドライバです。このドライバでRSA-DVシリーズ を制御することにより、特別なハードウェアの知識を必要とせずに、RSA-DVシリーズ の機能を利用したアプリケーションを作成することができます。 デバイスドライバとしてCONFIG.SYSに組み込んで使用する「RSABIOS.SYS」と、子プロセスとして実行した後常駐するタイプの2種類のBIOSが用意されています。 ※RSABIOS.SYSとRSABIOS.COMは、組み込み後のアプリケーションとのインターフェイスに違いはありません。 ※本ドライバを組み込むとRSAモードになります。 ●RSA-DVシリーズ BIOSドライバの動作環境 【パソコン】 DOS/V互換機 【OS】 MS-DOS(PC DOS) Ver.5.0/V以降(日本語モードのみ) ●RSA-DVシリーズ BIOSのファイル RSABIOS.SYS デバイスドライバ型BIOS RSABIOS.COM 常駐プログラム型BIOS ※サポートソフトウェアは必ずバックアップをとってからご使用ください。 ●RSA-DVシリーズ BIOSの特徴 アプリケーションとのインターフェイスは、ソフトウェア割り込みINT 60h(デフォルト)を使用します。ソフトウェア割り込みの変更は、BIOSの組み込み時のスイッチ(/Vxx)で行います。 調歩同期式・32回線を同時に管理することができます。それぞれの回線は独立して動作します。 受信バッファはアプリケーションまたはドライバが確保し、最大32000キャラクタの連続受信が可能です。 BIOSの受信割り込みルーチンからアプリケーションが指定した受信通信ルーチンへ一時的に制御を移すことができ、より細かな受信処理が行えます。詳しくは【通信パラメータパケット】の「rxcall:受信通知アドレス」を参照してください。 ------------ RSABIOS.COM ------------ RSABIOS.COMは子プロセスとして実行した後、BIOSが常駐するプログラムです。 ●MS-DOSへの組み込み/切り離し (1)組み込み方法・その1 MS-DOSのプロンプトより「RSABIOS.COM」を実行します。 BIOSが常駐し、以降アプリケーションまたはドライバでBIOSを使用することができます。BIOSが常駐中に再び「RSABIOS.COM」を実行した場合は、何もせずに終了します。すでに組み込まれていたBIOSは、そのまま正常に動作します。 (2)組み込み方法・その2 アプリケーションプログラムより「RSABIOS.COM」を子プロセスとして実行します。 BIOSが常駐し、以降アプリケーションまたはドライバでBIOSを使用することができます。ただし、アプリケーションプログラムが終了するときに必ずBIOSを切り離してください。切り離さない場合、メインメモリ中に使用できない無駄な領域が生じます。なお、BIOSが常駐中に再び「RSABIOS.COM」を実行しても問題ありません。 (3)切り離し方法 「RSABIOS /R」(Rスイッチつき)をMS-DOSのプロンプト状態で実行するか、プログラム中から子プロセスとして実行します。 BIOSが占有していたメモリを解放し、割り込みベクタ等の変更していた状態を元に戻し、終了します。BIOSが常駐していないときに「RSABIOS /R」を実行しても問題ありません。 ●オプション RSABIOS.COMには以下のオプションがあります。 /Vxx BIOSが使用するソフトウェア割り込み番号 xxの範囲:16進数で40〜7F ソフトウェア割り込み番号を指定します。このオプションを指定しない場合、ソフトウェア割り込み番号は60hとなります。他のソフトウェアが使用しているソフトウェア割り込み番号と重ならないように注意が必要です。 /R BIOSの切り離し このオプションを指定することにより、BIOSが占有していたメモリを解放し、割り込みベクタ等の変更を元に戻し、BIOSを切り離します。ただし、デバイスドライバ型(RSABIOS.SYS)が組み込まれている場合には切り離すことはできません。 /Ixxxx BIOSがタイマ割り込みに使用するボードのベースI/Oアドレス xxxxは割り込みを有効にしたボードのベースI/Oアドレスを4桁の16進数(半角)で指定します。xxxxの下位4ビットは0hでなければなりません。 【注意】ボードを2枚以上使用するときは、必ずこのオプションを指定します。 /N メッセージの非表示 このオプションを指定することにより、各メッセージが表示されなくなります。ただし、このオプションは一番先頭に記述してください。 /H または /? ヘルプの表示 このオプションを指定することにより、各オプションの説明が表示されます。 ●組み込み、切り離し時のメッセージ RSABIOS.COMの組み込み/切り離し時には、次のメッセージが表示されます。 高速RS-232C BIOS Ver.x.xx Copyright (C) 1996 I-O DATA DEVICE,INC. xxxxxxxx 処理結果はxxxxに表示されます。メッセージの内容と意味は以下の通りです。また、ドライバはメッセージを表示すると同時に対応したリターンコードを親プロセスに返します。 ----------------------------------------- BIOSを組み込みました ソフトウェア割り込み INT xxh を使用します ----------------------------------------- 正常にBIOSを組み込むことができました。リターンコードは0です。ただしプログラムの終了状態は03h(ファンクション31hによる終了)となりますから、終了ステータスは0300h(10進:768)となります。BIOSが使用するソフトウェア割り込み番号が表示されます。 -------------------- BIOSを切り離しました -------------------- 正常にBIOSを切り離すことができました。リターンコードは1です。 -------------------------------- BIOSは、すでに組み込まれています -------------------------------- ソフトウェア割り込み INT xxh が使用されています。 BIOSを組み込もうとしましたが、すでにBIOSが常駐しているため、何もせずに終了しました。リターンコードは2です。すでに常駐しているBIOSが使用しているソフトウェア割り込み番号が表示されます。 ---------------------------- BIOSは、組み込まれていません ---------------------------- BIOSを切り離そうとしましたが、BIOSが常駐していないため、何もせずに終了しました。リターンコードは3です。 ---------------------------------------- ソフトウェア割り込み INT xxh に RSABIOS.SYSが組み込まれています BIOSを切り離すことはできません ---------------------------------------- BIOSを切り離そうとしましたが、デバイスドライバ型BIOS(RSABIOS.SYS)が組み込まれているため、切り離すことができません。したがって、何もせずに終了しました。リターンコードは4です。 ---------------------------------- オプションの記述に間違いがあります ドライバを組み込めません ---------------------------------- ドライバを組み込もうとしましたが、オプションの記述に間違いがあるため、何もせずに終了しました。リターンコードは5です。 ------------ RSABIOS.SYS ------------ RSABIOS.SYSは、CONFIG.SYSに組み込むデバイスドライバ型のBIOSです。 ●MS-DOSへの組み込み/切り離し (1)組み込み方法・その1 CONFIG.SYSに「DEVICE=RSABIOS.SYS」を記述し、MS-DOSを起動します。BIOSが常駐し、以降アプリケーションまたはドライバでBIOSを使用することができます。BIOS常駐中に「RSABIOS.COM」を実行した場合は、何もせずに終了します。すでに組み込まれているBIOSは、そのまま正常に動作します。 (2)組み込み方法・その2 ADDDRVでRSABIOS.SYSを組み込みます。BIOSが常駐し、以降アプリケーションまたはドライバでBIOSを使用することができます。 (3)切り離し方法 ADDDRVで組み込まれている場合には、DELDRVを実行します。 CONFIG.SYSに「DEVICE=RSABIOS.SYS」を記述し、MS-DOSを起動して組み込んだ場合には切り離すことはできません。 ●オプション RSABIOS.SYSには以下のオプションがあります。 /Vxx BIOSが使用するソフトウェア割り込み番号 xxの範囲:16進数で40〜7F ソフトウェア割り込み番号を指定します。このオプションを指定しない場合、ソフトウェア割り込み番号は60hとなります。他のソフトウェアが使用しているソフトウェア割り込み番号と重ならないように注意が必要です。 /Ixxxx BIOSがタイマ割り込みに使用するボードのベースI/Oアドレス xxxxは割り込みを有効にしたボードのベースI/Oアドレスを4桁の16進数(半角)で指定します。xxxxの下位4ビットは0hでなければなりません。 【注意】ボードを2枚以上使用するときは、必ずこのオプションを指定します。 /N メッセージの非表示 このオプションを指定することにより、各メッセージが表示されなくなります。ただし、このオプションは一番先頭に記述してください。 ●組み込み時のメッセージ RSABIOS.SYSの組み込み時には、次のメッセージが表示されます。 高速RS-232C BIOS Ver.x.xx Copyright (C) 1996 I-O DATA DEVICE,INC. xxxxxxxx 処理結果はxxxxに表示されます。メッセージの内容と意味は以下の通りです。 ----------------------------------------- BIOSを組み込みました ソフトウェア割り込み INT xxh を使用します ----------------------------------------- 正常にBIOSを組み込むことができました。BIOSが使用するソフトウェア割り込み番号が表示されます。 ------------------------------------------------ BIOSは、すでに組み込まれています ソフトウェア割り込み INT xxh が使用されています。 ------------------------------------------------ BIOSを組み込もうとしましたが、すでにBIOSが常駐しているため、何もせずに終了しました。すでに常駐しているBIOSが使用しているソフトウェア割り込み番号が表示されます。 ---------------------------------- オプションの記述に間違いがあります ドライバを組み込めません ---------------------------------- ドライバを組み込もうとしましたが、オプションの記述に間違いがあるため、何もせずに終了しました。 ------------------------ BIOSファンクションの概要 ------------------------ ここでは、実際にBIOSを使用する場合の手順・方法を説明します。 ●BIOSの組み込みチェック BIOSが組み込まれているかどうかのチェックは次の手順で行います。 (1).BIOSが使用するソフトウェア割り込みを、アプリケーションプログラムがわかっている場合 そのソフトウェア割り込みが使用する割り込みベクタに設定されているアドレスを確認します。確認したアドレスから16バイト下位(低い)アドレスから始まる8バイトに「RSABIOS.」という文字列が入っていれば、BIOSが組み込まれています。また、この文字列に続く3バイトにBIOSのバージョンが設定されており、例えば、「123」と続けば、バージョンは1.23となります。 例)BIOSが使用するソフトウェア割り込みが INT 60h であった場合 使用する割り込みベクタは、0000:0180(60h*4)ですから、そのアドレスに設定されているアドレスを確認します。このアドレスが1234:aaaaであったとすると、そのアドレスより16バイト下位のアドレスは1234:aa9aです。そこで次のように文字列が設定されていればBIOSが組み込まれていることになります。 1234:aa9a 'R'(52) 1234:aaa2 '1'(31) 1234:aa9b 'S'(53) 1234:aaa3 '0'(30) 1234:aa9c 'A'(41) 1234:aaa4 '0'(30) 1234:aa9d 'B'(42) 1234:aaa5 NULL(00) 1234:aa9e 'I'(49) 1234:aaa6 NULL(00) 1234:aa9f 'O'(4f) 1234:aaa7 NULL(00) 1234:aaa0 'S'(53) 1234:aaa8 NULL(00) 1234:aaa1 '.'(2e) 1234:aaa9 NULL(00) (2).BIOSが使用するソフトウェア割り込みを、アプリケーションプログラムがわからない場合 ソフトウェア割り込みのINT 40h〜7Fhまでを、わかっている場合の手順でサーチします。すべてのソフトウェア割り込みで文字列が発見されない場合、BIOSは組み込まれていません。もし、BIOSが組み込まれていた場合、アプリケーションプログラムは次のようにしてBIOSのファンクションを実行します。 BIOSのエントリーアドレスをアプリケーションプログラムのワークにコピーしておき、実行時にはフラグをプッシュした後、そのアドレスへファーコール(セグメント間コール)します。 例)BIOSのエントリーアドレスが1234:aaaaであった場合 アプリケーションのワーク(ds:[BIOSCALL])にコピーします。 BIOSCALL dd ? 1234:aaaa -> ds:[BIOSCALL] 実行時には pushf call dword ptr ds:[BIOSCALL] とします。 ● BIOSファンクション実行手順 BIOSファンクションは、以下の手順で実行します。 1.AHレジスタに機能コードをセット(以降、機能コードは全て10進数で記述) 2.その他の必要とするパラメータを各レジスタにセット 3.INT 60h(デフォルト)を実行 ※この項以降の説明では、シリアルコントローラ(16550C)のことをUARTと表記します。 ---------------------------- 回線オープン:機能コード 0 ---------------------------- [入力] AH 0 AL 回線番号 範囲は、1〜32(10進数) DS:SI 通信パラメータパケット先頭アドレス [出力] AH =0 正常終了 =-1 すでに同じ回線番号がオープンされています =-3 回線番号の範囲エラー =-4 他に同じ通信パラメータパケットを使用している回線があります =-5 他に同じベースI/Oアドレスを使用している回線があります =-6 ボードが存在しません =-10 割り込み指定エラー =-11 ベースアドレスI/Oアドレスエラー =-13 通信モードエラー =-14 受信バッファ長エラー [破壊] AX このファンクションは、回線をオープンし送受信可能状態とします。アプリケーションは、このファンクションを実行する前に次の準備をします。 1. 回線番号の決定 ・回線番号の範囲は1〜32です。この範囲であれば、順番は関係ありません。 ・回線番号はすでにオープンされている番号を指定することはできません。 2. 通信パラメータパケットの領域確保 ・通信パラメータパケットは、アプリケーションプログラムからBIOSへ各パラメータを引き渡すための領域と、BIOSのワークとして使用される領域とで構成されています。 ・アプリケーションプログラムは、他のプログラムから破壊されることがない静的領域に113バイトの領域を確保し、通信パラメータパケットとします。回線をオープンするときに、このアドレスをDS:SIに設定し、BIOSに渡します。 ・他の回線が使用している通信パラメータパケットと同じ領域を設定することはできません。 3.受信バッファの領域確保 ・受信バッファは、BIOSが受信したデータとその時点のステータスを一時的に格納する領域です。 ・アプリケーションプログラムは、他のプログラムから破壊されることがない静的領域に通信パラメータパケット内のrxbuflenに設定されるキャラクタ数の2倍の領域を確保し、受信バッファとします。例えば、100キャラクタ分の受信バッファを利用したい場合、200バイトの領域を確保します。 4.通信パラメータパケットの各パラメータの設定 ・確保した通信パラメータパケット領域に次のパラメータを設定します。なお、各パラメータの詳しい内容については【通信パラメータパケット】を参照してください。 以上の準備を行い、回線のオープンを実行します。 baseadr :ベースI/Oアドレス mode :通信モード bps :ボーレート rxbuf :受信バッファアドレス rxbuflen :受信バッファ長 txtim :送信タイムアウト時間 rxtim :受信タイムアウト時間 rxcall※ :受信通知アドレス intno :割り込み番号 timercount :受信タイマカウント ※受信通知が必要ない場合は0を設定します。 ---------------------------- 回線クローズ:機能コード 1 ---------------------------- [入力] AH 1 AL 回線番号 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションは、回線をクローズします。 ・他の回線に影響はありません。 ・受信バッファ内にデータが残っていてもクローズされます。 ・アプリケーションが終了する場合にアプリケーションでオープンした回線は、  必ずクローズしなければいけません。 -------------------------- データ受信:機能コード 2 -------------------------- [入力] AH 2 AL 回線番号 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-20 タイムアウト設定時間内にデータの受信ができませんでした =-21 即時復帰の場合で受信バッファにデータがありませんでした =-40 中断指示割り込みによって終了しました DL 受信データ(AH=0のときのみ有効) DH ステータス(AH=0のときのみ有効) [破壊] AX,DX このファンクションは、データの受信を行います。 ・ステータス ビット 7 6 5 4 3 2 1 0 内容 0 TSRE THRE B1 FE PE OE DR TSRE 0:送信シフトレジスタあり 1:送信シフトレジスタ空 THRE 0:送信データレジスタあり 1:送信データレジスタ空 B1 0:ブレーク信号受信なし 1:ブレーク信号受信あり FE 0:フレーミングエラーなし 1:フレーミングエラーあり PE 0:パリティエラーなし 1:パリティエラーあり OE 0:オーバーランエラーなし 1:オーバーランエラーあり DR 0:受信データなし 1:受信データあり TSRE/THRE/B1/FE/PE/DRは、このデータを受信した時点でのUARTステータスがそのままセットされます。 OEはこのデータで受信バッファがいっぱいになり、かつ次のデータが受信されたため次のデータが捨てられたことを意味します。 ・受信データ、ステータスともAH≠0のとき意味を持ちません。 -------------------------- データ送信:機能コード 3 -------------------------- [入力] AH 3 AL 回線番号 DL 送信データ [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-30 タイムアウト設定時間内にデータの送信ができませんでした =-31 即時復帰の場合でデータの送信ができませんでした =-32 フロー制御によりタイムアウト時間内に送信ができませんでした =-33 即時復帰の場合に、フロー制御により送信できませんでした =-40 中断指示割り込みによって終了しました DH ステータス(AH=0のときのみ有効) [破壊] AX,DX このファンクションは、データの送信を行います。 ・ステータス ビット 7 6 5 4 3 2 1 0 内容 0 TSRE THRE B1 FE PE OE DR TSRE 0:送信シフトレジスタあり 1:送信シフトレジスタ空 THRE 0:送信データレジスタあり 1:送信データレジスタ空 B1 0:ブレーク信号受信なし 1:ブレーク信号受信あり FE 0:フレーミングエラーなし 1:フレーミングエラーあり PE 0:パリティエラーなし 1:パリティエラーあり OE 0:オーバーランエラーなし 1:オーバーランエラーあり DR 0:受信データなし 1:受信データあり ステータスは、このファンクションを実行した時点でのUARTステータスがそのままセットされます。 ------------------------------------ 受信バッファの初期化:機能コード 5 ------------------------------------ [入力] AH 5 AL 回線番号 DL =0 無条件に初期化します ≠0 受信バッファにデータが残っている場合には初期化しません [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-22 受信バッファの初期化時に、受信データが残っていました [破壊] AX このファンクションは受信バッファの初期化を行います。 ・受信バッファの先頭に受信データ格納ポインタを移動します。 ・受信データ数を0とします。 ・Xon/Xoff制御が指定されている場合、BIOSの内部ではXon送信状態になります。ただし、実際にはXonを送信しませんから、Xoff送信状態でこのファンクションを実行した場合には、アプリケーションでXonを送信する必要があります。 ・RTS/CTS制御が指定されている場合、RTS=1(送信要求あり)になります。 ・DTR/DSR制御が指定されている場合、DTR=1(送受信可)になります。 ---------------------------------------- 回線ステータスの読み取り:機能コード 6 ---------------------------------------- [入力] AH 6 AL 回線番号 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています DL モデム制御の状態 DH Xon/Xoff制御の状態 CL ステータス CH シグナルの状態 [破壊] AX,CX,DX このファンクションは回線ステータスの読み取りを行います。 ●DL:モデム制御の状態 ビット 7 6 5 4 3 2 1 0 内容 0 0 RTS 0 0 0 DTR 0 RTS 0:送信要求なし 1:送信要求あり DTR 0:送受信不可 1:送受信可 ●DH:Xon/Xoff制御の状態 ビット 7 6 5 4 3 2 1 0 内容 0 0 0 0 0 0 TXFL RXFL TXFL 0:Xonで送信状態 1:Xoffで送信状態 RXFL 0:Xonで受信状態 1:Xoffで受信状態 Xon/Xoff制御なしのとき、Xon送・受信状態になります。 ●CL:ラインステータス ビット 7 6 5 4 3 2 1 0 内容 0 TSRE THRE B1 FE PE OE DR TSRE 0:送信シフトレジスタあり 1:送信シフトレジスタ空 THRE 0:送信データレジスタあり 1:送信データレジスタ空 B1 0:ブレーク信号受信なし 1:ブレーク信号受信あり FE 0:フレーミングエラーなし 1:フレーミングエラーあり PE 0:パリティエラーなし 1:パリティエラーあり OE 0:オーバーランエラーなし 1:オーバーランエラーあり DR 0:受信データなし 1:受信データあり ・TSRE/THRE/DRは、その時点の状態を返します。 ・B1/FE/PE/OEは、前回このファンクションを実行してから1度でもエラーが発生したり、ブレーク信号を検出した場合にセットされます。 ・これらのステータスは、このファンクションを実行した時点でクリアされます。(UARTレベルでは、FE/OE/PEは即時クリアされます。) ・OEは発生した時点でセットされます。(受信データの引き取り状態には関係しません。) ●CH:モデムステータス ビット 7 6 5 4 3 2 1 0 内容 RLSD RI DSR CTS DRLSD TERI DDSR DCTS RLSD キャリア検出中 RI 呼出音検出中 DSR DSR CTS CTS DRLSD キャリア変化 TERI 呼出音あり DDSR DSR変化 DCTS CTS変化 -------------------------------------- 受信データ数の読み取り:機能コード 7 -------------------------------------- [入力] AH 7 AL 回線番号 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています CX 受信データ数 [破壊] AX,CX このファンクションは受信データ数を読み取ります。 ・受信データ数はキャラクタ数が返ります。 -------------------------- モデム制御:機能コード 8 -------------------------- [入力] AH 8 AL 回線番号 DL モデム制御データ [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションはモデム制御を行います。 ●DL:モデム制御の状態 ビット 7 6 5 4 3 2 1 0 内容 0 0 RTS 0 0 0 DTR 0 RTS 0:送信要求なし 1:送信要求あり DTR 0:送受信不可 1:送受信可 ・フロー制御で、RTS/CTSを指定した場合には、RTSの指定が、DTR/DSRを指定した場合には、DTRの指定がそれぞれ無視されます。 ---------------------------------- ブレーク信号の送信:機能コード 9 ---------------------------------- [入力] AH 9 AL 回線番号 CX ブレーク信号送信時間 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-15 ブレーク信号送信時間エラー =-40 中断指示割り込みによって終了しました [破壊] AX このファンクションはブレーク信号の送信を行います。 ●CX:ブレーク信号送信時間 設定範囲は1〜65534です。 単位は10mSecです。 ・ブレーク信号は、最低150m秒必要です。 -------------------------- 中断指示:機能コード 10 -------------------------- [入力] AH 10 AL 回線番号 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションは中断指示を行います。 ・このファンクションが有効なファンクションは、以下の通りです。 データ受信(ファンクション:2) データ送信(ファンクション:3) ブレーク信号の送信(ファンクション:9) ・アプリケーションの割り込みルーチンから実行します。 ・中断指示のクリアは、上記ファンクションの返り値が-40(中断指示割り込みによって終了しました)のとき、同時に行われます。 ---------------------------------- 受信バッファ変更:機能コード 11 ---------------------------------- [入力] AH 11 AL 回線番号 ES:DI 受信バッファアドレス CX 受信バッファ長 DL =0 無条件に変更します ≠0 受信バッファにデータが残っている場合変更しません [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-14 受信バッファ長エラー =-23 受信バッファの変更時に、受信データが残っていました [破壊] AX このファンクションは受信バッファの変更を行います。 ・受信バッファについては【通信パラメータパケット】の「rxbuf/rxbuflen:受信バッファアドレス/受信バッファ長」を参照してください。 ・受信バッファアドレスを変更し、そのアドレスに受信データ格納ポインタを移動します。さらにその受信バッファを初期化します。 ・受信データ数を0とします。 ・Xon/Xoff制御が指定されている場合、BIOSの内部ではXon送信状態になります。ただし、実際にはXonを送信しませんから、Xoff送信状態でこのファンクションを実行した場合には、アプリケーションでXonを送信する必要があります。 ・RTS/CTS制御が指定されている場合、RTS=1(送信要求あり)になります。 ・DTR/DSR制御が指定されている場合、DTR=1(送受信可)になります。 -------------------------------------------- 送信タイムアウト時間の変更:機能コード 12 -------------------------------------------- [入力] AH 12 AL 回線番号 CX 送信タイムアウト時間 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションは送信タイムアウト時間の変更を行います。 ・送信タイムアウト時間については【通信パラメータパケット】の「txtim/rxtim:送信タイムアウト時間/受信タイムアウト時間」を参照してください。 -------------------------------------------- 受信タイムアウト時間の変更:機能コード 13 -------------------------------------------- [入力] AH 13 AL 回線番号 CX 受信タイムアウト時間 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションは受信タイムアウト時間の変更を行います。 ・受信タイムアウト時間については【通信パラメータパケット】の「txtim/rxtim:送信タイムアウト時間/受信タイムアウト時間」を参照してください。 ---------------------------------------- 受信通知アドレスの変更:機能コード 14 ---------------------------------------- [入力] AH 14 AL 回線番号 ES:DI 受信通知アドレス [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションは受信通知アドレスの変更を行います。 ・受信通知アドレスについては【通信パラメータパケット】の「rxcall:受信通知アドレス」を参照してください。 ---------------------------------- ボーレートの変更:機能コード 15 ---------------------------------- [入力] AH 15 AL 回線番号 DL ボーレート [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています [破壊] AX このファンクションはボーレートの変更を行います。 ・ボーレートについては【通信パラメータパケット】の「bps:ボーレート」を参照してください。 ---------------------------------- フロー制御の変更:機能コード 16 ---------------------------------- [入力] AH 16 AL 回線番号 DL =0 フロー制御なし =1 Xon/Xoff制御 =2 RTS/CTS制御 =3 DTR/DSR制御 [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-16 フロー制御エラー [破壊] AX このファンクションはフロー制御の変更を行います。 ●変更時の処理 1.フロー制御なし -> Xon/Xoff制御 Xon送受信状態になります。ただし、Xonは実際に送信されません。 2.フロー制御なし -> RTS/CTS制御 受信データ長によりRTSを制御します。 3.フロー制御なし -> DTR/DSR制御 受信データ長によりDTRを制御します。 4.Xon/Xoff制御 -> RTS/CTS制御 受信データ長によりRTSを制御します。 5.Xon/Xoff制御 -> DTR/DSR制御 受信データ長によりDTRを制御します。 6.RTS/CTS制御 -> Xon/Xoff制御 Xon送受信状態になります。ただし、Xonは実際に送信されません。 7.RTS/CTS制御 -> DTR/DSR制御 受信データ長によりDTRを制御します。 8.DTR/DSR制御 -> Xon/Xoff制御 Xon送受信状態になります。ただし、Xonは実際に送信されません。 9.DTR/DSR制御 -> RTS/CTS制御 受信データ長によりRTSを制御します。 ------------------------------------------------ ストップビット、パリティ、キャラクタ長の変更:機能コード 17 ------------------------------------------------ [入力] AH 17 AL 回線番号 DL 通信モード(フロー制御の設定は無効) [出力] AH =0 正常終了 =-2 指定された回線はオープンされていません =-3 回線番号の範囲エラー =-7 通信パラメータパケットが破壊されています =-13 通信モードエラー [破壊] AX このファンクションはストップビット、パリティ、キャラクタ長の変更を行います。 ・ストップビット、パリティ、キャラクタ長については【通信パラメータパケット】「mode:通信モード」を参照してください。 ・フロー制御のビット(FL2,FL1)の設定は無視されます。 ---------------------------------- BIOS無条件初期化:機能コード 18 ---------------------------------- [入力] AH 18 [出力] なし [破壊] AX このファンクションは無条件で強制的にBIOSの初期化を行います。 ・このファンクションは、「通信パラメータパケットが破壊されています。(エラーコード:-7)」が発生したとき実行します。 ・このファンクションは、全てのオープンされている回線に対して行われますから、注意が必要です。 ---------------------------- 通信パラメータパケットの構成 ---------------------------- 通信パラメータパケットは、アプリケーションからBIOSへ各パラメータを引き渡すための領域と、BIOSのワークとして使用される領域とで構成されており、次の構成をしています。 オフセット サイズ ラベル 内容 ----------------------------------------------------------- 0000 W baseadr ベースI/Oアドレス 0002 W reserve1 リザーブ 0004 W reserve2 リザーブ 0006 B mode 通信モード 0007 B bps ボーレート 0008 DW rxbuf 受信バッファアドレス 000C W rxbuflen 受信バッファ長 000E W txtim 送信タイムアウト時間 0010 W rxtim 受信タイムアウト時間 0012 DW rxcall 受信通知アドレス 0016 B intno 割り込み番号 0017 B timercount 受信タイマカウント 0018 BIOSが使用するワークエリア(90bytes) 0071 合計 113バイト -------------------------- baseadr:ベースI/Oアドレス -------------------------- ・RSA-DVシリーズ が使用するベースI/Oアドレスを1ワード(2バイト)で設定します。 ・下位4ビットが0でなければエラー(エラーコード:-11)となります。 ・[回線オープン]の実行時に設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。 ---------------- mode:通信モード ---------------- ・回線の ストップビット パリティ キャラクタ長 フロー制御  を1バイトで設定します。 ビット 7 6 5 4 3 2 1 0 内容 S2 S1 EP PEN L2 L1 FL2 FL1 S1とS2の組み合わせでストップビットを設定します。 S1:0、S2:0 無効 S1:1、S2:0 1ビット S1:0、S2:1 1.5ビット S1:1、S2:1 2ビット EP 0:奇数(ODD)パリティ 1:偶数(EVEN)パリティ PEN 0:パリティなし 1:パリティあり L1とL2の組み合わせでキャラクタ長を設定します。 L1:0、L2:0 5ビット L1:1、L2:0 6ビット L1:0、L2:1 7ビット L1:1、L2:1 8ビット FL1とFL2の組み合わせでフロー制御を設定します。 FL1:0、FL2:0 フロー制御なし FL1:0、FL2:1 RTS/CTS制御 FL1:1、FL2:0 Xon/Xoff制御 FL1:1、FL2:1 DTR/DSR制御 ・ストップビットの設定が”無効”であった場合エラー(エラーコード:-13)となります。 ・[回線オープン]の実行時に設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。 【設定例1】 フロー制御 Xon/Xoff制御 キャラクタ長 8ビット パリティ なし ストップビット 1ビット の場合には、4Dとなります。 【設定例2】 フロー制御 なし キャラクタ長 7ビット パリティ(ODD) パリティ ストップビット 2ビット の場合には、D8となります。 --------------- bps:ボーレート --------------- 回線のボーレートを1バイトで設定します。 ビット 7 6 5 4 3 2 1 0 内容 0 0 0 0 BR3 BR2 BR1 BR0 BR0〜BR3の組み合わせでボーレートを設定します。 ボーレート BR3 BR2 BR1 BR0 19,200 0 0 0 0 9,600 0 0 0 1 4,800 0 0 1 0 2,400 0 0 1 1 1,200 0 1 0 0 600 0 1 0 1 300 0 1 1 0 38,400 0 1 1 1 57,600 1 0 0 0 115,200 1 0 0 1 230,400 1 0 1 0 460,800 1 0 1 1 921,600 1 1 0 0 ・[回線オープン]の実行時には設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。ボーレートを変更する場合は、機能コード15「ボーレートの変更」ファンクションを使用します。 【設定例】 ボーレートを460,800bpsに設定したい場合には0Bとなります。 --------------------------------------------------- rxbuf/rxbuflen:受信バッファアドレス/受信バッファ長 --------------------------------------------------- ・受信バッファは、BIOSが受信したデータとその時点のステータスを一時的に格納する領域です。 ・アプリケーションは、他のプログラムから破壊されることがない静的領域に通信パラメータパケット内のrxbuflenに設定されるキャラクタ数の2倍の領域を確保し受信バッファとします。 例えば、100キャラクタ分の受信バッファを利用したい場合、200バイトの領域を確保します。 ・rxbufは、BIOSが使用する受信バッファのアドレスを1ダブルワード(4バイト)で設定します。 ・rxbuflenは、受信バッファの長さ(キャラクタ数)を1ワード(2バイト)で設定し、範囲は8〜32000です。この範囲外はエラー(エラーコード:-14)となります。 ・受信バッファアドレスは、BIOS内部で最適化されます。(オフセットが0〜Fの範囲内になるように操作されます) ・[回線オープン]の実行時に設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。 【設定例】 グラフィックVRAMの先頭から、100キャラクタ分の領域を受信バッファとして使用した場合には、 rxbuf:A800:0000 通信パラメータパケット | | | | [オフセット] [データ] | | | +---- 0008 00 ---- オフセット | | | | | | +------ 0009 00 -+ | | | +-------- 000A 00 ---- セグメント | | +---------- 000B A8 -+ となります。このとき使用される領域はA800:0000〜A800:00C7の200バイトです。 ------------------------------------------------------ txtim/rxtim:送信タイムアウト時間/受信タイムアウト時間 ------------------------------------------------------ ・txtimは、送信時のタイムアウト時間を1ワード(2バイト)で設定します。 txtim:   0:即時復帰 1〜65534:単位は10mSec  65535:送信が完了するまで復帰しない ・rxtimは、受信時のタイムアウト時間を1ワード(2バイト)で設定します。 rxtim:   0:即時復帰 1〜65534:単位は10mSec  65535:受信が完了するまで復帰しない ・タイムアウト時間はソフトウェアループで計測されるまで、使用状況により多少の時間オーバーがあります。(タイムアウト時間測定中に他の回線から受信割り込みが入った場合やその他の割り込みが発生した場合、その割り込み処理中の時間がタイムアウト時間に加算されます。) ・[回線オープン]の実行時に設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。 【設定例】 送信タイムアウト時間は1秒、受信は即時復帰で使用したい場合には、 txtim:100 rxtim:0 となります。 ------------------------ rxcall:受信通知アドレス ------------------------ ・回線からデータを受信したことを通知する処理ルーチンのエントリーアドレスを1ダブルワード(4バイト)で設定します。 ・受信の通知が必要でない場合には、0を設定します。 ・[回線オープン]の実行時に設定した後、[回線クローズ]を実行するまでこのパラメータを変更してはいけません。 ・通知ルーチンへは  AL :受信データ  AH :その時点のUARTステータス    (データ受信「機能コード2」で返されるステータスと同じものです)  CX :受信カウント  DS:SI :通信パラメータパケットアドレス が渡されます。 ・通知ルーチンを作成するにあたっての注意事項は次の通りです。 1. ファーリターン(セグメント間リターン)で終了してください。 2. レジスタはSI,SP,DS,SS以外は破壊可能です。 3. 割り込み禁止状態(CLI)でコールされます。 4. 割り込みを途中で解除(STI)する場合には、多重割り込みに伴うスタックオーバーフローや、再入可能な構造にすること、などの注意が必要です。 5. できるだけ処理時間が短くなるように努力してください。長くなるほど、データの取りこぼし(オーバーランエラー)の可能性が高くなります。 【設定例】 通知ルーチンのエントリーアドレスが3456:789Aであった場合には、 rxcall:3456:789A 通信パラメータパケット | | | | [オフセット] [データ] | | | +---- 0012 9A ---- オフセット | | | | | | +------ 0013 78 -+ | | | +-------- 0014 56 ---- セグメント | | +---------- 0015 34 -+ となります。 ------------------- intno:割り込み番号 ------------------- RSASETUPで指定したIRQと同じ値を指定します。 (RSA-DV/Sは IRQ 3,4,5,6,7,9,10,12) (RSA-DVU/Sは IRQ 3,4,5,6,7,9,10,11,12,14,15) ------------------------------ timercount:受信タイマカウント ------------------------------ カウント1あたり0.2mSecの間隔でタイマ割り込みがかかります。(1〜255) ---------------- エラーコード一覧 ---------------- ここでは、BIOSのエラーコードの原因、対策を説明します。 ● -1 すでに同じ回線がオープンされています 【原因】すでに他のアプリケーションまたはドライバでオープンし使用されている回線を指定しました。 【対策】他の回線を指定し、オープンします。 ● -2 指定された回線はオープンされていません 【原因】オープンされていない回線を使用しようとしました。 【対策】回線をオープンした後に使用します。 ● -3 回線番号の範囲エラー 【原因】回線番号の範囲が1〜32であるにも関わらず、その範囲外の回線を指定しました。 【対策】他の回線を指定しオープンします。 ● -4 他に同じ通信パラメータパケットを使用している回線があります 【原因】他の回線が使用している通信パラメータパケットを使用して回線をオープンしようとしました。 【対策】新たに通信パラメータパケットを確保しオープンします。 ● -5 他に同じベースI/Oアドレスを使用している回線があります 【原因】他の回線が使用している物理回線(UART)を使用して回線をオープンしようとしました。 【対策】他のオープンされていない物理回線を指定し、オープンします。 ● -6 ボードが存在しません 【原因】回線の初期化ができませんでした。原因は次の状態が考えられます。 ・ボードが拡張スロットに接続されていません。 ・ボード上のディップスイッチで設定されているベースI/Oアドレスと、指定されたベースI/Oアドレスが異なっています。 ・他の拡張ボードが使用しているI/Oアドレスと重なっています。 【対策】上記の原因を捜し対処します。 ● -7 通信パラメータパケットが破壊されています 【原因】通信パラメータパケットが何らかの原因で破壊されています。 【対策】このエラーが発生した場合には、BIOSの初期化が必要です。「BIOSの無条件初期化」を実行してください。このとき、他の回線も初期化されます。 ● -10 割り込み指定エラー 【原因】割り込み番号(IRQ)の値が範囲外です。 【対策】正しい割り込み(IRQ)を使用するように設定してください。 (RSA-DV/Sは IRQ 3,4,5,6,7,9,10,12) (RSA-DVU/Sは IRQ 3,4,5,6,7,9,10,11,12,14,15) ● -11 ベースI/Oアドレスエラー 【原因】指定したベースI/Oアドレスの下位4ビットが0以外になっています。 【対策】ボードの取扱説明書を良くお読みになり正しく設定してください。 ● -13 通信モードエラー 【原因】指定した通信モードのストップビットの設定が無効となっています。 【対策】1,1.5,2ビットのいずれかの設定にしてください。 ● -14 受信バッファ長エラー 【原因】指定した受信バッファ長が8〜32000の範囲外です。 【対策】8〜32000の範囲内に設定してください。 ● -15 ブレーク送信時間エラー 【原因】指定したブレーク送信時間が1〜65534の範囲外です。 【対策】1〜65534の範囲内に設定してください。 ● -16 フロー制御エラー 【原因】指定したフロー制御の値が0〜3の範囲外です。 【対策】0〜3の範囲内に設定してください。 ● -20 タイムアウト時間内にデータの受信ができませんでした ● -21 即時復帰の場合に受信バッファにデータがありませんでした ● -22 受信バッファの初期化時に、受信データが残っていました ● -23 受信バッファの変更時に、受信データが残っていました ● -30 タイムアウト時間内にデータの送信ができませんでした ● -31 即時復帰の場合に送信ができませんでした ● -32 フロー制御により、タイムアウト時間内に送信ができませんでした ● -33 即時復帰の場合に、フロー制御により送信ができませんでした ● -40 中断指示割り込みによって終了しました ---------------------- シリアルドライバの概要 ---------------------- RSA-DVシリーズ ドライバは、CONFIG.SYSに組み込むキャラクタ型デバイスドライバ(RSACOM.SYS)です。 ●特徴 ・RSA-DVシリーズ BIOSを使用します。RSA-DVシリーズ BIOSが組み込まれている状態でドライバを組み込みます。 ・通信パラメータパケットと受信バッファは、ドライバ内で確保します。 ・ひとつのドライバが管理できる回線数は 1 ですが、組み込み時のオプション設定によって論理ファイル名を指定することができるため、COMA からCOMZまでの26回線(A〜Z)を同時にオープンできます。 ・ドライバが管理する回線をユーザーが使用する場合には、ファイルとして扱えるためCOPY コマンドなどにより簡単に入出力が行えます。詳細は【シリアルドライバ】の「ユーザーの使用例」を参照してください。 ・ドライバが管理する回線をアプリケーションが使用する場合には、システムコールのReceive IOCTL character / Send IOCTL Characterを使用します。【シリアルドライバ】の【ドライバファンクション】の各項を参照してください。 ---------- RSACOM.SYS ---------- RSACOM.SYSはCONFIG.SYSに組み込むキャラクタ型のデバイスドライバです。RSACOM.SYSを組み込むと、COPYコマンドやリダイレクトコマンドを使用して、拡張RS-232Cポートでのファイルの送受信ができます。ここでは、RSACOM.SYSの使い方を説明します。 ●MS-DOSへの組み込み/切り離し RSACOM.SYSは、RSABIOS.SYSを必要とします。 (1)組み込み方法・その1 CONFIG.SYSに"DEVICE=RSABIOS.SYS"を記述し、その後の行で"DEVICE=RSACOM.SYS"を記述し、MS-DOSを立ち上げます。ドライバが常駐し、以降ドライバを使用することができます。 (2)組み込み・その2 RSABIOSが組み込まれた状態で、ADDDRVで"RSACOM.SYS"を組み込みます。ドライバが常駐し、以降ドライバを使用することができます。 (3)切り離し方法 ADDDRVで組み込まれている場合には、DELDRVを実行します。CONFIG.SYSに"DEVICE=RSACOM.SYS"を記述し、MS-DOSを立ち上げて組み込んだ場合には、切り離すことはできません。 ●オプション RSACOM.SYSには、以下のオプションがあります。 /Nx デバイス名 xは、半角のアルファベットでデバイス名を指定します。 ・xの範囲は、'A'〜'Z'です。 ・'A'を指定した場合、デバイス名は'COMA'となり、'Z'を指定した場合は'COMZ'となります。 ・このオプションを指定しない場合、デバイス名は'COMA'となります。 ・'COMA'〜'COMZ'が使用する回線番号はそれぞれ1〜26になります。 /Ixxxx ベースI/Oアドレス xxxxは半角文字の16進数でベースI/Oアドレスを指定します。 ・xxxxの下位4ビットは、0でなければいけません。 ・このオプションを指定しない場合、280hとなります。詳細は【通信パラメータパケット】の「baseadr:ベースI/Oアドレス」を参照してください。 /Sxxx ストップビット xxxは半角文字でストップビットを指定します。 ・xxxは'1'または'1.5'または'2'のいずれかでなければいけません。 /Px パリティ xは半角文字でパリティを指定します。 ・xは'E'または'0'または'N'のいずれかでなければいけません。 'E' :Even(偶数パリティ) '0' :Odd(奇数パリティ) 'N' :None(パリティなし) /Lx キャラクタ長 xは半角文字の10進数でキャラクタ長を指定します。 ・xの範囲は5〜8です。 /Fx フロー制御 ・xは'X'または'R'または'D'のいずれかでなければいけません。 'X' :Xon/Xoff 制御 'R' :RTS/CTS 制御 'D' :DTR/DSR制御 ・このスイッチを指定しない場合、フロー制御しないとなります。 /Bxxxxx ボーレート xxxxxは半角文字の10進数でボーレートを指定します。 ・xxxxxは300,600,1200,2400,4800,9600,19200,38400,57600,115200,230400,460800,921600のいずれかでなければいけません。 ・このオプションは必ず指定してください。 /Mxxxx 受信バッファ長 xxxxxは半角文字の10進数で受信バッファ長(キャラクタ数)を指定します。 ・xxxxの範囲は8〜32000です。 ・このオプションを指定しない場合、128となります。 /Txxxxx,yyyyy 送・受信タイムアウト時間 xxxxxとyyyyyの区切りは半角のカンマ(',')を指定します。 xxxxxは半角文字の10進数で送信タイムアウト時間を指定します。 yyyyyは半角文字の10進数で受信タイムアウト時間を指定します。 ・単位は10mSecです。 ・0の場合、即時復帰となります。 ・65535の場合、送受信が完了するまで復帰しません。 ・このスイッチを指定しない場合、それぞれ100となります。 ・詳しくは【通信パラメータパケット】の「txtim/rxtim :送信タイムアウト時間/受信タイムアウト時間」を参照してください。 /Cxx モデム制御 xxは半角文字でモデム制御を指定します。 ・xxは'00'または'01'または'10'または'11'のいずれかでなければいけません。 '00' RTS OFF DTR OFF '01' RTS OFF DTR ON '10' RTS ON DTR OFF '11' RTS ON DTR ON ・このオプションを指定しない場合、'11'となります。 ・フロー制御で、 RTS/CTSを指定した場合には、RTSの指定が、 DTR/DSRを指定した場合には、DTRの指定が、 それぞれ無視されます。 /R メッセージの非表示 このオプションを指定することにより、各メッセージが表示されなくなります。ただし、このオプションは一番先頭に記述してください。 /Hx 割り込み RSASETUPで指定したIRQと同じ値を指定します。 ・このスイッチを指定しない場合、10となります。 /Vxxx 受信タイマカウント(1〜255) 1カウントあたり0.2mSecの間隔でタイマ割り込みがかかります。 ・このスイッチを指定しない場合25(5mSec)となります。 ●使用例 CONFIG.SYSに以下の行を追加し、MS-DOSを再起動します。 デバイス名に"COMA"、ベースI/Oアドレスに280h、キャラクタ長8ビット、パリティなし、ストップビット1,ボーレート57600bps、RTS/CTS制御にする場合 DEVICE=RSABIOS.SYS DEVICE=RSACOM.SYS /NA I280 /L8 /PN /S1 /B57600 /FR 複数のポートを設定する場合 DEVICE=RSABIOS.SYS DEVICE=RSACOM.SYS /NA /I280 DEVICE=RSACOM.STS /NB /I290 ●組み込み時のメッセージ RSACOM.SYSの組み込み時には、以下のメッセージが表示されます。 高速RS-232C ドライバ Verx.xx Copyright (C) 1996 I-O DATA DEVICE,INC. xxxxxxxx 処理結果は、xxxxxxxxに表示されます。そのときのメッセージの内容と意味は以下のとおりです。 ---------------------------- デバイス COMx が使用できます。 I/Oポート : 280h ハード割り込み : IRQ 10h 受信割り込み: 5ms スピード : 19200bps データ長 : 8ビット パリティ : パリティ無し ストップビット : 1 フロー制御 : RTS/CTS 受信バッファ : 4096バイト 送信タイムアウト : 500ms 受信タイムアウト : 5000ms ---------------------------- 正常にドライバを組み込むことができました。 使用できるデバイス名と通信条件が表示できます。 --------------------------- BIOSが組み込まれていません ドライバを組み込みません --------------------------- RSACOM.SYSを組み込む前に必ず、RSABIOS.SYSを組み込んで下さい。 --------------------------------- xxxxxxxの記述が間違っています ドライバを組み込みません --------------------------------- xxxxxxxには間違っている箇所名が表示されます。(例:デバイス名) 正しい記述に変更してください。 ------------------------ 無効な文字列があります ドライバを組み込みません ------------------------- 正しい記述に変更してください。 ----------------------------- COMxはすでに登録されています ドライバを組み込みません ----------------------------- ドライバを組み込もうとしましたが、すでに COMxを使用しているドライバ が常駐しているため、何もせずに終了しました。 ------------------------------- 他に同じベースI/Oアドレスを使用している回線があります ドライバを組み込みません ------------------------------- エラーが発生したため何もせずに終了しました。  詳しくは【エラーコードの一覧】の「-5」を参照してください。 ------------------------- ボードが存在しません ドライバを組み込みません ------------------------- エラーが発生したため何もせずに終了しました。  詳しくは【エラーコードの一覧】の「-6」を参照してください。 ------------------------- ベースI/Oアドレスエラー ドライバを組み込みません ------------------------- エラーが発生したため何もせずに終了しました。 詳しくは【エラーコードの一覧】の「-11」を参照してください。 -------------------------- 受信バッファエラー ドライバを組み込みません -------------------------- エラーが発生したため何もせずに終了しました。 詳しくは【エラーコードの一覧】の「-14」を参照してください。 ---------------------- ドライバファンクション ---------------------- ここでは、アプリケーションとドライバ間のインターフェイスについて説明します。 ドライバから回線を操作する方法は、大きく分けて2つあります。 1.IOCTL を使用して直接BIOSのファンクションを実行する方法 ->「BIOSの回線情報を得る」、「BIOSのファンクションを実行する」 2.回線をファイルとして操作する方法 ->「受信」、「送信」 1.、2.のいずれもハンドルが必要です。 詳細は次項以降をご参照ください。 -------------- ハンドルを得る -------------- システムコール Open Handle 3DH を使用します。 例)COMAを使用したい場合 ・アプリケーションでASCIZ文字列'COMA',0を用意します。 db 'COMA',0 ・AH=3Dh ・AL=02h ・DS:DX=用意した文字列のアドレス ・INT21hを実行します。 エラーがなければ、AXレジスタに ハンドル が返されます。 以降、このファンクションで得られた ハンドルを使用します。 ---- 受信 ---- システムコール Read Handle 3Fh を使用します。 例)10キャラクタ受信したい場合 ・アプリケーションで10バイトのバッファを用意します。 db 10 dup(?) ・AH=3Fh ・DS:DX=用意したバッファのアドレス ・CX=10 ・BX=ハンドル ・INT21hを実行します。 エラーがなければ、AXレジスタに読み込まれたバイト数が返されます。 ---- 送信 ---- システムコール Write Handle 40h を使用します。 例)10キャラクタ送信したい場合 ・アプリケーションで10バイトのバッファを用意します。 db 10 dup(?) ・バッファに送信データを格納します。 ・AH=40h ・DS:DX=用意したバッファのアドレス ・CX=10 ・BX=ハンドル ・INT21hを実行します。 エラーがなければ、AXレジスタに送信したバイト数が返されます。 -------------------- BIOSの回線情報を得る -------------------- システムコール Receive IOCTL Character 44h コード 02h を使用します。 ・アプリケーションは26バイトのバッファを用意し、そのポインタをDS:DXに設定し実行します。実行後、バッファに回線情報が設定されます。 DS:DX オフセット サイズ ラベル 内容 0000 B openl ineno 回線番号 0001 B fncint ソフトウェア割り込み番号 0002 W baseadr ベースI/Oアドレス 0004 W reserve1 リザーブ 0006 W reserve1 リザーブ 0008 B mode 通信モード 0009 B bps ボーレート 000A DW rxbuf 受信バッファアドレス 000E W rxbuflen 受信バッファ長 0010 W txtim 送信タイムアウト時間 0012 W rxtim 受信タイムアウト時間 0014 DW rxcall 受信通知アドレス 0018 B into 割り込み番号 0019 B timercount 受信タイマカウント 合計26バイト ・回線数は、ドライバが管理する回線の番号です。 ・ソフトウェア割り込み番号は、BIOSが使用するソフトウェア割り込み番号です。 ・その内容については【通信パラメータパケット】を参照してください。 ------------------------------ BIOSのファンクションを実行する ------------------------------ システムコール Send IOCTL Character 44h コード 03h を使用します。 ・アプリケーションは10バイトのバッファを用意し、そのポインタをDS:DXに設定します。実行後、BIOSの返り値がバッファに設定されます。 DS:DX ------+-------+--------------+---------------------------- オフセット |サイズ | ラベル | 内容 ------+-------+--------------+---------------------------- 0000 | B | --- | 予備 ------+-------+--------------+---------------------------- 0001 | B | rah | AHレジスタ ------+---+---+------+-------+--------------+------------- 0002 | | B | | rcl | | CLレジスタ ------+ W +---+ rcx +-------+ CXレジスタ +------------- 0003 | | B | | rch | | CHレジスタ ------+-------+------+-------+--------------+------------- 0004 | | B | | rcl | | DLレジスタ ------+ W +---+ rdx +-------+ DXレジスタ +------------- 0005 | | B | | rch | | DHレジスタ ------+-------+------+-------+--------------+------------- 0006 | W | rdi | DIレジスタ ------+-------+--------------+---------------------------- 0008 | W | res | ESレジスタ ------+-------+--------------+---------------------------- 合計10バイト ---------------- ユーザーの使用例 ---------------- ここでは、ユーザーとドライバ間のインターフェイスについて説明します。 例)COMAを用いて、ファイルのコピーを行います。 ・BIOSを組み込みます。 ・論理ファイル名 : COMAとしてドライバを組み込みます。 【送り側】 A>COPY xxxx.TXT COMA /B /Bについては、E0F(1Ah)を送るためにバイナリモードでコピーを行わせることを指示します。 【受け側】 A>COPY COMA xxxx.TXT COMA から送られてくるファイルの終了コードとして E0F(1Ah)がなければいけません。もし、ない場合は、エラーで終了する(タイムアウトが指定されている場合)か、無限ループ(タイムアウトをチェックしない場合)になります。