---------------------------------------------------------------- AUX driver with IRCS "IAUX" version 0.51 機能一覧 Copyright (c) G-HAL 1997 / 01 - 1997 / 07 ---------------------------------------------------------------- ★★☆☆ 動作環境 ☆☆★★ HardWare IRCS  無ければ全く意味がありません。  できれば IAUX 対応モデルが良いです。 NEC PC-9801,PC-9821,互換機  CPU が V30 以上でなければなりません。  シリアルチップが8251完全互換でなければなりません。  VM/VX でも動作する事を確認しています。 SoftWare MS-DOS ver3.3 以降 IRCSローレベルデバドラ  従来の機能を使用する際には必要です。 IAUX そのものには必要ありません。 通信ソフト  MCD対応で、かつOSIリンク層を装備し、KISS 処理 をしている物でなければなりません。 ★★☆☆ 使用方法 ☆☆★★ 使用するには CONFIG.SYS 内に、次の一行を追加し、組み込んで下さい。 DEVICE= IAUX98.com また、adddrv や adddev を使用しても、組み込めます。 あとは、通信ソフトを動かすだけです。 通信ソフトでの設定では、通信速度は 76800 baud,KISS 処理ON,に して下さい。 ★★☆☆ オプション ☆☆★★ ・デバドラとコマンドラインで共通です。 ・オプションの区切りとして "/","-",Space を使うことが出来ます。 ・オプションは、大文字でも小文字でもかまいません。 ・数値に小数は使えません。 ・文字と数字の間は、符号を除き空けてはいけません。 【デバイス名】 /N default:IAUX デバイス名を指定します。MS-DOS のファイル名として有効でなければ なりません。 デバイス名 AUX を指定する事も可能ですが、その場合は open した回数と close した回数に矛盾が出ないように 注意しなければなりません。CONFIG.sys 内で組み込んだ場合や、 組み込んだ後に常駐ソフトを使用した場合は、 必ず矛盾します(MS-DOS の仕様)。 【API切り離し】 /A(C|D) APIを切り離します。デバドラ組込み時にしか指定出来ません。 "/AC" では Direct C call を,"/AD" では Direct call と Direct C call を切り離します。Direct call のみを切り離す事は 出来ません。また、Direct PASCAL call は全てのAPIの実体なので、 切り離せません。 "/AC" で約 400bytes,"/AD" で約 900bytes 小さくなります。 【送信バッファサイズ】 /T[num] default:0 1〜32767 送信バッファの大きさを指定,変更します。 このオプションを指定しなかった場合、送信バッファはつくられず、 API,もしくはコマンドラインからの実行にて 送信バッファを作らなければなりません。 コマンドラインのオプションとして指定した場合は、 UMB→コンベンショナルの順に優先して割り当てます。 ただし、deldev にて組込み解除をしても開放されません。 deldev 前に、"/TR" にて開放して下さい。 また、前回 "/T[num]" で確保したバッファは開放されません。 "/TR /T[num]" とした方が良いでしょう。 デバイスドライバのオプションとして指定した場合は 必ずコンベンショナルメモリから確保され、コマンドラインからは 開放出来なくなります。ただし、deldev にて組み込み解除をした時に、 自動的に開放されます。 【受信バッファサイズ】 /R[num] default:0 1〜32767 受信バッファの大きさを指定,変更します。 このオプションを指定しなかった場合、受信バッファはつくられず、 API,もしくはコマンドラインからの実行にて 受信バッファを作らなければなりません。 コマンドラインのオプションとして指定した場合は、 UMB→コンベンショナルの順に優先して割り当てます。 ただし、deldev にて組込み解除をしても開放されません。 deldev 前に、"/RR" にて開放して下さい。 また、前回 "/R[num]" で確保したバッファは開放されません。 "/RR /R[num]" とした方が良いでしょう。 デバイスドライバのオプションとして指定した場合は 必ずコンベンショナルメモリから確保され、コマンドラインからは 開放出来なくなります。ただし、deldev にて組み込み解除をした時に、 自動的に開放されます。 【送信バッファ開放】 /TR IAUX98.exe にて確保した送信バッファを開放します。 デバイスドライバのオプション,API,にて確保したバッファは 開放出来ません。 デバイスドライバのオプションとして指定した場合は エラーとなります。 【受信バッファ開放】 /RR IAUX98.exe にて確保した受信バッファを開放します。 デバイスドライバのオプション,API,にて確保したバッファは 開放出来ません。 デバイスドライバのオプションとして指定した場合は エラーとなります。 【バッファ状態表示】 /S 送受信バッファのアドレス,サイズ,使用量を表示します。 > SIZE (CHARS) SIZE (CHARS) >----------------------- ----------------------- >0FA5:15D0 0400H(0000H) 0FA5:19D0 0200H(0000H) 左から順に、 受信バッファの セグメント:オフセット,大きさ,(使用量)、 送信バッファの セグメント:オフセット,大きさ,(使用量)、 となっています。 【オープン回数設定】 /O[num] default:0 0〜32767 通常、OPEN した回数と CLOSE した回数は一致するはずですが、 何等かの原因により回数に矛盾が発生した場合、このオプションにて "/O0" とし、修正します。 また、このオプションにてわざと矛盾させる事も可能ですが、 IAUX の動作を承知した上で、利用して下さい。 【案内表示】 /? オプションの一覧を表示します。 ★★☆☆ ばぐばぐぅ ☆☆★★ IRCS通常型では、通信範囲が方向,距離共に、非常に限定されます(仕様)。 通信範囲を広範囲にしたい場合は、IAUX 対応モデルを使用するか、 御自分でIRCSを IAUX 対応モデルに改造して下さい。 なお、改造方法はいたって簡単、ケースの受光モジュールの 窓がくる部分に穴を空けるだけです。ただし、失敗しても保証は効きません。 御自分の責任で行って下さい。 NEC N-88 BAISC(86) は RS-232C 割込を使用している為、 IAUX を使用出来なくなります。 ★★☆☆ 備考、注意 ☆☆★★ ☆厳守事項 このプログラム一式はフリーウェアです。 著作権は G-HAL が保有しているので、PDSと呼ぶ事を禁止します。 また、IRCSに関する著作権は FEZ,thomas が保有しています。 このプログラム一式を個人的な用途以外で許可無く改変しないで下さい。 ☆お願い 感想、要望、バグ、苦情、などありましたら作者へ知らせて下さい。 ドキュメントやプログラムの無断改変などの悪質ないたずらはやめましょう。 ☆転載について PDSなどと呼んでいる RBBS や BBS などへの転載は禁止します。 @FWD や @MO などの 転送系RBBS(BBS) への転載は禁止します。 ローカルな所へ転載した時、作者に連絡して下さるとうれしいです。 全国的な所へ転載、掲載などするときは必ず事前に許可を取って下さい。 転載、掲載する場合、アーカイブの内容を変更してはいけません。 また、ファイルを個別に転載、掲載しないで下さい。 営利目的の販売等は禁止します。 ☆動作に関して このプログラムによって何が起きても、私達は責任を取りません。 ★★☆☆ ソフトウェア規格 ☆☆★★ キャラクタデバイス、デバイス名 "IAUX"。 Read I/O CTRL,open close サポート。 open された時に、IRCSの動作試験を行います。その時に ゴミ赤外線をばらまきます。動作試験にて、エラーが出た場合、 送受信を禁止し、IRCSの電源を落とします。 なお、IRCSではなくモデムがつながった状態で open すると IRCSとモデムとの判別に4秒程度かかるので気をつけて下さい。 close された時には、OPEN 回数カウンタをデクリメントし、 0になったならば、送受信を禁止し、IRCSの電源を落とします。 IAUX を使用する際には、必ず open している事が必要です。 なお、open してもIRCSの検出に失敗する事がまれに有り、 その場合は、open していても使用出来なくなってしまいます。 その時、エラーは返されません。 APIでの getlinestat にて、CTS が1であることを確認して下さい。 CTS が0ならば、検出に失敗しています。その時は、setlinestat もしくは linectrl にて RTS,DTR のどちらかを1にして下さい。再度、IRCSの 初期化,検出を行います。 APIの使用方法は、MCDと全く同じです。 ただし、一部の IAUX では意味を持たないAPIでは、 何も処理をしなかったり、ダミーの値を返したりします。 また、MCDでのタイマーサービスは対応していません。 詳細は IAUX98.api を見て下さい。 IAUX を使用する前に、送受信バッファを設定しなければなりません。 デフォルトではバッファは確保しないので注意して下さい。 通常の、ファイルハンドルへの読込/書込を用いて IAUX を 使用する事が可能です。ただし、KISS処理を行わなければなりません。 また、送受信バッファが無い,IRCSが無い,等のエラーが発生すると、 MS-DOS の Fatal error abort (int 24h) が発生します。 APIを用いての読込/書込でも KISS処理をしなければなりません。 ファイルハンドルを用いて IAUX を使おうとした時に、 IRCSが検出できなければ、致命的エラーが発生し、例の、 >準備ができていません. 読み取り中 デバイス IAUX >準備ができていません. 書き込み中 デバイス IAUX などのエラーメッセージが出てしまいますので、注意して下さい。 なお、copy やリダイレクトなどで >準備ができていません. 読み取り中 デバイス IAUX を出してしまった場合は、"I"(無視)か "F"(失敗)にして下さい。すると、 >準備ができていません. 書き込み中 デバイス IAUX >書き込み禁止です. 書き込み中 デバイス IAUX などが出るので、ここで "A"(中止)を選んで下さい。 最初の「準備が〜」にて "A"(中止)を選んでしまうと、 share が暴走してしまいます(command.com と share の仕様らしい)。 また、IAUX を利用するソフトウェアを作った場合は、 必ず、open したぶんだけ close して下さい。 また、常駐ソフトでは常駐する前に close し、その後 linectrl にて RTS,DTR の どちらかを1にした方が良いようです。 そうしないと share が暴走します。 KISS 処理について。 > FEND  (frame end)       300 (octal) > FESC  (frame escape)       333 (octal) > TFEND (transposed frame end)  334 (octal) > TFESC (transposed frame escape) 335 (octal) KA9QJ1.doc:4324〜4327 より引用。 受信フレームの先頭,最後尾には FEND が付加されます。 データ内に FEND,FESC と同じデータが有った場合、FESC が前置されてから TFEND,TFESC に置き換えられます。 リエントラントにはなっていません、再入させてはいけません。 int 0Ch は、再入を回避するようになっていますが、 デバドラ部,APIは回避していません。inMCD フラグを確認して下さい。 int 0Ch 内では、スタックは自前で持っています。 その他はスタックは既存の物を使用します。 MCDのAPIでは、独自のスタックを持っているようですが、 IAUX は持っていないので、気をつけて下さい。 古いデバドラへのリンクはしていません。 "int 0Ch RS-232C" をフックしています。 古い int 0Ch へのリンクはしていません。 コマンドライン実行部では "int 24h Fatal error abort" をフックし、 「無視」を返すようにしています。 ★★☆☆ 物理層規格 ☆☆★★ IRCSの仕様上、半2重動作となります。 通信方式は家製協フォーマット準拠です。 カスタムコード:0FF00h(16bit),カスタムコードパリティ:0h(4bit), 先頭に識別用ダミーデータ 0Fh(4bit) を付加し、 データ列は 1octet(8bit)単位,任意長(最大 328octet)、 最後尾に「CRC CCITT X.25 右シフト」(16bit)を付加しています。 ただし、API等を用いて読み書きする時は、データ列のみがやりとりされます。 データ列が 328octet を越えた場合は、強制的に破棄されます。 搬送波 :38.4 [kHz] の方形波(多少なまっている塀?j 変調方式 :PPM方式(変形PPM方式?) 時間単位 :0.42 [msec] を「1T」とする リーダー :ON 8T,OFF 4T データ 1 :ON 1T,OFF 3T データ 0 :ON 1T,OFF 1T トレーラー :ON 1T,OFF 20T 通信路の共用:1-persistent CSMA、ただし回線が空いてから 50 msec 監視 その他詳細は、連絡先 URL の「工研部報17号」をご覧ください。 ★★☆☆ 終わりに ☆☆★★ ☆ G-HAL の戯れ言 開発環境 PC-9821Cs2s2 memory 20.6M bytes(protect) IDE 170MB + SCSI 1GB PC-9801VM0 memory 4096K bytes(I/O bank) FDD*4 PC-9801VX21 memory 8192K bytes(I/O bank) SASI 40MB,CPU:486SLC そんなこんなで、何とか完成しました。 実際動かしてみて、256 octet エラーフリーでぽこぽこ通るとは 想いもしませんでした。 しかしまぁ、98の 8251 って良くできていますね。 まるで、この事を見透かしていたかの様です。 だがしかし、IAUX を使う人はいるのだろうか(--;。 そんな所に、AX25 protocol driver 作ったってねぇ。 次回作? もうあきらめた方がいいんじゃないかって気がしてきました。 そもそも、IRCS蛇綾沾に長期間かかるとは思わなかったし……(^^;。 しっかし、さいきん3D物がはやってるみたいですね〜。 VF−X,GUNDAM外伝,エースコンバット,愛覚えていますか(閤……, でも本体無いしぃ〜。 ★★☆☆ Special Thanks ☆☆★★ FEZ師匠 & thomas仙人 と彼らの愛弟子 ubora 尊師 資料 知識 経験 借用、アドバイス、アルゴリズム再考、 このお方が居なければここまで出来ませんでした(__)。 ……と言うより、彼らのせいで作る羽目になったとも言う。 その他の方々 ★★☆☆ 参考資料 ☆☆★★ 『PC-9801VF2/VM0/VM2 ユーザーズマニュアル』 (1985) NEC 『PC-9801 解析マニュアル[第0巻]』 (1983/ 6/30) 川村清 秀和システムトレーディング 『応用MS−DOS 改訂新版』 (1986/ 7/31,1990/ 6/11) 村瀬康治 アスキー出版局 『MS-DOS 5 アセンブラ・プログラミング』 (1992/10/21) 桜田 幸嗣 アスキー出版局 バイブル本こと『パケット通信ハンドブック』 (1987/ 5/10,1990/ 2/20 7版) 秦 正人,山内 雪路 CQ出版社 バイブル本の続編『パケット無線ネットワーク』 (1990/ 9/ 5 初版) 秦 正人,山内 雪路 CQ出版社 『Software Library MS-DOS 3.3 餅杆湫楼殉慳и歃脇?P??Vol.1 Vol.2』(1988) ASCII Techwrite/NEC corporation 『新版 PC-9800シリーズ テクニカルデータブック』(1990/4/1,1991/2/1 1版5刷) アスキー出版局テクライト 『PC-9801 スーパーテクニック』 (1992/ 4/ 1,1993/ 6/21 1版5刷) 小高 輝真,清水 和文,速水 祐 アスキー出版局 『MCD Version 0.91 一式(通常配布版,書籍ではない方)』(1988/03 - 1996/11/15) AP-Labs.,INC., JM1PQQ/Yass, Muri 『IRCS98.com 関連のソースリスト』 (1996-1997) FEZ & thomas FENIX出版局(蛙) その他、いろいろ ★★☆☆ 連絡先 ☆☆★★ FENIX FEN025 G-HAL --- G-HAL --- /// 1997 Jul.15 Tue. ///