|
■とりあえず受信 まだ不安定要素はあるが、とりあえず受信できるようになった。 PC側のターミナルソフトからキーインすると、MSXに表示される。 1バイト受信してはBASICに渡すだけの最小限の機能だけなので、あまり早い処理はできない。手入力であれば追随できるが、ファイル送信では、1文字毎に50ミリ秒程度の遅延を入れる必要がある。1文字当たり0.05秒かかるので1秒間に20文字、160bps程度の転送速度か。 100 '================ 110 'SERI_RB.BAS 120 '================ 130 SAVE "SERI_RB.BAS" 140 CLEAR 200,&HBFFF:BLOAD"SERI_RB.OBJ" 150 DEFINT A-Z:DEFUSR=&HC000:A$="" 160 D=USR(0):D$=CHR$(PEEK(&HC003)) 170 IF D$=CHR$(13) THEN PRINT A$:END 180 A$=A$+D$ 190 GOTO 160 ■処理手順 (1) 入力線がHIGHになっているか確認。HIGHでなければ、HIGHになるまで待つ。 (2) LOWになるのを待つ。 (3) ちょっと待って、1ビット目を取り込む。 (4) (3)を計8回繰り返して1バイトのデータを得る。 厄介だったのは、(3)の「ちょっと待って」の部分である。少し処理を変えるたびにウエイトループの定数を変更しないといけない。結局、ステート数計算は断念し、試行錯誤で定数を決めた。 ■問題点 速度については、むやみに高速化を求めるよりも、MSXらしく十分遅く処理することで対処したい。とはいえ、現状ではカセットテープからの読み込みより遅いような気がする。これを酔狂と、いつまで笑ってられることやら。 精度については、MSXどうしの通信であれば送受信とも柔軟に対応できるので、なんとかなるさ、と考えている。PCからの受信は、まだちと厳しいなあ。 残る問題として、受信の際、なぜか漢字が文字化けする。送信ではANKモードで文字化けし、受信では漢字モードで文字化けするっていうのは、なんだかなあ。通信方法が単純ななだけに、タイミング以外に原因の見当がつかないのが困るっぽい。 ■まとめ まだ不完全ではあるものの、MSXどうしの通信に進みたい。実装に当たっては、2本に分かれている送受信プログラムの一本化も考えたい、と考えているところである。 |
全体表示



