喫茶XRAYトップページ

[スレッド全体
]

[7028] TurboPASCALで苦闘中返信 削除
2013/10/15 (火) 22:30:45 たてぐや
 皆さんお久しぶりです。たてぐやです。
 仕事で、PC-98のMS-DOS上で動くプログラムを作らなくちゃならなくなりま
した。PC-98で作ったテキストデータをRS-232CでDOS/V機に取り込むものです。
最初はDOSのバッチを書いて済まそうと思ったのですが、ダメ出しが来て、は
てさてどうやって書こうかとPC-98を見れば、N88-BASICとTurboPASCALの古い
バージョンが入っています。ここはBASICはないなと、TurboPASCALで書き始め
たのですが、これがなかなか大変。もう20数年使っていなかったもので、プロ
シジャもファンクションもすっかり忘れている…。当たり前のようにIntToStr
と書いてコンパイルエラー。さすがにこの時代の資料はネット上にもなく、お
ぼろげな記憶と某パソコン通信ホストプログラムのソースを参考にしながらポ
ツポツと書いています。改めてDelphiの便利さを痛感しました。


[7029] Re:TurboPASCALで苦闘中返信 削除
2013/10/17 (木) 20:20:54 宮 〔HomePage
▼ たてぐやさん

>  仕事で、PC-98のMS-DOS上で動くプログラムを作らなくちゃならなくなりま
> した。


こんにちは。
今時N88BACKの資産を活用やリメークをすることが仕事なら仕方がありませんね。
1991年頃、私が昔会社勤めの頃、ソフト開発部門にお客からあるソフトの
開発打診があったけど「そんなのに関わっている時間がないからと
場違いな技術部門に「どう?やってみない?」ということがありました。
メカニックが個人的にN88BASICをいじっている者はいたけど、
とてもBASICで商品にして売るなんて考えられないと思っているとき、
見つけました。BASICので組めて、インタプリタ不要でコンパイルしてexeを作成し
中を見られないようにして、
フロッピーでコピープロテクトが可能なものでした。
それが電脳組のBASIC/98でした(当時は電脳組の前身の会社でした)。
それでやってみようということになりました。
依頼のあった会社は皆さんも知っている大きな会社ですが、
デモンストレーション・コンペで勝ち注文をいただいたことがあります。
その会社でも開発チームを組んで作成していたのですが、それも押さえての
優勝です(*^_^*)(C言語も知らないメカニック作が)。
後で質問攻めでした、処理が早い、インタプリタがない、ISAMも高速、
いったいどんな言語で組んだんですがという質問がありました。
恥ずかしくて言いにくかったけどBASICで組んだといったら、
唖然としていましたよ。
だってBASICしか知らないプログラマなんていませんよね。
でもこれは商品も組めることを証明しました。

考えてみればDelphiに似ている。
いまでもあるのかなと久しぶりに探したら、まだやっているみたいです。
http://www.dennougumi.co.jp/products/basic98/ver5/index.html
これなら今でもサポート、マニュアル、サポートがあるのでは。
現在でも通用しているなんて信じられないが。ご参考までに。では。


[7035] Re2:TurboPASCALで苦闘中返信 削除
2013/10/23 (水) 21:15:06 たてぐや
 なんとかものになりました。
 扱うデータは、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の世界をしばらく楽しみました。かれこれ四半世紀
前のテクノロジーです。


[7036] Re3:TurboPASCALで苦闘中返信 削除
2013/10/24 (木) 18:08:21 たてぐや
 うまく動いたと安心して今日実稼働機に持って行ったらダメでした。送信を
繰り返しているうちにメモリを壊してしまうようで、テキストのアトリビュー
トがめちゃくちゃになります。
 結局アセンブラで書かれているRS-233Cを制御するものが悪いんだと思いま
す。どこかにTurboPASCALのRS-232C制御ユニットがないだろうかとググって見た
のですが、さすがにこの時代の資料は見つかりません。んー、困りました。


[7042] Re4:TurboPASCALで苦闘中返信 削除
2013/10/28 (月) 21:44:59 たてぐや
takiさん、本の紹介有難うございます。さすがにDOS時代の書籍は処分してしま
ったかどこかにしまい込まれてしまっているので、資料がなくて歯痒い思いを
しています。

snailさん、情報ありがとうございます。残念ながらIBM互換機用なので使えま
せん。互換機用ならいくつか資料も見つかったのですが、さすがにPC-98となる
と見つかりません。

 で、その後ですが、TurboPASCAL付属のRS-232Cがやはりヘボで、メモリをヒ
ープに取ったり、スタックを増やしたりと小手先の技ではどうにもならないと
いうことで、通信部分だけN88BASICで書きました。N88BASICだとRS-232Cの入出
力がファイルを扱うのと同じ感覚で使えるので楽でした。
 例えばOPEN "COM1:N81XN" AS#1とすればPRINT#1,文字列と言った具合です。
ファイルリストを作るのは逆に不便なのでこの部分はTurboPASCALで、転送する
必要のあるファイルのリストをテキストファイルに出力しておいて、N88BASIC
でこれを読み込ませて送信する方式にしました。バッチを書いておけばうまく
連携して動きます。N88BASICはかれこれ30年も前なので、文法も忘れているし、
予約語や組み込み関数もあやふやに覚えているだけなので、少々手こずりまし
たが、なんとか書き上げました。明日実稼働機に持って行ってのテストになり
ます。今度こそはうまく動いてくれるように…。



[7045] Re5:TurboPASCALで苦闘中返信 削除
2013/10/29 (火) 22:26:34 taki
▼ たてぐやさん

> takiさん、本の紹介有難うございます。さすがにDOS時代の書籍は処分してしま
> ったかどこかにしまい込まれてしまっているので、資料がなくて歯痒い思いを
> しています。


本の紹介だけ!みたいになってすみません。

必要な個所をスキャナーで読み取ってzipでアップ…ってすると、著作権に
違反しますよね。

本自体を郵送してもいいのですが、それぞれ都合があるかもですね。

結局、N88BASICのプログラムで自己解決されたようなのでホッとしています。

> 今度こそはうまく動いてくれるように…。

お祈りしています。


[7046] Re6:TurboPASCALで苦闘中返信 削除
2013/10/30 (水) 22:00:58 たてぐや
▼ takiさん

> お祈りしています。

 ありがとうございます。
 昨日の時点で既にうまく動いていましたが、さらに少しでも効率を上げよう
といじっていました。一度表示された文字列を消去するのにFORループでスペー
スを出力していたのをループ回数分のスペースを一回で出力するようにしまし
た。と、ある時点からLine buffer overflowが出て止まるようになってしまい
ました。原因が解らず、あれこれいじっているうちに夕方になってしまいまし
た。もうわけが分からず、悩んでいるうちに、この文字列を消去するルーチン
をコメントアウトするとうまく動きました。原因はなにげなく変更したスペー
ス出力の部分だったのです。まさかこんな単純な部分で引っかかっているとは
気付かず、一日潰してしまいました。記憶を手繰り寄せてみるとBASICには、
SPACE$(n)(n個のスペースを表示)とかSTRING$(n,m)(コードmの文字をn個出
力する)など思いの外便利な関数がありました。BASICもなかなか捨てたもので
はない、と思いました。
 さて、明日からDelphiに戻らないと…。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82