C言語は「基本のキ」みたいなイメージ。しかし最初からそうであったわけでなく、メジャーになったのは意外と新しい(年寄からみたらば)気がします。DOSの時代、アセンブラかBASICからCへの移行期、PASCAL系の言語がメジャーになりかかった時期もあったような気がします。FreeDOS上ではPASCALも使えるっと。
※実機動作確認には以下を使用しております。
古のPASCAL処理系
太古の昔、アセンブラやFORTRANコンパイラが主流の時代に「そんなアチコチ飛び回る(JMP)んじゃね~」というコンセプト?で登場したのが「ストラクチャード・プログラミング」という思想?だったじゃないかと思います。遠い昔だね。当時言われた「スパゲッティ・プログラム」にならないような言語ということで脚光を浴びた?のがPASCALだったような。知らんけど。
PASCAL自体は、「ストラクチャードな」教育用に開発された経緯もあって、「ピュア」な仕様のままではちょいと実用には不向きなところがあり「工業PASCAL」と呼ばれるような拡張された仕様の各種処理系が登場。そしたら利用が進んだ記憶。
老人の記憶では、UCSD PASCAL処理系のカッコよさに衝撃を受けました。でも処理系のお値段高すぎて手が届かず。その後、ボーランド社からTurbo Pascal処理系が登場するとお値段もこなれて一気に大衆化、これからはPascalじゃ、という雰囲気がしたとかしないとか。これが1980年代中盤かと。残念ながらお惚け老人は、かのベストセラーにして金字塔、Turbo Pascalにはあまりご縁がなく、たまたま仕事で使うことになったMetaWare Pascalにちょっとばっかりお世話になっていた記憶。しかし、その後の C/C++への奔流の中に、この老人のような「腰の定まらぬ」Pascal組は押し流されていったような。唯一、Turbo Pascal御一統はDelphiとして孤高を守って?今にいたるらしいです。
さて、FreeDOSでは「近代化された」PASCAL処理系、FreePASCALも使用可能です。
FreePASCAL
多数の開発ツールがFreeDOSの2枚のCD-ROMイメージに含まれてますが、FreePASCALに「別格」感を与えているのが、LiveCD側に収録されていることです。ここまでNASM、OpenWatcom C/C++を試用してみましたが、これらはFreeDOSの「推し」として表明されており、FreeDOSの各種ツール自体の記述に使われているみた。よってLiveCD側に収録されてました。それらにならんでFreePASCALが格納されてます。その中身を見てみるとOpenWatcom世界とはまた別な世界がある感じ。
FreePASCALのFreeDOSへのインストール手順をざっくりまとめると以下です。
-
- DOSLFNを活かしておく
- FreePASCAL本体、FPCをインストールする
- パスにC:\DEVEL\FPC\BIN\GO32v2を加える
なお、FreeDOSのインストールツールは、FDIMPLES(TUI)でも、FDINST(コマンドラインツール)でも一緒じゃないかと。
まず「1」のステップは、ロング・ファイル・ネームを使えるようにするためです。FreePASCALは「上昇志向?違うか」な処理系なので一部DOS伝統の8.3縛りでは表せないファイル名を使っているらしいです。それで先に DOSLFNパッケージを導入して活かしておきます。
インストール後、とりあえずコマンドラインからDOSLFN.COMをTSRとしてLH(ロードハイ、UMB<第54回>へのロード)したところが以下に。
実際には、FDAUTO.BATの中に DOSLFNを活かすためのif 文がREMでコメントアウトされていたので、これを外しました。これで、毎回のFreeDOS起動時にDOSLFNがメモリに常駐するハズ。
さてこの後は、FPCをインストールです。
FPCをインストール後、FPCのバイナリどもがいるディレクトリにPATHを通し、まずはIDEを起動したところが以下に。
最初は QEMUを curses モードで動かしている場合、
例の「拡張文字の文字化け」問題で画像が何だか分からん、ということでGUIモードで動作しているQEMUから見たのが以下です。
確かにねえ、でも、気がついたらGUIモードで立ち上げ直すほどの意味はないかも。
さてFree Pascal自体は、コマンドラインからでも動かせます。しかし、付属のIDE(FP.EXE)を先に起動してみたのは、FreePASCALがTurbo Pascalコンパチ路線のPASCAL処理系だからです。Turbo PascalといえばIDEだものね。
40年近い月日は記憶も押し流してます。あれ、「PascalでHello World.したいのだけれど」、どしたら良かったっけ? まあ、なんとか書いた吉例Hello Worldが以下に。
コンパイルされた、HELLO.EXEを実行してみたものが以下に。
Free Pascal 処理系は以下のような特徴らしいです。
-
- 386以上必須の32ビットのコードを吐く。(コンパイラ自体は64ビットにも対応しているみたいだが)
- DOS上で32ビットのオブジェクトを走らせる仕組みとして GO32v2 というDOSイクステンダを使う
- FreePASCALの各種ツール自体、 GO32v2 上で走る
- デバッガはGDBを使うなど、一部のGNUツールに依存している。FreeDOSへのインストールパッケージにはそれらが含まれているでのインストールすれば使えるようになる
ということでLinux版のFree Pascalを使えば、フツーにLinuxのオブジェクトも作れるみたいっす。
念のため、-cursesモードのQEMUで、コマンドラインでもコンパイル&実行してみました。
吉例、Hello Worldもできとるな~。