なんとかものになりました。
扱うデータは、DXFファイルです。ご存じの方もいらっしゃると思いますが、
DXFファイルというのは、せいぜい8bytesの行が千数百行もあるデータです。最
初のバージョンでは…
while not eof(f) do begin
readln(f,s);
Lineout(s)
end:
といったように1行読んではそれをRS-232Cに出力する、というオーソドック
スなやり方をしていました。だけどこれだとやたら遅いんですね。「もっと速
くならないの?」とダメ出しが来ました。そこで考えました。
whilenot eof(f) do begin
s := '';
repeat
readln(f,s1);
s := s + s1 + #$0D + #$A;
until (Length(s)> 240) or (eof(f));
end;
lineout(s);
これで240bytes程度のデータを一気に送ることができそうです。やってみた
ところ、これは速い! 計測してみると1行読んで1行送る方式の10倍以上速く
送信できます。ところが、TurboPASCALにサンプルとして入っていたRS-232C
BIOSがヘボなのか、大量にデータを送ると、メモリを食いつぶしてしまうのか、
テキストのアトリビュートがおかしくなってしまいます。いろいろ試行錯誤し
ましたが、ふと思いついて1行送信するたびにRS-232Cポートを開閉するように
したところ、この不具合は解決しました。明日さっそく実稼働に入ります。
FDとVzエディターとTPCの世界をしばらく楽しみました。かれこれ四半世紀
前のテクノロジーです。
|