えーと、最初は DOS 備忘日記中でやっつけとこうかと思いましたが、なんとなく独立コンテンツにしてみたり。 見ての通り、内容はかなりユルめです。 役たたなくてすいません。
なお、突発的な企画ですので、いきなり消滅する可能性もあります。 あしからず。
ボーランド(てゆうかインプライズ)のサイトに行くとそれらしいのが存在するので、好きなのをダウンロードする。
http://community.borland.com/museum/
昔はその場でダウンロードできたが、現在は登録が必要なもよう。 登録そのものは無料だが、住所、氏名、メールアドレスその他を(もちろん英語で)入力し、さらにアンケートにも答える必用がある。 (面倒な人はこのへんとかこのへんとかこのへん見てみるといいかも)
「なんかいろいろあって迷っちゃう〜」などという人は、とりあえず Turbo C++ 1.01 を落とせばいいと思う。 ちょっとでも新しいやつのほうが、たぶん何かと便利だ。 C++ の機能がいらないなら Turbo C 2.0 でもかまわない気がする。 Pascal に何かしらの思い入れがある人は Turbo Pascal 5.5 も落としてみよう(Turbo Pascal 3.0 も捨て難いのだが)。 ちなみにどちらも DOS 用。 というか PC/AT 用。 NEC PC-9801 系や FM-R/TOWNS 系での動作は不明。 少なくとも統合環境は動作しないはず。
最近は Borland C++ 5.5 も無料化したらしい。 こちらはコマンドラインツール部分のみの公開。 Windows 上のみで動作する。 作成できるのも Win32 アプリのみ。
tc201.zip 中に含まれるすべてのファイルをどこか適当なディレクトリに展開して、install.exe を実行し、指示に従う。 必ず英語モードで実行すること。 日本語モードのままだと画面に何も表示されないので、そんな時はいさぎよく Esc キーを押してインストーラからいったん抜ける。
インストールが滞りなく終了したら、手動で autoexec.bat を編集し、インストーラの指示どおりに PATH を設定する。
基本的には Turbo C 2.01 の場合と同じ。
tcpp101.zip 中に含まれるすべてのファイルをどこか適当なディレクトリに展開して(そのまま展開すると複数ディレクトリに分配されてしまい、インストールが失敗するので、ディレクトリをつけないで展開する)、install.exe を実行し、指示に従う。 必ず英語モードで実行すること。 日本語モードのままだと画面に何も表示されないので、そんな時はいさぎよく Esc キーを押してインストーラからいったん抜ける。
インストールが滞りなく終了したら、手動で autoexec.bat を編集し、インストーラの指示どおりに PATH を設定する。
付属のインストーラを使わず、自分で zip ファイルを展開して、しかるべき場所にファイルを置いていくという方法でのインストールも、もちろん技術的には可能である。 ただ面倒くさいだけじゃんとかいわれるとすこし困るが、PC-9801/21、FM-R/TOWNS 上でどうにかしたい人もいるかもしれないので、いちおう書いてみる。 (念のため申し上げておきますが、これらの機種上で動作するか否か、私はまったく確認していない)
手順は以下のようになる。
md BGIこの中でどうしても必用だと思われるのは
md BIN
md CLASSLIB
md CLASSLIB\EXAMPLES
md CLASSLIB\INCLUDE
md CLASSLIB\LIB
md CLASSLIB\SOURCE
md EXAMPLES
md EXAMPLES\STARTUP
md EXAMPLES\TCALC
md INCLUDE
md INCLUDE\SYS
md LIB
md TOUR
md BINの4つだろう。 ぜんぶ説明するとあまりにも煩雑なので、この4ヶ所に限定させてもらう。 手抜きでごめん。
md INCLUDE
md INCLUDE\SYS
md LIB
-IC:\TC\INCLUDEこんな感じ。
-LC:\TC\LIB
必用なら PATH を BIN ディレクトリに通しておくのは、インストーラを使った場合と同じ。
統合環境版のコンパイラ (tc.exe) とヘルプファイル (tchelp.tch) は複数ファイルに分割されており、何らかの方法で結合して zip ファイルに復元してからでないと展開できない。 先頭の4バイトを取り除いて、拡張子順 (CA1, CA2...) に繋いでいけばとりあえずよさそうなので、それらしいプログラムを作ってみた。
バッチファイルなりプログラムを作成するなりして、自前のインストーラを作ってみるのもいいかもしれない。 志のある方はやってみてください。
とりあえず Turbo-C 2.01 のスタートアップ部分のソース (C0.ASM) を読んでみたが、IBM PC のタイマ BIOS (INT 1Ah) を呼び出している部分があった。 ということで、Turbo-C で作ったプログラムは、(たとえ、プログラム中で DOS の標準的な機能しか使っていない場合でも)NEC PC-98x1 系や FM-R/TOWNS 系の機種で動作に問題が出る可能性がある。 (当たり前だが、日本語版ではこのあたり、ちゃんと修正されていたはず)
とりあえず該当部分(c0.asm の 302〜305 行目)をコメントアウトしてアセンブルし直したスタートアップモジュールを元ファイルと入れ替えてみたが、特に問題なさそうな気配。 この修正で明らかに影響を受けるのは clock() 関数である。 スタートアップモジュールがプログラム開始時間を保存しなくなるので戻り値が異なってくる。
たぶん Turbo Pascal 5.5 とかにもそういう機種依存があるんだろうなあ、と思いつつ、まだ調べてはいない。
Turbo-C やら Pascal やらがフリーになったのはありがたいが、他のやつは今後どうするのだろう。 Turbo BASIC だの Turbo Prolog だのといった、もう話のタネにしかならないようなブツがあったはずである。 そして個人的にちょっと残念なのは、なんといってもアセンブラがないことだ。 tasm がフリーで出回れば、遠慮会釈なく ideal モードのソースが書き放題なのになあ。 というほどに ideal モードの構文を詳しく知らないのだが。
それに、Turbo-C にはインラインアセンブラを自前で処理する能力がない。 ソース中にインラインアセンブラが含まれる場合、コンパイラはアセンブラのソースを吐き出して外部のアセンブラ(デフォルトは tasm.exe)に渡す。 これはときどき不便だ。 どうしても必要なら ArrowAsm が使えるけど(-E オプションでアセンブラ名を指定)。
ということで唐突だが、TASM がダメなら MASM である。 マイクロソフトとボーランド(インプライズ)との過去の確執に思いを馳せつつ、Macro Assembler を無料で合法的に入手する手段を検討する。
Windows 98 DDK のビルドツール中に masm 6.11d が入っている。 Win32 コンソールアプリなので Windows の DOS 窓でだけ使える。 ただし、PharLap の TNT DOS Extender があれば生 DOS でも動くのかもしれない。
なるたけダウンロード量を減らしたい、という場合は BINS_DDK.EXE のみをダウンロードする。 Windows 上で BINS_DDK.EXE を実行するとインストール先フォルダを聞いてくるので適当に答えると、該当ディレクトリに BINS_DDK.CAB というのができているはずである。 あとは展開ツールを用意して中のファイルを展開したのち、それっぽい名前のファイルをそれっぽくリネームする。 あえて多くを語らないのである。
OS/2 DDK の中に MASM 6.0 と MS-C 6.0 が入っていることはかなり知られている。 しかし OS/2 バイナリなので DOS では使えない。 Windows NT 3.5 とかには OS/2 1.x エミュレーション機能があるらしいので、それだと動くかもしれない。
それはそれとして、OS/2 DDK の Build Environment 中に、MASM 5.1、LIB、LINK が含まれている。 そして、これは DOS 上で動く。
OS/2 DDK は無料でダウンロード可能(登録が必要)。
ボーランドのヘルプファイルの構造は、「OPEN ARCHITECTURE HANDBOOK」の中でいちおう公開されている。
さらに、「OPEN ARCHITECTURE HANDBOOK」付属ディスクの中にヘルプコンパイラと逆コンパイラ(ソースのみ。自分でコンパイルして使う)が入っている。 (英語版でもよいなら Wotsit で入手可能。キーワード "borland" で検索されたし) ということで、Turbo-C 2.01 と Turbo Pascal 5.5 のヘルプを逆コンパイラにかけてみたが、肝心の本文がまったく出てこないのだった。 ドキュメントによると未対応らしい。 無念。
しかたないので、テキスト部分を取り出すプログラムをでっちあげてみた。
bhtxt000.zip (8,488 bytes)あからさまにやっつけ仕事。
Turbo C++ 1.01 のヘルプ (tchelp.tch) はボーランドの逆コンパイラでテキスト変換できた。
言うだけで終わりの可能性甚大。
BCC32 コマンドラインオプションヘルプ。
(Borland Community にある Using the Borland 5.5 Compiler and command-line tools あたりも参照)