Delphi のご先祖を辿る

# はじめに

これは [Delphi Advent Calendar 2018](https://qiita.com/advent-calendar/2018/delphi) の 2 日目の記事です。

# Delphi のご先祖

早速ですが、Delphi のご先祖を辿ってみましょう。

## 現在の Delphi のご先祖？

現在の Delphi は 1996 年の Delphi 2 (32bit 版) がベースになっていると考えていいと思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/a4c59a9e-7495-9371-d559-362cdbbbb440.png)

Delphi 2 の時点で基本的な構成は固まっており、Delphi 1 のコードを Delphi 2 向けに変更するよりも、Delphi 2 のコードを最新版 Delphi 向けに変更する方が簡単なんじゃないかと個人的には思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/75766384-fe37-4815-460e-a5eca89d6168.png)

**See also:**

 - [Delphi (Embarcadero)](https://www.embarcadero.com/jp/products/delphi)
 - [Delphi Community Edition (Embarcadero)](https://www.embarcadero.com/jp/products/delphi/starter)
 - [Delphi について (Qiita)](https://qiita.com/ht_deko/items/eb96629d705542e3a980)

## Delphi 1 (1995 年)

**Delphi** は 1995/02/11 に最初のバージョンがリリースされました。これは Windows 3.1 で動作する 16bit 版でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/18ecb16c-c144-3527-0f19-78b858b16699.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/14c8de88-0c71-5819-44dd-713748b0ca17.png)

 - ネイティブコードコンパイラ、ビジュアル開発、データベース処理のすべてを統合した開発ツールです。
 - Turbo Pascal の機能を大幅に拡張した Object Pascal を採用しています。
 - Delphi 自身のバージョンは 1.0 ですが、コンパイラとしては、Turbo Pascal を継承しており、バージョン 8.0 に相当します。
 - クラスライブラリとして **Visual Component Library** (VCL) が導入されました。
 - Delphi は 1995 年の [Jolt Awards (Languages & Development Environments 部門)](https://web.archive.org/web/20071103135417/http://www.ddj.com/architect/184415534) を受賞しています。
 - Delphi (Desktop) と Delphi Client/Server という 2 つの SKU がありました。
 - 日本では Delphi (Standard) と Delphi and Database Tools という 2 つの SKU がありました。Delphi (Standard) は日本独自の低価格版です。
 - 価格は ＄499.95 (Desktop) / ＄1999.95 (Client/Server) でした。
 - 日本での価格は &yen;29,800 (Standard) / &yen;68,000 (Delphi and Database Tools) でした。

このバージョンはアンティークソフトウェアとして公開されています。

 - [Historic Delphi 1 Client/Server Install ISO (Embarcadero)](https://cc.embarcadero.com/item/30911)

16bit アプリケーションは 64bit Windows では動作しないので、32bit Windows で動作させるか、[OTVDM (winevdm)](https://github.com/otya128/OTVDM) を導入する必要があります。

 - [Delphi 1.0 Client/Server が無償公開されたので Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/a65e0950b906d28ccb5f)

:::note warn
2024/07/01 現在、[DOS-Box(-X)](https://dosbox-x.com/) へ Windows 3.1 をインストールして、アンティークソフトウェアの Delphi 1 C/S を動作させる事は可能ですが、日本語版の Delphi 1 は正しくインストール＆実行できないようです。
:::
 
| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER80 | Borland Delphi 1 | 

**See also:**

 - [Visual Component Library (VCL) (Wikipedia)](https://ja.wikipedia.org/wiki/Visual_Component_Library)

## Borland Pascal with Object 7.0 / Turbo Pascal 7.0 for DOS (1992 年)
**Borland Pascal** (1992 年) は Windows / DOS (リアルモード) / DOS エクステンダ (プロテクトモード) の開発が可能でした。1992/10/27 リリース。1992/11/02 出荷開始。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/02bb0c17-f80b-e215-9ad8-e51ade493c8b.png "Byte 誌 1992 年 12 月号 P.19 の広告")

『Borland Pascal with Object 7.0』は開発環境スイートです。『Turbo Pascal for Windows 1.5』相当の Windows 用開発環境である『Borland Pascal 7.0 for Windows』と DOS 用の開発環境である『Borland / Turbo Pascal 7.0 for DOS』が含まれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/facda533-2cbc-8f7d-ae92-54fb19c0a473.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/33871b19-2306-99ae-63a8-a8e6c7198afa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/3e08cffa-ff5f-e192-fe85-8d19a4a18c88.png)

また、『Borland Pascal with Object 7.0』には前版の『Turbo Pascal 6.0 Professional』の `Professional` 部分に相当するツール (Turbo Assembler / Turbo Debuger / Turbo Profiler) が含まれます。

Windows 用のエントリーレベルのプログラミングツールとして『Turbo Pascal for Windows 1.5』はそのまま残され、DOS 用のエントリーレベルのプログラミングツールとして『Turbo Pascal 7.0 for DOS』の単体パッケージが新たに追加されました。

|  | DOS<br>リアルモード | DOS<br>プロテクトモード | Windows |
|:---|:---:|:---:|:---:|
| IDE | TURBO.EXE | BP.EXE<br>TPX.EXE [^1] | BPW.EXE |
| コマンドライン<br>コンパイラ | TPC.EXE | BPC.EXE | (N/A)  |

以下『BYTE』誌 1993/01 P.54 からの引用です。

> TP 7.0 is positioned as an entry-level language. It's for programmers who want to write DOS applications in real mode (i.e., 8086/8088 compatible) and learn object-oriented programming.
> Next up the ladder is Turbo Pascal for Windows 1.5, a Windows-only package that remains unchanged.
> BPO 7.0 is the high-end package for professionals who want to write Object-oriented code for either DOS or Windows. It was created by combining all that comes with TP 7.0 and TPW 1.5 and adding some additional goodies as well.

 - [Borland Revamps Its Pascal Lineup (halfhill.com)](https://halfhill.com/byte/1993-1_borland.html)

| リリース | Windows | DOS |
|:---:|:---|:---|
| 1992/06/08 | Turbo Pascal for Windows 1.5 |   |
| 1992/10/27 | Borland Pascal 7.0 for Windows<br>(Borland Pascal with Object 7.0) | Turbo Pascal 7.0 (Professionl) for DOS<br>(Borland Pascal with Object 7.0) |
| 1992/10/27  |   | Turbo Pascal 7.0 for DOS |

 - DLL の作成が可能です。
 - コードエディタ (TURBO.EXE / BP.EXE) で構文強調表示をサポートするようになりました。
 - オブジェクト型で **public** が使えるようになりました。
 - オブジェクト型のメソッドで **inherited** が使えるようになりました。
 - 手続き/関数でオープン配列パラメータが使えるようになりました。
 - 手続き/関数で定数パラメータ (**const**) が使えるようになりました。
 - `break` `continue` が使えるようになりました。
 - Borland Pascal with Objects は 1992 年の [Jolt Awards (Languages & Development Environments 部門)](https://web.archive.org/web/20070503190639/http://www.ddj.com/joltawards/year_92.htm) を受賞しています。
 - 日本語版は未リリースです。
 - Turbo Pascal 7.0 for DOS の単体版に Professional グレードはありません。
 - Borland Pascal with Object 7.0 の価格は ＄495 でした。
 - Turbo Pascal 7.0 for DOS の価格は ＄149.95 でした。
 - Turbo Pascal 7.0 はフランス語版でのみ、フリーウェアとして公開された事があったようです。

| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER70 | Borland Pascal 7.0<br>Turbo Pascal 7.0 | 

**See also:**

 - [ダウンロード - フリーウェア: Delphi、Pascal & C / C ++ コンパイラ (Inprise (Fr): Internet Archive)](https://web.archive.org/web/20030813053751/http://www.inprise.fr/download/compilateurs/)
 - [turbopascal (Github: @orill)](https://github.com/orill/turbopascal)
 - [BP7-INFO.TXT (Gist: @Fortyseven)](https://gist.github.com/Fortyseven/8391ee6859c58d58b0ef)
 - [プロテクトモード (Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%86%E3%82%AF%E3%83%88%E3%83%A2%E3%83%BC%E3%83%89)
 - [リアルモード (Wikipedia)](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89)

## Turbo Pascal for Windows 1.5 (1992 年)
Windows 3.x で動作する **Turbo Pascal** です。1992/06/08 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2faddce5-b2de-24d1-44f6-c5e692306a8c.png "Byte 誌 1992 年 8 月号 P.35 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d77b4480-d0bc-1f12-3cfe-a7f89ac4e8cf.png)

|  | DOS<br>リアルモード | Windows |
|:---|:---:|:---:|
| IDE | (N/A) | TPW.EXE |
| コマンドライン<br>コンパイラ | TPCW.EXE | (N/A) |

 - IDE は Windows 上で動作します。
 - IDE にスピードバーが付きました。
 - コードエディタ (Windows) で構文強調表示をサポートするようになりました。
 - 日本語版は未リリースです。
 - 価格は ＄149.95 でした。

| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER15 | Borland Turbo Pascal for Windows 1.5 | 

## Turbo Pascal for Windows 1.0 (1991 年)
Windows 3.0 で動作する **Turbo Pascal** です。1991/02/13 リリース [^2]。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/bbcdfad3-1014-d955-ebc7-1c70c9b64b18.png "Byte 誌 1992 年 3 月号 P.11 の広告")

フォームデザイナのない Delphi みたいなもので、『Microsoft Visual C++』の Turbo Pascal 版といった感じの製品でした。Macintosh 向けの各種 Pascal にも似ているかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/74efd3fe-5409-ffff-1d6d-2d076af7d717.png)

|  | DOS<br>リアルモード | Windows |
|:---|:---:|:---:|
| IDE | (N/A) | TPW.EXE |
| コマンドライン<br>コンパイラ | TPCW.EXE | (N/A) |

 - IDE は Windows 上で動作します。
 - ヌル終端文字列 (ASCIIZ) に対応。PChar 型が追加されました。
 - クラスライブラリとして **Object Window Library** (OWL) が導入されました。
 - 『Resource Workshop』や『Turbo Debugger for Windows』 が付属しています。
 - <font color="Crimson">日本語版の Turbo Pascal シリーズとしては最後のリリース</font>となります。
 - 日本での価格は &yen;29,800 でした。


| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER10 | Borland Turbo Pascal for Windows 1.0 | 

**See also:**

 - [Object Window Library (OWL) (Wikipedia: en)](https://en.wikipedia.org/wiki/Object_Windows_Library)


## Turbo Pascal 6.0 (1990 年)
DOS 用の **Turbo Pascal** です。1990/10/23 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b4c47f69-b905-7046-31f1-ecc6d0f2e326.png "Byte 誌 1991 年 2 月号 P.11 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/402eb002-e56b-7d34-b5d1-d592a887a45a.png)

|  | DOS<br>リアルモード | DOS<br>プロテクトモード |
|:---|:---:|:---:|
| IDE | TURBO.EXE | (N/A) |
| コマンドライン<br>コンパイラ | TPC.EXE | TPCX.EXE [^3] |

 - **Turbo Vision** が使えるようになっています。
 - IDE が Turbo Vision で書き直されており、マウスもサポートされています。
 - マルチウィンドウ (オーバーラップドウィンドウ) 対応。
 - IDE に [Search] メニューが追加され、正規表現による検索に対応しました。
 - **forward** が予約語ではなくなりました。標準 Pascal 同様に **指令 (directive)** となっています。
 - インラインアセンブラが使えるようになっています。
 - オブジェクト型で **private** が使えるようになりました。
 - 80286 コードの生成が可能になりました。
 - Turbo Pascal 6.0 と Turbo Pascal 6.0 Professional という 2 つの SKU がありました。
 - Turbo Pascal 6.0 Professional には Turbo Drive (プロテクトモードコンパイラとその環境) と Turbo Assembler / Turbo Debuger / Turbo Profiler が含まれています。
 - <font color="Crimson">NEC PC-9801 版 (MS-DOS) の Turbo Pascal としては最後のリリース</font>となります。
 - 価格は ＄149.95 / ＄299.95 (Professional) でした。
 - 日本での価格は &yen;20,000 / &yen;39,800 (Professional) でした。

インラインアセンブラは **asm** ～ **end** の中に記述できます。

```pascal
  asm
    mov ah,O        { Read keyboard function code }
    int 16H            { Call PC BIOS to read key }
    mov CharCode,al             { Save ASCII code }
    mov ScanCode,ah              { Save scan code }
  end;
```

**asm** ～ **end** はルーチンの中に記述できます。

```pascal
procedure Hoge;
begin
  ...
  asm
    ...
  end;
  ...
end;
```

**assembler** 指令 [^4] を使ってルーチン全体をインラインアセンブラで記述する事も可能です。

```pascal
procedure Hoge; assembler;
asm
  ...
end;
```

従来は以下のようなインライン機械語 (**inline**) しか使えませんでした。

```pascal
procedure UpperCase(var Strg: Str); {Str is type string[255]}
{$A+}
begin
  inline(  $2A/Strg/  {     LD  HL,(Strg) }
           $46/       {     LD  B,(HL)    }
           $04/       {     INC B         }
           $05/       { L1: DEC B         }
           $CA/*+20/  {     JP  Z, L2     }
           $23/       {     INC HL        }
           $7E/       {     LD  A,(HL)    }
           $FE/$61/   {     CP  'a'       }
           $DA/*-9/   {     JP  C,L1      }
           $FE/$7B/   {     CP  'z'+1     }
           $D2/*-14/  {     JP  NC,L1     }
           $D6/$20/   {     SUB 20H       }
           $77/       {     LD  (HL),A    }
           $C3/*-20); {     JP  L1        }
                      { L2: EQU $         }
end; 
```

| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER60 | Borland Turbo Pascal 6.0 | 

:::note
Turbo Pascal 6.0 は Microsoft の Quick Pascal の影響を強く受けています。
:::

**See also:**

 - [Turbo Vision (Wikipedia: en)](https://en.wikipedia.org/wiki/Turbo_Vision)
 - [Turbo Assembler (Wikipedia: en)](https://en.wikipedia.org/wiki/Turbo_Assembler)
 - [Turbo Debugger (Wikipedia: en)](https://en.wikipedia.org/wiki/Borland_Turbo_Debugger)
 
## Turbo Pascal 5.5 (1989 年)
DOS 用の **Turbo Pascal** です。1989/05/02 リリース。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/da72d6e5-44fb-651c-dac8-8b646f9eca8b.png "Byte 誌 1989 年 8 月号 P.13 の広告")

このバージョンからが **オブジェクト指向拡張された Pascal** であり、これより前の製品はオブジェクト指向言語ではありませんでした。つまり <font color="Crimson">"Turbo Pascal はオブジェクト指向言語である" というのは正確ではありません。</font>オブジェクト指向拡張されたバージョンとそうでないバージョンがあるからです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/4e1982a0-da1e-b8ad-b4f4-0757ba92c4a4.png)

そして、意外に思われる方も多いかもしれませんが、このオブジェクト指向拡張の元を辿れば Apple の Object Pascal ([MPW](https://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop) Pascal コンパイラ) 由来なのです (1986 年)。

 - [Pascal へのオブジェクト指向拡張の歴史と Delphi (Qiita)](https://qiita.com/ht_deko/items/ff2d90c9174290583377)

Borland はこのオブジェクト指向拡張された『Turbo Pascal』を『オブジェクト指向拡張 (Object-Oriented Extensions)』とか『(Turbo) Pascal with Objects』と呼んでおり、少なくとも当時は『Object Pascal』と呼んだ事はなかったようです (マニュアルにも記載がない)。

 - Turbo Pascal 5.5 と Turbo Pascal 5.5 Professional という 2 つの SKU がありました。
 - Turbo Pascal 5.5 Professional には Turbo Assembler / Turbo Debuger が含まれています。
 - Turbo Pascal 4.0 以前 -> 5.5 へのアップデート価格は $75 (送料・手数料別) でした。
 - Turbo Pascal 5.0 -> 5.5 へのアップデート価格は $34.95 (送料・手数料別) でした。
 - Turbo Pascal 5.0 Professional-> 5.5 Professional　へのアップデート価格は $99.95 (送料・手数料別) でした。
 - 日本での価格は &yen;29,800 / &yen;59,800 (Professional) でした。


このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

 - [Antique Software: Turbo Pascal v5.5 (EDN)](https://edn.embarcadero.com/article/20803)
 - [Turbo Pascal 5.5 (Embarcadero)](https://codecentral.embarcadero.com/Item/26015)
 - [Turbo Pascal 5.5 Object-Oriented Programming Guide (Embarcadero)](http://edn.embarcadero.com/jp/article/images/20803/TP_55_OOP_Guide.pdf)
 - [Turbo Pascal 5.5 Object-Oriented Programming Guide (Internet Archive)](https://web.archive.org/web/20210605060839/https://edn.embarcadero.com/jp/article/images/20803/TP_55_OOP_Guide.pdf)

16bit アプリケーションは 64bit Windows では動作しないので、DOSBox(-x) 等で動作させるといいでしょう。

 - [Turbo Pascal 5.5 (Mr.XRAY)](http://mrxray.on.coocan.jp/Delphi/Others/TurboPascal55.htm)
 - [DOSBox (Wikipedia)](https://ja.wikipedia.org/wiki/DOSBox)
 - [Android で TurboPascal を動かす (Youtube)](https://www.youtube.com/watch?v=uDZ-oDLnRpI)

| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER55 | Borland Turbo Pascal 5.5 | 

## Turbo Pascal 5.0 (1988 年)
DOS 用の **Turbo Pascal** です。1988/08/24 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/86d9d0a8-0106-3348-6ee8-2fc3574b76f9.png "Byte 誌 1989 年 3 月号 P.69 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/78024631-8abf-1ff3-c3b0-39ce6bc06f3b.png)

 - ソースレベルデバッガが統合されました。
 - ステップ実行ができるようになりました。
 - 変数の値のウオッチが可能になりました。
 - 8087 / 80287 / 80387 コプロセッサをサポート
 - エミュレーションにより、8087 を搭載していなくても IEEE 浮動小数点型 (single / double / extended / comp) が利用可能になりました。
 - オーバーレイが復活しました。但し、使用方法が異なります。
 - オーバーレイやエディタが EMS (Expanded Memory Specification) をサポートするようになりました。
 - Inc() と Dec() が使えるようになりました。
 - Turbo Pascal 5.0 と Turbo Pascal 5.0 Professional という 2 つの SKU がありました。
 - Turbo Pascal 5.0 Professional には Turbo Assembler / Turbo Debuger が含まれています。
 - 価格は ＄149.95 / ＄250 (Professional) でした。
 - 日本での価格は &yen;29,800 / &yen;59,800 でした。


| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER50 | Borland Turbo Pascal 5.0 | 

**See also:**

 - [Expanded Memory Specification (Wikipedia)](https://ja.wikipedia.org/wiki/Expanded_Memory_Specification)


## Turbo Pascal 4.0 (1987 年)
DOS 用の **Turbo Pascal** です。1987/11/20 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/77e3d069-3954-c52c-38b5-f2c028242508.png "Byte 誌 1987 年 12 月号 P.0 の広告")![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/eab5e9fd-c4a0-194a-f030-3acc119c5dbe.png "Byte 誌 1987 年 12 月号 P.1 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/689ceafa-388b-613d-c79b-2e20c4b498fa.png)

 - COM 形式だけでなく EXE 形式の実行ファイルを生成できるようになりました。
 - CP/M のサポートは打ち切られています。
 - 統合開発環境 (IDE) が全面的に書換えられています。
 - コマンドラインコンパイラ (`TPC.EXE`) が使えます。
 - Turbo Pascal for the Mac にあった [Search] メニューが何故か存在しません (検索ショートカットは従来通り〔Ctrl〕+〔Q〕〔F〕です)。
 - 正規表現も使える検索ユーティリティ `GREP.COM` が用意されています。
 - program 名はユニークである必要があります。program 名はラベルではなくなりました。
 - **uses** 句 (ユニット) はこのバージョンから使えるようになりました (DOS 版)。
 - インクルードファイルのネスト (8 階層) が可能になりました。
 - いくつかの型、定数、ルーチンは別ユニットに移動しました。このため、**uses** 句にユニットを記述しないと使えない機能が出てきました。
 - 使われないルーチンがリンクされなくなりました。
 - コンパイラ指令が刷新されました。前バージョンとは意味の異なるものも多いです。
 - `{$IFDEF}` コンパイラ指令が使えるようになりました。
 - 論理式の評価はデフォルトでショートサーキット評価 (`{$B-}`) になりました。
 - 現在の **ShortString** 相当の String が使えるようになりました。従来は `String[80]` のように長さを指定してユーザー型として定義する必要がありました。
 - 整数型に ShortInt (Int8) / Word (UInt16) / LongInt (Int32) が追加されました。
 - 実数型に Single / Double / Extended / Comp 型が追加されました。
 - 汎用ポインタ型 Pointer が追加されました。
 - 型キャストが強化され、構造が同じであれば型キャストが可能になりました。
 - Addr() の代わりに使える @ 演算子が追加されました。
 - Chain() およびオーバーレイが使えなくなりました。
 - **Borland Graphics Interface (BGI)** に対応しました。
 - 価格は ＄99.95 でした。
 - 日本での価格は &yen;25,000 でした。

| 条件シンボル<br>VER\<nnn\> | 製品 |
|:---:|:---|
| VER40 | Borland Turbo Pascal 4.0 | 

**See also:**

- [Borland Graphics Interface (BGI) (Wikipedia: en)](https://en.wikipedia.org/wiki/Borland_Graphics_Interface)


## Turbo Pascal for the Mac 1.0 (1986 年) / 1.1 (1987 年)
短い間ですが、Macintosh 用の Turbo Pascal も発売されていました (1986/11?)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/dcf475d5-8d3a-30fe-3830-478345883a1d.png "Mac World 誌 1986 年 11 月号 P.0 (見返し) の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/204f36ba-b01f-4b26-da4b-809d7996b2dc.png)

Turbo Pascal for the Mac では `exit` が使えたり **uses** (ユニット) が使えたりします　(リソースを埋め込むための `{$R}` コンパイラ指令もあります)。言語仕様的には他機種用の ver3.0～4.0 相当のようです。

@ 演算子が使えるようになっている事からして、Apple 製 Lisa / Macintosh 用 Pascal を研究した結果を Turbo Pascal for the Mac に反映し、Turbo Pascal 4.0 へも導入したのかもしれませんね。

:::note
余談ですが、初めて『Turbo Pascal for the Mac』の広告が載った『Mac World』誌 1986 年 11 月号の PP.119-123 には **Object Pascal** の記事「Object Orientation」があり、以下のようなコードが載っています。

```pascal
PROCEDURE TClearAllCmd.DoIt; OVERRIDE;
VAR graphicsDocument: TGraphicsDocument;
BEGIN
  graphicsDocument := TGraphicsDocument;
  graphicsDocument.fHeadOfGraphicsLinkedList := NIL;
  graphicsDocument.SelectGraphicsEntity(NIL);
  SELF.InvalidateEverything;
END;
```

Apple は随分と先を行っていたのですね。
:::

『Turbo Pascal for the Mac』では Macintosh 固有の機能も使えたようですが、クラスではなくレコード + メソッドで行なうプログラミングにはかなり無理があったと思われます。短命に終わっている一因もここら辺にありそうです。

 - **uses** 句 (ユニット) はこのバージョンから使えるようになりました。
 - 整数型に LongInt(Int32) が追加されました。
 - 実数型に Double, Extended 型が追加されました。
 - @ 演算子が追加されました。
 - ver 1.1 (1987 年) は Macintosh II をサポートしたバージョンです。32bit MPU (68020) に対応するパッチが行われています。
 - 価格は ＄99.95 でした。

**See also:**

 - [<2> Clascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) (Qiita)](https://qiita.com/ht_deko/items/770f2db98c9cf3e8ef7b)
 - [<3> Macintosh 用 Pascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) (Qiita)](https://qiita.com/ht_deko/items/cd245180363e1911afa7) 
 - [Macintosh Programmer's Workshop (MPW) Object Pascal の簡単な使い方 (Qiita)](https://qiita.com/ht_deko/items/de6838acd1d22722b674)
 - [『Macintosh Programmer’s Workshop Object Pascal 日本語版』を読んでみる (Qiita)](https://qiita.com/ht_deko/items/faefeb7123d04733ec8c)

## Turbo Pascal for Amiga (1985 年)

キャンセルされた Amiga 用の Turbo Pascal です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e6177d04-4560-4d2b-e6f0-3cebf78f2a01.png "Amiga World 誌 1985 年 11/12 月号 P.5 の広告")

MPU が同じ MC68000 である Macintosh 版の開発に寄与したそうです。

## Turbo Pascal 3.0 (1985 年)
CP/M, DOS 用の **Turbo Pascal** です。日付ははっきりしませんが、1985 年のリリースです。少なくとも 1986/09/17 リリースではないと思われます (これは 3.02A のリリース日？)。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/a2b1ff2d-0ca6-63f1-8055-0f0f2b0bc05f.png "Byte 誌 1985 年 7 月号 P.41 の広告")

『BYTE』誌 1985/07 (Vol.10 No.7) P.41 に Turbo Pascal 3.0 の広告が掲載されていますからねぇ？日本でも 1985/08 にリリースされていますし？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/dab9ea8e-73f0-21c9-ccf3-6362764dd0ab.png)

 - BCD 演算に対応しています (`TURBOBCD.COM` / `TURBOBCD.CMD`)。
 - ファイル処理ルーチンの拡充。
 - コマンドラインパラメータの追加 (エディタ)。
 - コマンドラインパラメータを処理できるようになりました (`ParamCount()`, `ParamStr()`)。
 - `Exit` が使えるようになりました。
 - コンパイラ自体の性能も向上しており、(何をもってか不明ですが) 2.0 より二倍速いという触れ込みでした。
 - 価格は ＄69.95 でした。
 - 日本での価格は &yen;19,800～29,800 でした。販売元や機種によって価格が異なるようです。

このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

 - [Antique Software: Turbo Pascal v3.02 (EDN)](https://edn.embarcadero.com/article/20792)
 - [Turbo Pascal 3.02 (Embarcadero)](https://cc.embarcadero.com/Item/26016)

今だとマイコンボードで動作させる事も可能です。

 - [WSL（Windows Subsystem for Linux）で CP/M 8266 をビルドする (Qiita)](https://qiita.com/ht_deko/items/5be0321faedac3ba9341)
 - [RunCPM (Z80 CP/M 2.2 エミュレータ) (ht-deko.com)](https://ht-deko.com/arduino/runcpm.html)
 - [Turbo Pascal 3.0.x の使い方 (Qiita)](https://qiita.com/ht_deko/items/ec212f5cc17cbe5f718b)
 - [Turbo Pascal (MSX) に関する情報 (Qiita)](https://qiita.com/ht_deko/items/4a622080b58fbc7d865d)

## Turbo Pascal 2.0 (1984 年)
CP/M, DOS 用の **Turbo Pascal** です。1984/04/17 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/776cdf30-8c64-5580-ebfd-ebae25b1be5f.png "Byte 誌 1984 年 7 月号 P.47 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/81d54530-7bce-de33-703b-cd824fdd17f8.png)

販売後しばらくは ver1.0 のマニュアルがそのまま付属していたようで、ver2.0 の機能が載っていなかったようです。このため、ver 3.0 リリース後に刊行された書籍には、ver2.0 で実装された機能であるのに、ver3.0 の新機能であるかのように書かれたものがあります。

 - オーバーレイの追加。 
 - Mark() & Release() に代わる Dispose() の追加。
 - Intel 8087 数値演算コプロセッサに対応 (`TURBO-87.COM` / `TURBO-87.CMD`)。
 - PC DOS 版はグラフィック機能やサウンド機能が追加されています。
 - 価格は同じく ＄49.95 でしたが、Turbo Pascal 1.0 を所持していれば ＄29.95 で購入できたようです。

オーバーレイというのは[バンク切り替え](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%B3%E3%82%AF%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88)みたいな...[英語 Wikipedia のオーバーレイ説明図](https://en.wikipedia.org/wiki/Overlay_(programming)#/media/File:Overlay_Programming.svg)が解りやすいですね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/2e7650cc-d5bd-9618-289d-7e737abc0629.png)

要は (空き) メモリ以上のプログラムを実行するための技術です。

 **See also:**

- [オーバーレイ (Wikipedia)](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AC%E3%82%A4_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%94%A8%E8%AA%9E))

## Turbo Pascal 1.0 (1983 年)
CP/M, DOS 用の最初の **Turbo Pascal** です。メニューシステムと WordStar ライクなエディタが組み込まれています。1983/11/20 リリース。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/458e89b9-ef15-b0fe-d138-c325343490f4.png "Byte 誌 1983 年 11 月号 P.129 の広告") ![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/fcffd637-ddb2-c327-d56d-989767f8d83a.png "Byte 誌 1984 年 1 月号 P.183 の広告")

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ba79354b-b7e5-87af-df91-2db0bdbc4d95.png)

 - 高速なコンパイル
 - オンメモリでのコード生成
 - エディタのキー設定カスタマイズ (TINST)
 - 価格は ＄49.95 でした。

このバージョンはアンティークソフトウェアとして今でもダウンロードできます。

 - [Antique Software: Turbo Pascal v1.0 (EDN)](http://edn.embarcadero.com/article/20693)
 - [Turbo Pascal 1.0 (Embarcadero)](https://cc.embarcadero.com/Item/26017)

雰囲気だけでも知りたければブラウザで動作する Turbo Pascal があります。

 - [Turbo Pascal (teamten.com)](https://www.teamten.com/lawrence/projects/turbo_pascal_compiler/demo/)

## PolyPascal (1984 年)
**PolyPascal** は CP/M (CP/M-80, CP/M-86) 及び DOS (MS-DOS, PC-DOS) 用の Pascal で、開発元は **PolyData MicroCenter** です。\$500 程度で売られていたようです。

 - [PolyPascal (datamuseum.dk)](https://datamuseum.dk/wiki/PolyPascal)

## Compas Pascal (1982 年)
**Compas Pascal** はフルセットの CP/M 用 Pascal で、開発元は **PolyData MicroCenter** です。

| 年 | バージョン | 説明 |
|:-:|:-:|:--|
| 1982 | 1.00 | CP/M-80 用 サブセット。|
| 1983/07 | 1.01 | CP/M-86, DOS 用開発版。|
| 1983/09 | 3.01 | フィールドテストバージョン。|
| 1983/10 | 3.02 | Turbo Pascal 1.0 のベース |
| 1984/07 | 3.10 | 名称を PolyPascal に変更 |

## Blue Label Software Pascal (1981 年)
**Blue Label Software Pascal (BLS Pascal)** はシングルボードコンピュータキット Nascom 用の Pascal で、開発元は **PolyData MicroCenter** です。BLS Pascal は Pascal のサブセット実装でした。

この **Blue Label Software Pascal** がアンダース・ヘルスバーグが世に出した最初の Pascal だと言われています。

BLS Pascal は英国の Lucas Logic にもライセンス供与され、**NASCOM PASCAL** という名前でも販売されていたようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/cea42389-0173-3bf6-c2ee-669a2a176d9d.png)

何度も出てくる **PolyData MicroCenter** はデンマークのコペンハーゲンに本社を置く会社でヘルスバーグが設立、所属していました。Compas Pascal を Borland にライセンス供与したものが Turbo Pascal のようで、Turbo Pascal 発売後も Compas Pascal (3.10 で Poly Pascal に改名) は販売されていました。

そうなると **Blue Label Software** という会社 (?) にも興味は沸きますが、こちらについては殆ど情報がありません。PolyData MicroCenter が商標を持っているようですが...？

 - [Nascom (computer_kit) (Wikipedia)](https://en.wikipedia.org/wiki/Nascom_(computer_kit))
 - [Anders Hejlsberg (Wikipedia)](https://en.wikipedia.org/wiki/Anders_Hejlsberg)
 - [特別インタビュー Anders Hejlsberg 氏 -必要なのはパッションだ！- 生みの親が語る .NET と C# の精神 (日経ソフトウエア, 2002年07月号) (日経 BP 記事検索サービス)](https://bizboard.nikkeibp.co.jp/kijiken/summary/20020624/NSW0050H_18772a.html)

### BLS Pascal をエミュレータで動かす

Nascom にはエミュレータがあり、この BLS Pascal を試すことができます。

 1. [The Nascom Home Page (nascomhomepage.com)](http://nascomhomepage.com) へ行く。
 2. 下にスクロールすると BLUE LABEL SOFTWARE PASCAL というのがあるのでその画像をクリック。
 3. blspas.nas というファイルがダウンロードされる。
 4. [Nascom 2 JavaScript emulator 0.2 (thorn.ws)](http://thorn.ws/jsnascom/jsnascom.html) へ行く。
 5. [Load NAS:] で、blspas.nas を読み込ませる。
 6. エミュレータで E1000 とタイプする。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/06a415d5-275c-0f41-442c-81760bb3a180.png)
操作方法は Turbo Pascal に限りなく近いです。

|コマンド|機能|
|:------|:---|
|E      |エディタ起動。終了は Ctrl+X|
|C      |コンパイル|
|R      |実行|

FIZZBUZZ を書いてみました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/dc938df3-18df-ee68-3bab-e50455c5cb8c.png)

37 年前のコードが、

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/6c3a1e14-926a-5ae3-f459-2f23ca64cd0c.png)

最新版 (記事作成時点) の Delphi 10.3 Rio でも動作するのが感慨深いですね。

 - [BLS Pascal User Manual (nascomhomepage.com)](http://www.nascomhomepage.com/pdf/BLSPAS.PDF)

# おわりに
この記事の元になっているのは、2008 年に書かれた以下の記事です。

 - ["Blue Label Software Pascal -> Compas Pascal -> Poly Pascal -> Turbo Pascal v1.0 (Embarcadero)"](https://community.embarcadero.com/blogs/entry/blue-label-software-pascal-andgt-compas-pascal-andgt-poly-pascal-andgt-turbo-pascal-v10-38933)
 - ["Blue Label Software Pascal -> Compas Pascal -> Poly Pascal -> Turbo Pascal v1.0 (Internet Archive)"](https://web.archive.org/web/20160410000246/http://blogs.embarcadero.com/davidi/2008/11/02/38933)
 - [Memories of Turbo Pascal version 1.0 - Anders Hejlsberg, United States (Embarcadero Blog)](https://community.embarcadero.com/blogs/entry/memories-of-turbo-pascal-version-10--anders-hejlsberg-united-states-39215) 
 - [Memories of Turbo Pascal version 1.0 - Anders Hejlsberg, United States (Internet Archive)](https://web.archive.org/web/20160410001705/http://blogs.embarcadero.com/davidi/2008/11/20/39215) 
 - [Turbo Pascal version 1.0 - The Turbo Pascal release dates (Embarcadero Blog)](https://community.embarcadero.com/blogs/entry/turbo-pascal-version-10--the-turbo-pascal-release-dates-39142)
 - [Turbo Pascal version 1.0 - The Turbo Pascal release dates (Internet Archive)](https://web.archive.org/web/20160310090658/http://blogs.embarcadero.com/davidi/2008/11/17/39142)
 - [ボーランド言語製品履歴 (borland.co.jp: Internet Archive)](https://web.archive.org/web/19970603120448/http://www.borland.co.jp/language/history.htm)
 
:::note warn
[日本語版 Wikipedia の Turbo Pascal のページ](https://ja.wikipedia.org/wiki/Turbo_Pascal)に書かれているリリース日の多くは PC-98 版の発売日だと思われます。
:::


調べた結果からすると、より詳しくは、

```text
BLS Pascal
└─Compas Pascal
    ├─Poly Pascal
    └─Turbo Pascal
        ├─Borland Pascal
        └─Turbo Pascal for Windows
           └─Borland Pascal for Windows
              └─Delphi
```

こうなんじゃないかと思います。製品ラインが解りづらいのはもはや伝統ですね (w
    
BLS -> Compas -> Poly -> Turbo の流れについては、一見何の関係もないオープンソースのビジネス戦略についての書籍 ["Innovation Happens Elsewhere - Open Source as Business Strategy -"](http://dreamsongs.com/IHE/IHE.html) のイントロダクションに書かれていました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/086bf44b-1ea4-5aa2-022c-70a7978f1928.png)

この書籍は [Creative Commons Attribution-NonCommercial-ShareAlike 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/us/deed.ja) で公開されており、誰でも自由に読む事ができます。以下、当該ページです。

 - [Innovation Happens Elsewhere (dreamsongs.com)](http://dreamsongs.com/IHE/IHE-12.html#pgfId-955411)

ASCII.jp の記事も併せて読むと面白いと思います。

 - [業界に痕跡を残して消えたメーカー　開発ツールでMSと争ったBorland (ASCII.jp)](http://ascii.jp/elem/000/001/477/1477648/)

この記事に出てくる共同設立者の一人である Mogens Glad 氏が Turbo Pascal で評判のよかった WordStar 互換エディタを書いたとか。

 - [The Long and Winding Road To Today’s Delphi – Happy 29th Birthday ! (blogs.embarcadero.com)](https://blogs.embarcadero.com/the-long-and-winding-road-to-todays-delphi-happy-29th-birthday/)

 2024 年に Delphi 29 周年のブログ記事が書かれました。こちらにも Delphi に至るまでの歴史が載っています。

## 余談

最近、マイコンボード上の CP/M で Turbo Pascal を動かしていました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/e4f2ec6d-39ad-01ea-e98b-1581876458ab.png)

私自身は MS-DOS の時代だと Turbo C++ を触っていたので Turbo Pascal をリアルタイムで触ったことはなく、後になってアンティークソフトウェアで TP 5.5 をちょっと触ったくらいでした。Pascal という言語を本格的に触ったのは Windows 3.1 の Delphi 1 からです。

追体験して解ったのですが、**CP/M の Turbo Pascal はオーパーツ**としか思えませんでした。こりゃ売れるわ、と。そしてさらに興味を持ったので、昔さらっと読んだ記事を精査してみようと思った訳です。

## ん？
ちょっと待って。そうすると**神野甘音は(さん)じゅうななさい**という事に...

[![image.png](https://qiita-image-store.s3.amazonaws.com/0/21785/636e38eb-b414-1096-d81b-815dfebb1920.png)](https://www.embarcadero.com/jp/amane)

おや、誰か来たようだ、こんな時間に誰だろう？

[^1]: 単体パッケージの『Turbo Pascal 7.0 for DOS』に付属。プロテクトモード用のコマンドラインコンパイラ (『Turbo Pascal 6.0』で言う所の `TPCX.EXE`) は用意されていません。
[^2]: この頃の Borland の広告は Paradox とかばかりで、Turbo Pascal の情報が全くと言っていいほどありません。新製品を出したんなら新製品の広告を打てばいいのに...。
[^3]: 『Turbo Pascal 6.0』Professional 版のみ。
[^4]: 『Delphi 3』以降では **assembler** 指令を省略してインラインアセンブラルーチンを書く事が可能になりました。下位互換性を保つため、現在の Delphi にも **assembler** 指令は残っています。