5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Turbo Pascal 3.0 の使い方

Last updated at Posted at 2021-01-23

はじめに

Turbo Pascal 3.0 の使い方を調べてみました。

image.png

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 の環境設定を行います。

image.png

Embarcadero が配布しているアーカイブ中のファイルは何故か読み取り専用の属性が付いているので attrib -R *.* で属性を解除する必要があります。これを忘れていると TINST.COM を実行した時にエラーになります。

■ Screen type

画面の設定を行います。

image.png

詳細については別記事「Turbo Pascal 3.0 のスクリーン設定」にまとめてあります。

■ Command installation

キーボードショートカットの設定を行います。

image.png

詳細については別記事「Turbo Pascal 3.0 のキーボードショートカット」にまとめてあります。

■ Msg file path (DOS 版のみ)

メッセージファイルのパスを指定します。

image.png

TURBO.COM

エラーメッセージファイルの読み込み

Turbo Pascal が起動するとエラーメッセージファイルを読み込むか聞かれます。N を選ぶと使用可能なメモリがわずかばかり増えますが 1、普通は Y でいいと思います。

image.png

メインメニュー

メインメニューです。

image.png

■ Logged drive:

メインメニューで〔L〕を押すとカレントドライブを切り替えることができます。

image.png

■ Active directory: (DOS 版のみ)

メインメニューで〔A〕を押すとカレントディレクトリを切り替えることができます。

image.png

■ Work file

メインメニューで〔W〕を押すとワークファイルを選べます。拡張子 *.PAS の場合、拡張子は省略できます。

image.png
ワークファイルは編集対象のファイルです。

■ Main file

メインメニューで〔M〕を押すとメインファイルを選べます。拡張子 *.PAS の場合、拡張子は省略できます。

image.png

メインファイルはコンパイル対象のファイルです。プロジェクトファイルに相当するファイルを指定します。単一のソースファイルしか使わないのであれば、メインファイルを指定する必要はありません。

複数のソースファイルがある場合にメインとなるファイルをここに指定し、ワークファイルを切り替えながら編集する感じです。

■ Edit

メインメニューで〔E〕を押すとワークファイルを編集します。ワークファイルを指定していない場合には、ワークファイルを選べます。

image.png

エディタでの操作方法や、言語については別記事にまとめてあります。エディタに関しては、終了コマンド〔Ctrl〕+〔K〕〔D〕だけ覚えておけばなんとかなるでしょう。

■ Compile

メインメニューで〔C〕を押すと、メインファイルが指定してあればメインファイルを、ワークファイルしか指定してなければワークファイルをコンパイルします。

image.png
コンパイルした実行ファイルの形式は compiler Options で選べます。

■ Run

メインメニューで〔R〕を押すと、プログラムを実行します。ファイルが指定されていない場合にはワークファイルを選べます。

image.png

■ Save

メインメニューで〔S〕を押すと、ワークファイルを保存します。

image.png

■ eXecute

メインメニューで〔X〕を押すと、任意の実行形式ファイルを実行できます。

image.png
Compile で生成した *.com ファイルも実行できます。

■ Dir

メインメニューで〔D〕を押すと、カレントドライブのファイルを表示します。

image.png
表示するファイルにマスクをかけることもできます。

■ Quit

メインメニューで〔Q〕を押すと、Turbo Pascal を終了します。

image.png

■ compiler Options

メインメニューで〔O〕を押すと、コンパイラオプションを表示します。

image.png

▶ 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〕を押すと、実行時引数を設定する事ができます。

image.png

▶ [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 の値を入力すると、該当するソースコードの位置へジャンプする事ができます。

image.png

▶ Quit

コンパイラオプションは〔Q〕を押して抜けられます。メインメニューへ戻ります。

■ (Enter)

メインメニューで何もせずに〔Enter〕を押下すると、メインメニューを再描画します。

Hello,world.

とりあえず Hello,world. を表示するプログラムを作ってみましょう。

A:>TURBO

Turbo Pascal を起動します。

機種によっては事前に画面モードを切り替えるコマンドを実行する必要があるかもしれません。

image.png

Include error messages (Y/N)? はとりあえず Y を押しておきます。

image.png

メニューで 〔W〕 を押してワークファイルを指定します。ファイル名は hello とします。拡張子を省略しているので hello.pas がワークファイルとなります。

image.png

〔Enter〕 を一度押すとメニューが更新され、Work file: の所が更新されているのが確認できます。

image.png

メニューで 〔E〕 を押してワークファイルを編集します。

hello.pas
program Hello;
begin
  Writeln('Hello,world.');
end.

〔Ctrl〕+〔K〕〔D〕 でエディタを終了します。

image.png

メニューで 〔S〕 を押してワークファイルを保存します。

image.png

メニューで 〔C〕 を押してワークファイルをコンパイルします。

image.png

メニューで 〔R〕 を押してプログラムを実行します。

image.png

次に、メニューで 〔O〕〔C〕〔Q〕 と順に押し、実行形式ファイルを生成するように指定します。

image.png

メニューで 〔C〕 を押してワークファイルをコンパイルすると、実行形式ファイル hello.com が生成されます。

image.png

メニューで 〔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) を実行する事ができます。

image.png
Real 型に対して 8087 の演算が行われます。80486DX 以降の CPU では数値演算コプロセッサが内蔵されているため、こちらを常用していいかと思います。

TURBO-BCD

TURBOBCD.COM (CP/M-86 版は TURBOBCD.CMD) は、BCD 演算をサポートしているバージョンです。

image.png
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.COMTURBOBCD.COMTURBO.COM にリネームしておくとよいでしょう (CP/M-86 版は *.CMD)。

8bit 文字 (CP/M 80 版)

CP/M 80 版の Turbo Pascal は 8bit 文字が通りません。

このため、ソースコードにカナ等を入力できても保存して開き直すとソースコードが破損する事があります。

image.png
この問題を回避するには 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円) が、製品付属のものと同等との事。

image.png

ただ、こちらの書籍は 1984/6/25 発行で、時期的には ver2.0 リリース後なのですが、ver1.0 の内容しか書かれていません。

どうやら製品の『Turbo Pascal ver3.0』には、この『Turbo Pascal プログラミング・マニュアル』と、差分の『Turbo Pascal ver.3 プログラミング・マニュアルの追加』という冊子を付けて販売していたようです。

英語版の 『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』には誤りと記載漏れがあり、各 OS 用の誤りと記載漏れはインストールディスク内の READ.ME (または README) に書かれています。すべての誤りと記載漏れについて知るには CP/M-80, CP/M-86, DOS 用のインストールディスクを確認する必要があります。

MS-DOS、特に PC-98 版用であれば 『Turbo Pascal ハンディ・マニュアル』 があれば、大抵の事は理解できます。

image.png

残念ながら 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:

索引

  1. 1.5KB 程節約できます。CP/M-80 版では "わずか" ではないかもしれませんね。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?