ソフトな忘却力(62) FreeDOS、Free Pascal、Unitどもの在処

Joseph Halfmoon

FreeDOS上にインストールしたTurbo Pascalを現代によみがえらせるFreePascalコンパイラを使ってみてます。今回はその昔のTurbo PascalにもあったハズのUnitを使おうとしてツボりました。結局、インストールが不完全だったのね。まあ、お陰でライブラリ共の在処が明確になりました。

※「 ソフトな忘却力」投稿順 Index はこちら

※実機動作確認には以下を使用しております。

    •  Windows 11 PC (i5-1235U)
    •  Ubuntu 24.04 LTS on WSL2
    •  QEMU 8.2.2
    •  FreeDOS 1.3
Free Pascalで使用可能なライブラリ共

素人老人が勝手にまとめると、Free Pascal で使用可能なライブラリ、ソース上で、

uses ナンチャラ

などとして宣言すると使えるようになる関数やら定数やらは、以下の3階層が折り重なっているようです。

Standard uints

Run-Time Library(RTL)

FCL(Free Component Library)

いろいろ開発上の歴史的な経緯などあり、階層が分かれているようですが、上から下へ向かって「新しく」「水準の高い」ライブラリになっている感じがします(個人の感想です。)

なお、階層はいろいろあり~のですが、FreeDOS上にインストールした場合、以下のディレクトリ配下に全て格納されることになります。必要とされるファイルはユニット名に対して、拡張子 .oと.ppuの2種類です。

C:\DEVEL\FPC\units\go32v2\

FCLだと「FCL-ナンチャラ」みたいなディレクトリ多数が掘られて格納されてます。RTLだとそのものずばりの「RTL」というディレクトリに格納されてます。Standard unitsについては「RTL-ナンチャラ」みたいなディレクトリに分かれて入っているみたい。

いずれにせよ上記のパス配下に展開されていて、fpc.cfg ファイルの中でそのパスが示されていることが必要です。

インストール時の問題

一番上のStandard uintsには、古い版のTurbo Pascalにも見つかるような「伝統の」ユニットが含まれています。今回は、ベタな「crt」という画面にテキスト出力するユニットを使ってみん、としてツボりました。結論からいうと

CRT ユニットを構成するファイルがZIPファイルから展開されてなかった

のが理由です。他の「高度」なライブラリがインストールされていたのに、そんなベーシックなライブラリがインストールされていなかった理由は、ロング・ファイル・ネームでした。crt.o とか crt.ppu とか全然ロングでないのですが、それを格納するべきディレクトリ名がロングでした。インストール時に一応DOSLFNをLHして、ロングファイル名を有効化してあったのですが、自動ではインストールしてくれておらず。今回手動で展開したらOKになりました。自動で展開してくれてなかったZIPの様子が以下に。LFNfiles

上記を展開して得た CRT ユニットのファイルの様子が以下に。crtUint

ライブラリのパスが「rtl-console」と11文字だったのね。ファイル名は8文字3文字に収まっているのに。。。

まあ、これでStandard unitsの中のCRTユニットが使えるようになったハズ。

とっても短いプログラムで動作確認したところが以下に。crtSample

uses Crt が効いているみたいです。ちゃんと文字色変わっているし。。。

ソフトな忘却力(61) FreeDOS、Free Pascal、コマンドラインから整数入力 へ戻る

ソフトな忘却力(63) FreeDOS、Free Pascal、自前Unitの作成 へ進む