|
![]() |
|
![]() |
MindStorms/CyberMaster用制御言語であるNQC(Not Quite C)をDOSに移植しました。
昔作って放ったらかしになっていた,自家製シリアル通信クラスライブラリを使用しています。
PC/AT用とPC-98用の両方の通信機能を装備しており自動判別して動作します。
オリジナルのNQCは v1.3 です。最近 v2.0 が公開されましたが,こちらの移植にも挑戦したものの,どうもうまく動かせませんでした。
というわけで,DOS版は初お目見えにして早速,進化の望みが経たれてしまったかもしれません。^^;
言語の記述のしかたはもちろん,コマンドラインでの使い方も,既存のWin32版と同じです。
詳細は本家のページやJinSatoさんのNQC関連情報を参照してください。
以下のPCで動作を確認しました。
| 最新版 |
NQC for DOS v1.3 (built Jun 01 2000, 21:48:05) (ソース同梱)
|
| 旧版 |
NQC for DOS v1.3 (built Sep 29 1999, 22:41:17) (ソース同梱)
|
このプログラムは Watcom C/C++ 10.5 でビルドしました。
メイクユーティリティは Microsoft の nmake が相性が良いみたいです。
DOS用に移植するにあたって以下の点を変更しています。
16ビットDOSプログラムを作成できるC++コンパイラとなると,BorlandかWatcomといったところでしょうが,これらはもう既に開発は停止(または停滞?)しているので,C++の最新仕様を満たしていなかったり,非互換部分があったりして大変です。Borlandのコンパイラなら持っている方も多いと思うのですが,ソースコード parray,cpp の「void Destruct(char *p) { ((T*)p)->~T(); }」という部分が通りませんでした。怪しげなコードですが,最新の言語仕様では認められているのか知りません。Watcomの方は意外とあっさり通ってくれたのでこちらを採用しました。
ところでWatcom C/C++ 11.0はイマイチです。10.5が良いです。なぜかというと,11.0ではマルチバイト文字列のサポート強化のために,スタートアップルーチン内でコードページ周りの情報取得などをやっているのです。それでprintfなんかを使ったりするだけで,実行ファイルが以前より大きくなってしまいます。さらに悪いことにHP 100LXの日本語ドライバのバグ(だと思うのですが...)のために,なんと,Watcom11.0の実行ファイルは動かないのです。いや,もしかしたらドライバのバグは私の知らないうちに治っているかも...,治っていたら良いなぁ。誰か教えてください。それはともかく,個人的にはマルチバイト文字列サポートなんていらないから,Watcom C/C++ 10.5の方がお勧めです。
オリジナルのNQCはMPL(Mozilla Pulibc License)のもとで配布されており,NQC for DOS もこれに従います。
このプログラムを使用したことにより,何らかの不利益が発生しても,責任を負いません。
|
|