FreeDOS上にインストールしたTurbo Pascalを現代によみがえらせるFreePascalコンパイラを使ってみてます。今回はその昔のTurbo PascalにもあったハズのUnitを使おうとしてツボりました。結局、インストールが不完全だったのね。まあ、お陰でライブラリ共の在処が明確になりました。
※実機動作確認には以下を使用しております。
Free Pascalで使用可能なライブラリ共
素人老人が勝手にまとめると、Free Pascal で使用可能なライブラリ、ソース上で、
uses ナンチャラ
などとして宣言すると使えるようになる関数やら定数やらは、以下の3階層が折り重なっているようです。
いろいろ開発上の歴史的な経緯などあり、階層が分かれているようですが、上から下へ向かって「新しく」「水準の高い」ライブラリになっている感じがします(個人の感想です。)
なお、階層はいろいろあり~のですが、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の様子が以下に。
上記を展開して得た CRT ユニットのファイルの様子が以下に。
ライブラリのパスが「rtl-console」と11文字だったのね。ファイル名は8文字3文字に収まっているのに。。。
まあ、これでStandard unitsの中のCRTユニットが使えるようになったハズ。
uses Crt が効いているみたいです。ちゃんと文字色変わっているし。。。