Edited at
DelphiDay 2

Delphi のご先祖を辿る


はじめに

これは Delphi Advent Calendar 2018 の 2 日目の記事です。


Delphi のご先祖

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


Delphi 1 (1995 年)

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

image.png

image.png

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

image.png

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

なお、Delphi 2 はコクヨから発売されており、Amazon だと 43,000円なようです...うん、もちろん冗談よ?


Borland Pascal 7.0 / Turbo Pascal 7.0 (1992 年)

Borland Pascal (1992 年) は Turbo Pascal の Professional 版の位置付けで、Windows / MS-DOS / DOS エクステンダの開発が可能でした。Turbo Pascal 7.0 は MS-DOS 専用でした。

Turbo Pascal 7.0 はフランス語版のみ、フリーウェアとして公開された事があったようです。


Turbo Pascal for Windows 1.5 (1992 年)

Windows 3.1 で動作する Turbo Pascal です。Turbo Pascal 7.0 のベースとなっています。コードエディタで構文強調表示をサポートするようになりました。


Turbo Pascal for Windows 1.0 (1991 年)

Windows 3.0 で動作する Turbo Pascal です。Turbo Pascal 6.0 がベースとなっています。


Turbo Pascal 6.0 (1990 年)

MS-DOS 用の Turbo Pascal です。Turbo Vision が使えるようになっています。

このバージョンからはインラインアセンブラが使えるようになっています。従来は以下のようなインラインマシン語しか使えませんでした。

procedure UpperCase (var Strg: Str); {Str is type string[255]}

{$A+}
begin
inline($2A/Strgl { lO Hl,(Strg) }
$461 { lO B,(HU }
$041 { INC B }
$051 { l1: DEC B }
$CA/*+201 { jp Z, l2 }
$231 { INC Hl }
$7EI { lO A,(HU }
$FE/$611 { CP 'a' }
$OA/*-91 { jp C,l1 }
$FE/$7BI { CP 'z'+1 }
$02/*-141 { jp NC,l1 }
$06/$20/ { SUB 20H }
$771 { lO (HU,A }
$C3/*-2Q); { jp l1 }
{ l2: EQU $ }
end;


Turbo Pascal 5.5 (1989 年)

MS-DOS 用の Turbo Pascal です。

image.png

このバージョンからが Object Pascal であり、これより前の製品は Pascal の独自拡張でした。つまり "Turbo Pascal は言語的に Object Pascal である" というのは正確ではありません。

image.png

そして、意外に思われる方も多いかもしれませんが、このオブジェクト指向拡張の元を辿れば Apple の Object Pascal (MPW Pascal コンパイラ) 由来なのです (1986 年)。

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

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


Turbo Pascal 5.0 (1988 年)

MS-DOS 用の Turbo Pascal です。オーバーレイやエディタが EMS (Expanded Memory Specification) をサポートするようになりました。また、Turbo Debugger が使えるようになっています。価格は \$149.95 でした。


Turbo Pascal 4.0 (1987 年)

MS-DOS 用の Turbo Pascal です。COM 形式だけでなく EXE 形式の実行ファイルを生成できるようになりました。CP/M のサポートは打ち切られています。uses 句はこのバージョンから使えるようになりました。価格は \$99.95 でした。


Turbo Pascal 3.0 (1985 年)

CP/M, MS-DOS 用の Turbo Pascal です。Turbo Pascal 3 は Intel 8087 数値演算コプロセッサに対応する初めてのバージョンでした。16bit バージョンでは BCD 演算にも対応しています。コンパイラ自体の性能も向上しており、(何をもってか不明ですが) 2.0 より二倍速いという触れ込みでした。価格は \$69.95 でした。

image.png

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

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

image.png

image.png


Turbo Pascal 2.0 (1984 年)

CP/M, MS-DOS 用の Turbo Pascal です。価格は同じく \$49.95 でしたが、Turbo Pascal 1.0 を所持していれば \$29.95 で購入できたようです。自動オーバーレイなどの 64KB を超えるための機能も取り入れられています。

オーバーレイというのはバンク切り替えみたいな...ドイツ語 Wikipedia のオーバーレイ説明図が解りやすいですね。

image.png

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


Turbo Pascal 1.0 (1983 年)

CP/M, MS-DOS 用の最初の Turbo Pascal です。メニューシステムと優秀なエディタが組み込まれています。1983/11/20 リリース。価格は \$49.95 でした。

image.png

image.png

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

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


PolyPascal (1984 年)

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


Compas Pascal (1982 年)

Compas Pascal はフルセットの CP/M 用 Pascal で、開発元は PolyData MicroCenter です。


バージョン
説明

1982
1.00
CP/M-80 用 サブセット。

1983/07
1.01
CP/M-86, MS-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

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

そうなると Blue Label Software という会社 (?) にも興味は沸きますが、こちらについては殆ど情報がありません。


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

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



  1. http://nascomhomepage.com 1へ行く。

  2. 下にスクロールすると BLUE LABEL SOFTWARE PASCAL というのがあるのでその画像をクリック。

  3. blspas.nas というファイルがダウンロードされる。


  4. http://thorn.ws/jsnascom/jsnascom.html 2 へ行く。

  5. [Load NAS:] で、blspas.nas を読み込ませる。

  6. エミュレータで E1000 とタイプする。

image.png

操作方法は Turbo Pascal に限りなく近いです。

コマンド
機能

E
エディタ起動。終了は Ctrl+X

C
コンパイル

R
実行

FIZZBUZZ を書いてみました。

image.png

37 年前のコードが、

image.png

最新版の Delphi 10.3 Rio でも動作するのが感慨深いですね。


おわりに

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

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

BLS Pascal -> Compas Pascal -> Poly Pascal

-> Turbo Pascal -> Turbo Pascal
-> Borland Pascal -> Delphi
-> Turbo Pascal for Windows

こうなんじゃないかと思います。製品ラインが解りづらいのはもはや伝統ですね (w

以下は同じく 2008 年に書かれた Turbo Pascal 1.0 発売 25 周年についての記事です。

BLS -> Compas -> Poly -> Turbo の流れについては、一見何の関係もないオープンソースのビジネス戦略についての書籍 "Innovation Happens Elsewhere - Open Source as Business Strategy -" のイントロダクションに書かれていました。

image.png

この書籍は Creative Commons Attribution-NonCommercial-ShareAlike 3.0 で公開されており、誰でも自由に読む事ができます。以下、当該ページです。

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

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


余談

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

image.png

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

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


ん?

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

image.png

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





  1. The Nascom Home Page 



  2. Nascom 2 JavaScript emulator 0.2