はじめに
Turbo Pascal 3.0 の使い方を調べてみました。
Turbo Pascal 1.0~3.0 までは基本的に同じ操作方法です。
使い方
TINST.COM
を実行すると環境設定プログラムが起動します。TURBO.COM
を実行すると Turbo Pascal が起動します。
Turbo Pascal 3.0 は、基本的に TURBO.*
と TINST.*
というファイルだけ揃えれば動作します。
ファイル名 | 説明 |
---|---|
TURBO.COM | Turbo Pascal 本体 |
TURBO.MSG | エラーメッセージファイル |
TURBO.OVR | オーバーレイファイル (CP/M-80 版のみ) |
TINST.COM | 環境設定プログラム |
TINST.MSG | 環境設定プログラム用テキストファイル |
TINST.DTA | 環境設定用データファイル |
Turbo Pascal 3.0 には、大きく分けて 4 種類ありますが、IDE の使い方にほぼ差異はありません。OS 固有の機能については、それと判るようなコメントを入れておきます。
Z80 | Intel 8086 | |
---|---|---|
CP/M | CP/M-80 | CP/M-86 |
PC DOS | (N/A) | PC DOS (IBM PC) |
MS-DOS | (N/A) | MS-DOS (非 IBM PC) |
PC DOS の OEM 版が MS-DOS です。固有機能以外に差異はないので、PC DOS と MS-DOS をひっくるめて DOS と呼んでいる箇所があります。
最終マイナーバージョンは次の通りだと思われます。
バージョン | リリース年 | |
---|---|---|
CP/M-80 | 3.01A | 1985 |
CP/M-86 | 3.01A | 1985 |
MS-DOS | 3.02A | 1986 |
PC DOS | 3.02A | 1986 |
パッケージによっては、その機種用のグラフィックライブラリ等が付属している事があります。
TINST.COM
Turbo Pascal の環境設定を行います。
Embarcadero が配布しているアーカイブ中のファイルは何故か読み取り専用の属性が付いているので attrib -R *.*
で属性を解除する必要があります。これを忘れていると TINST.COM
を実行した時にエラーになります。
■ Screen type
画面の設定を行います。
詳細については別記事「Turbo Pascal 3.0 のスクリーン設定」にまとめてあります。
■ Command installation
キーボードショートカットの設定を行います。
詳細については別記事「Turbo Pascal 3.0 のキーボードショートカット」にまとめてあります。
■ Msg file path (DOS 版のみ)
メッセージファイルのパスを指定します。
TURBO.COM
エラーメッセージファイルの読み込み
Turbo Pascal が起動するとエラーメッセージファイルを読み込むか聞かれます。N
を選ぶと使用可能なメモリがわずかばかり増えますが 1、普通は Y
でいいと思います。
メインメニュー
メインメニューです。
■ Logged drive:
メインメニューで〔L〕
を押すとカレントドライブを切り替えることができます。
■ Active directory: (DOS 版のみ)
メインメニューで〔A〕
を押すとカレントディレクトリを切り替えることができます。
■ Work file
メインメニューで〔W〕
を押すとワークファイルを選べます。拡張子 *.PAS の場合、拡張子は省略できます。
■ Main file
メインメニューで〔M〕
を押すとメインファイルを選べます。拡張子 *.PAS の場合、拡張子は省略できます。
メインファイルはコンパイル対象のファイルです。プロジェクトファイルに相当するファイルを指定します。単一のソースファイルしか使わないのであれば、メインファイルを指定する必要はありません。
複数のソースファイルがある場合にメインとなるファイルをここに指定し、ワークファイルを切り替えながら編集する感じです。
■ Edit
メインメニューで〔E〕
を押すとワークファイルを編集します。ワークファイルを指定していない場合には、ワークファイルを選べます。
エディタでの操作方法や、言語については別記事にまとめてあります。エディタに関しては、終了コマンド〔Ctrl〕+〔K〕〔D〕
だけ覚えておけばなんとかなるでしょう。
- キーボードショートカットの詳細については「Turbo Pascal 3.0 のキーボードショートカット」という別記事があります。
- Turbo Pascal の文法については Delphi 向けではありますが「標準 Pascal 範囲内での Delphi 入門」が役に立つと思います。
- 『Turbo Pascal ver 3.0』固有のルーチンや機能については「Turbo Pascal 3.0 の Pascal」という別記事があります。
■ Compile
メインメニューで〔C〕
を押すと、メインファイルが指定してあればメインファイルを、ワークファイルしか指定してなければワークファイルをコンパイルします。
コンパイルした実行ファイルの形式は compiler Options
で選べます。
■ Run
メインメニューで〔R〕
を押すと、プログラムを実行します。ファイルが指定されていない場合にはワークファイルを選べます。
■ Save
メインメニューで〔S〕
を押すと、ワークファイルを保存します。
■ eXecute
メインメニューで〔X〕
を押すと、任意の実行形式ファイルを実行できます。
Compile
で生成した *.com ファイルも実行できます。
■ Dir
メインメニューで〔D〕
を押すと、カレントドライブのファイルを表示します。
■ Quit
メインメニューで〔Q〕
を押すと、Turbo Pascal を終了します。
■ compiler Options
メインメニューで〔O〕
を押すと、コンパイラオプションを表示します。
▶ compile
次の 3 つのコンパイラオプションは出力を決定するもので、互いに排他となります。
オプション | 説明 |
---|---|
〔M〕emory | 出力先をメモリに指定します (デフォルト)。 |
〔C〕om-file | 出力先をファイルに指定します。*.COM ファイルを生成します (CP/M-80 / DOS)。 |
〔C〕md-file | 出力先をファイルに指定します。*.CMD ファイルを生成します (CP/M-86)。 |
c〔H〕n-file | 出力先をファイルに指定します。*.CHN ファイルを生成します。 |
- デフォルトの
Memory
はメモリ上でそのままコンパイル&実行します。実行形式ファイルは作られません。 -
Com-file
にすると実行形式ファイル (*.COM) が作られます (CP/M-80 / DOS)。 -
Cmd-file
にすると実行形式ファイル (*.CMD) が作られます (CP/M-86)。 - メモリが足りなくて
Memory
では実行できない場合でも、一旦実行形式ファイルを作れば実行できる事があります。 - *.CHN ファイルは
Chain()
で使われるファイル形式です。*.CHN を生成します。
メインメニューから〔O〕〔C〕〔Q〕
とやって実行ファイルを吐く設定にして戻るってのをよくやります。
Turbo Pascal 3.0 では DOS 版であっても COM 形式ファイルしか出力できません。
See also:
▶ [Memory]: 追加設定 (DOS 版のみ)
・command line Parameter:
コンパイラオプションで〔P〕
を押すと、実行時引数を設定する事ができます。
▶ [Com-file] / [cHn-file]: 追加設定 (CP/M-80 版)
・Start address:
COM / CHN ファイル出力時に〔S〕
を押すと、コードの最初のアドレスを設定できます。
・End address:
COM / CHN ファイル出力時に〔E〕
を押すと、プログラムが利用可能な最高位のアドレスを設定できます。
Mem | Start (Min) |
End | End (Max) |
---|---|---|---|
64K | 20E3 | F942 | FC06 |
MSX0 Stack MSX-DOS (57.25K) |
20E3 | DE42 | E106 |
MSX0 Stack MSX-DOS (漢字) |
20E3 | DA42 | DD06 |
56K | 20E3 | D942 | DC06 |
MSX0 Stack Nextor (54.75K) |
20E3 | D442 | D706 |
MSX0 Stack MSX-DOS2 (54.5K) |
20E3 | D342 | D606 |
MSX0 Stack MSX-DOS2 (漢字) |
20E3 | CF42 | D206 |
48K | 20E3 | B942 | BC06 |
PC-G850V EborsyEEP (43K) |
20E3 | A542 | A806 |
40K | 20E3 | 9942 | 9C06 |
32K | 20E3 | 7942 | 7C06 |
実行形式ファイル (*.COM) をメモリ搭載量の異なる機種で動作させるためには、その機種の TPA に合わせてエンドアドレスを変更する必要があります。
▶ [Cmd-file] / [cHn-file]: 追加設定 (CP/M-86 版)
・minimum cOde segment size:
CMD / CHN ファイル出力時に〔O〕
を押すと、最低限必要なコードセグメントのサイズを設定する事ができます。
・minimum Data segment size:
CMD / CHN ファイル出力時に〔D〕
を押すと、最低限必要なデータセグメントのサイズを設定する事ができます。
・mInimum free dynamic memory:
CMD / CHN ファイル出力時に〔I〕
を押すと、最低限必要な動的メモリ領域を設定する事ができます。
・mAximum free dynamic memory:
CMD / CHN ファイル出力時に〔A〕
を押すと、動的メモリ領域の上限を設定する事ができます。
▶ [Com-file] / [cHn-file]: 追加設定 (DOS 版)
・minimum cOde segment size:
COM / CHN ファイル出力時に〔O〕
を押すと、最低限必要なコードセグメントのサイズを設定する事ができます。
・minimum Data segment size:
COM / CHN ファイル出力時に〔D〕
を押すと、最低限必要なデータセグメントのサイズを設定する事ができます。
・mInimum free dynamic memory:
COM / CHN ファイル出力時に〔I〕
を押すと、最低限必要な動的メモリ領域を設定する事ができます。
・mAximum free dynamic memory:
COM / CHN ファイル出力時に〔A〕
を押すと、動的メモリ領域の上限を設定する事ができます。
▶ Find run-time error
コンパイラオプションで〔F〕
を押し、実行時エラーが出た場合に表示される PC の値を入力すると、該当するソースコードの位置へジャンプする事ができます。
▶ Quit
コンパイラオプションは〔Q〕
を押して抜けられます。メインメニューへ戻ります。
■ (Enter)
メインメニューで何もせずに〔Enter〕
を押下すると、メインメニューを再描画します。
Hello,world.
とりあえず Hello,world.
を表示するプログラムを作ってみましょう。
A:>TURBO
Turbo Pascal を起動します。
機種によっては事前に画面モードを切り替えるコマンドを実行する必要があるかもしれません。
Include error messages (Y/N)?
はとりあえず Y
を押しておきます。
メニューで 〔W〕
を押してワークファイルを指定します。ファイル名は hello
とします。拡張子を省略しているので hello.pas
がワークファイルとなります。
〔Enter〕
を一度押すとメニューが更新され、Work file:
の所が更新されているのが確認できます。
メニューで 〔E〕
を押してワークファイルを編集します。
program Hello;
begin
Writeln('Hello,world.');
end.
〔Ctrl〕+〔K〕〔D〕
でエディタを終了します。
メニューで 〔S〕
を押してワークファイルを保存します。
メニューで 〔C〕
を押してワークファイルをコンパイルします。
メニューで 〔R〕
を押してプログラムを実行します。
次に、メニューで 〔O〕〔C〕〔Q〕
と順に押し、実行形式ファイルを生成するように指定します。
メニューで 〔C〕
を押してワークファイルをコンパイルすると、実行形式ファイル hello.com
が生成されます。
メニューで 〔R〕
を押して実行形式ファイルを実行する事も、メニューで 〔Q〕
を押して DOS のプロンプトに戻ってから hello.com
を実行する事もできます。
異なる仕様の Turbo Pascal (DOS 版 / CP/M-86 版)
DOS 版および CP/M-86 版には、異なる仕様の Turbo Pascal が 2 種類含まれています。
TURBO-87
数値演算コプロセッサ Intel 8087 が有効な環境では TURBO.COM
(CP/M-86 版は TURBO.CMD
) の代わりに TURBO-87.COM
(CP/M-86 版は TURBO-87.CMD
) を実行する事ができます。
Real 型に対して 8087 の演算が行われます。80486DX 以降の CPU では数値演算コプロセッサが内蔵されているため、こちらを常用していいかと思います。
TURBO-BCD
TURBOBCD.COM
(CP/M-86 版は TURBOBCD.CMD
) は、BCD 演算をサポートしているバージョンです。
Real 型に対して BCD 演算が使われるため、精度が向上します。有効範囲は 1E-63 ~ 1E+63 です。
TURBOBCD.COM
(CP/M-86 版は TURBOBCD.CMD
) では次の実数型を返す関数及び定数は利用できません。
ArcTan(), Cos(), Exp(), Ln(), Pi, Sin(), Sqrt()
Form() 関数
TURBO-BCD 版には Form()
という関数が追加されています。これは書式文字列からフォーマットされた文字列を作るための関数です。
function Form(St, var1, var2, ...varN): (Type of String);
次のような使い方になります。
var
s: string[20];
begin
s := Form('Total: $#,###.##', 1234.56);
Writeln(s);
end;
書式文字列に使える文字は次の通りです。
・数値の場合
記号 | 説明 |
---|---|
# | 桁数を指定します。指定幅未満の場合、空白で埋められ、指定幅を超えると * で埋められます。負数の場合には - が出力されます。 |
@ | 指定幅未満の場合、空白で埋められます。その他は # と同じです。 |
* | 指定幅未満の場合、* で埋められます。その他は # と同じです。 |
$ | 先頭に $ が出力されます。 |
- | 指定位置に - が出力されます。 |
+ | 指定位置に + が出力されます。 |
, | 整数部を , で区切ります |
. | 整数部と小数部を . で区切ります。 |
・文字列の場合
記号 | 説明 |
---|---|
# | 文字列は左詰めで出力されます。 |
@ | 先頭から指定すると文字列は右詰めで出力されます。 |
TINST.COM
によるカスタマイズの対象ファイルは TURBO.COM
なので、事前にリネームが必要となります。常用するのであれば TURBO-87.COM
や TURBOBCD.COM
を TURBO.COM
にリネームしておくとよいでしょう (CP/M-86 版は *.CMD
)。
8bit 文字 (CP/M 80 版)
CP/M 80 版の Turbo Pascal は 8bit 文字が通りません。
このため、ソースコードにカナ等を入力できても保存して開き直すとソースコードが破損する事があります。
この問題を回避するには TURBO.COM
にパッチを当てます。
任意のバイナリエディタで 7F FE
を検索し、FF FE
に書き換えれば 8bit 文字が通るようになります。これは Turbo Pascal 1.0 / 2.0 も同様です。
・本当は E6 7F
を検索すべきなのですが、それだと該当箇所が多くなってしまうため 7F FE
を検索しています。検索にヒットした箇所は E6 7F FE
という並びになっていると思います。
・E6 7F
は「AND 7F (ANI 7F)」なので、これを「AND FF (ANI FF)」にして 7 bit のマスクを外しています。
書籍
『Turbo Pascal』用のマニュアルはマイクロソフトウエアアソシエイツ (MSA) が出している 『Turbo Pascal プログラミング・マニュアル』(定価: 1,600円) が、製品付属のものと同等との事。
ただ、こちらの書籍は 1984/6/25 発行で、時期的には ver2.0 リリース後なのですが、ver1.0 の内容しか書かれていません。
どうやら製品の『Turbo Pascal ver3.0』には、この『Turbo Pascal プログラミング・マニュアル』と、差分の『Turbo Pascal ver.3 プログラミング・マニュアルの追加』という冊子を付けて販売していたようです。
- ver1.0 から ver2.0 で追加された主な機能はオーバーレイです。
- ver2.0 から ver3.0 で追加された主な機能はコンパイラ性能の向上とファイル処理ルーチンの拡充です。DOS 版の 3.02A では先述の 8087 対応&BCD 対応版が追加されています。
英語版の 『Turbo Pascal version 3.0 Reference Manual』 にも 2 種類あるようで、CP/M-86 と DOS を扱ったものと、CP/M-80 を扱ったものがあります。有難い事に、英語版のマニュアルを公開しているサイトと、CP/M-80 部分に特化したマニュアルを公開しているサイトがあります。
- Turbo Pascal version 3.0 Reference Manual (hansotten.file-hunter.com)
- The Turbo Pascal Reference Manual project
『Turbo Pascal version 3.0 Reference Manual』には誤りと記載漏れがあり、各 OS 用の誤りと記載漏れはインストールディスク内の READ.ME
(または README
) に書かれています。すべての誤りと記載漏れについて知るには CP/M-80, CP/M-86, DOS 用のインストールディスクを確認する必要があります。
MS-DOS、特に PC-98 版用であれば 『Turbo Pascal ハンディ・マニュアル』 があれば、大抵の事は理解できます。
残念ながら mem[] や port[] など、ハードウエア寄りの機能については説明がありません。
ver4.0 以降では CP/M 対応がなくなったので、CP/M 版の情報を知るのに後続のマニュアルでは情報不足かもしれません。
Seea also:
公式のサンプルプログラム集
公式からサンプルプログラム集がリリースされていました。『Turbo Tutor』を除き、基本的には DOS 用のサンプルプログラム集となっています。
書籍 | 説明 |
---|---|
Turbo Tutor | チュートリアル集。チュートリアルと言いながら、マニュアルに書かれていない重要な事がサラっと書かれている。 |
Turbo Pascal Database Toolbox | 旧 Turbo Toolbox。Turbo Access (B+tree データベース)、Turbo Sort (クイックソート)、GINST (TINST のような汎用インストーラ) が含まれる。 |
Turbo Pascal Editor Toolbox | テキストエディタの作り方。 |
Turbo Pascal Graphic Toolbox | グラフィックスルーチン。最終バージョンは恐らく 1.07A。 |
Turbo Pascal Numerical Methods Toolbox | 一次方程式、補間、数値微分、数値積分、行列、固有値と固有ベクトル、初期値問題と境界値問題、最小二乗近似、高速フーリエ変換ルーチンなど。DOS 用。TURBO-87.COM の使用が前提となっている。 |
Turbo GameWorks | チェスとブリッジと五目並べ。 |
『Turbo Toolbox』の機能の多くは Turbo Pascal 5.0 以降の製品に取り込まれています。
おわりに
何も難しいことはないですね。
アンティークソフトとして PC DOS 版も公開されているので、そちらで練習 (?) してみるのもいいかもしれませんね。
See also:
- Turbo Pascal v3.01A (CP/M-80 版: TP_301A.ZIP) (retroarchive.org)
- Turbo Pascal v3.01A (CP/M-86 版: Trbpas86.zip) (retroarchive.org)
- Turbo Pascal v3.01A (MS-DOS 版: Turbo Pascal 16-Bit 3.0.zip) (archive.org)
- Turbo Pascal v3.02A (PC DOS 版: tp302.zip) (embarcadero.com)
- Turbo Pascal v3.02A (PC DOS 版: tp302.zip) (borland.com: Internet Archive)
- Embarcadero が公開しているアンティークソフト一覧 (Qiita)
- Pascal の勉強に使えそうな Pascal 処理系 (Qiita)
索引
- Turbo Pascal 3.0.x の使い方
-
1.5KB 程節約できます。CP/M-80 版では "わずか" ではないかもしれませんね。 ↩