|
■BASICプログラム
前回に書いたとおり、送信したい文字列はUSR関数の引数として渡す。 MSXの場合、文字列は255文字までという制限に留意すべきである。 今回は、「引数として文字列をUSR関数に渡す」という仕様にしたため、このような制限がある。これにこだわらなければ、アセンブラソースを書き換えて、16ビット長のデータも扱えるはずである。 今回のテストしたプログラムは次のとおり。 100 '================ 110 ' SERI.BAS 120 ' SERIAL OUT TEST 130 '================ 140 'SAVE "SERI.BAS" 150 CLEAR 200,&HBFFF:BLOAD"SERIBAS.OBJ" 160 DEFUSR=&HC000:LF$=CHR$(10):CR$=CHR$(13) 170 FOR I=32 TO 126 180 D$=CHR$(I):D$=USR(D$) 190 NEXT 200 D$=USR(CR$):D$=USR(LF$) ">http://art19.photozou.jp/pub/378/247378/photo/29294606.jpg MSXは、SONYのHB-F900を使用。写真右下の赤い小さなブレッドボードがインターフェース。 MSX本体に載っている左側画面はMSXのモニタ。右側がSA-1Fパソコン。文字コード32〜126の文字を表示している。ターミナルソフトは「Tera Term PRO」。MSX風に青地に白文字にしてみた。 http://art19.photozou.jp/pub/378/247378/photo/29275986_org.v1258227281.gif パソコン側で受信しているさまをGIFアニメにしてみた。少〜し実際よりも早目に表示されている。 マシン語部分の転送速度は9600bpsであるが、BASICの部分で時間がかかっている。1文字ずつ送信しているためであって、送信データをまとめてバッファに格納し一気に送信すれば9600bpsの実力が発揮できるはずである。 受信側のパソコンの処理能力に余裕があるのでフロー制御なしでも大丈夫であるが、パソコンからMSXに送信する場合は、データの取りこぼしが予想される。 MSXの受信プログラムも書こうと思っているが、たいてい受信側のほうが面倒なんだなあ。 |
全体表示



