LoginSignup
7

Delphi のご先祖を辿る

Last updated at Posted at 2018-12-01

はじめに

これは 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 向けに変更する方が簡単なんじゃないかと個人的には思います。

条件シンボル
VER<nnn>
製品
VER80 Borland Delphi 1

Borland Pascal 7.0 / Turbo Pascal 7.0 (1992 年)

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

  • Turbo Pascal 7.0 は MS-DOS 専用でした。
  • DLL の作成が可能です。
  • 日本語版は未リリースです。
  • Turbo Pascal 7.0 はフランス語版でのみ、フリーウェアとして公開された事があったようです。
条件シンボル
VER<nnn>
製品
VER70 Borland Pascal 7.0
Turbo Pascal 7.0

See also:

Turbo Pascal for Windows 1.5 (1992 年)

Windows 3.1 で動作する Turbo Pascal です。1992/06/08 リリース。

  • Turbo Pascal 7.0 のベースとなっています。
  • コードエディタで構文強調表示をサポートするようになりました。
条件シンボル
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 リリース。

  • Turbo Pascal 6.0 がベースとなっています。
条件シンボル
VER<nnn>
製品
VER10 Borland Turbo Pascal for Windows 1.0

Turbo Pascal 6.0 (1990 年)

MS-DOS 用の Turbo Pascal です。1990/10/23 リリース。

  • IDE がマウスをサポートしています。
  • forward が予約語ではなくなりました。標準 Pascal 同様に 指令 (directive) となっています。
  • Turbo Vision が使えるようになっています。
  • インラインアセンブラが使えるようになっています。
  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;

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

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; 
条件シンボル
VER<nnn>
製品
VER60 Borland Turbo Pascal 6.0

Turbo Pascal 5.5 (1989 年)

MS-DOS 用の Turbo Pascal です。1989/05/02 リリース。
image.png
このバージョンからが オブジェクト指向拡張された Pascal であり、これより前の製品はオブジェクト指向言語ではありませんでした。つまり "Turbo Pascal はオブジェクト指向言語である" というのは正確ではありません。オブジェクト指向拡張されたバージョンとそうでないバージョンがあるからです。
image.png
そして、意外に思われる方も多いかもしれませんが、このオブジェクト指向拡張の元を辿れば Apple の Object Pascal (MPW Pascal コンパイラ) 由来なのです (1986 年)。

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

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

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

条件シンボル
VER<nnn>
製品
VER55 Borland Turbo Pascal 5.5

Turbo Pascal 5.0 (1988 年)

MS-DOS 用の Turbo Pascal です。1988/08/24 リリース。

  • オーバーレイが復活しました。但し、使用方法が異なります。
  • オーバーレイやエディタが EMS (Expanded Memory Specification) をサポートするようになりました。
  • デバッガが統合されました。Turbo Debugger が使えるようになっています。
  • ステップ実行ができるようになりました。
  • 変数の値のウオッチが可能になりました。
  • 価格は $149.95 でした。
条件シンボル
VER<nnn>
製品
VER50 Borland Turbo Pascal 5.0

See also:

Turbo Pascal 4.0 (1987 年)

MS-DOS 用の Turbo Pascal です。1987/11/20 リリース。

  • COM 形式だけでなく EXE 形式の実行ファイルを生成できるようになりました。
  • CP/M のサポートは打ち切られています。
  • IDE が強化されました。
  • コマンドラインコンパイラ (TPC.EXE) が使えます。
  • program 名はユニークである必要があります。program 名はラベルではなくなりました。
  • uses 句はこのバージョンから使えるようになりました。
  • インクルードファイルのネスト (8 階層) が可能になりました。
  • いくつかの型、定数、ルーチンは別ユニットに移動しました。このため、uses 句にユニットを記述しないと使えない機能が出てきました。
  • 使われないルーチンがリンクされなくなりました。
  • コンパイラ指令が刷新されました。前バージョンとは意味の異なるものも多いです。
  • {$IFDEF} コンパイラ指令が使えるようになりました。
  • 現在の ShortString 相当の String が使えるようになりました。従来は String[80] のように長さを指定してユーザー型として定義する必要がありました。
  • 整数型に ShortInt(Int8), Word(UInt16), LongInt(Int32) が追加されました。
  • 実数型に Single, Double, Extended, Comp 型 が追加されました。
  • 汎用ポインタ型 Pointer が追加されました。
  • 型キャストが強化され、構造が同じであれば型キャストが可能になりました。
  • Addr() の代わりに使える @ 演算子が追加されました。
  • Chan() およびオーバーレイが使えなくなりました。
  • 価格は $99.95 でした。
条件シンボル
VER<nnn>
製品
VER40 Borland Turbo Pascal 4.0

Turbo Pascal 3.0 (1985 年)

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

  • Turbo Pascal 3 は Intel 8087 数値演算コプロセッサに対応する初めてのバージョンでした (TUBO-87.COM)。
  • 16bit バージョンでは BCD 演算にも対応しています (TUBOBCD.COM)。
  • ファイル処理ルーチンの拡充。
  • コマンドラインパラメータの追加 (エディタ)。
  • コマンドラインパラメータを処理できるようになりました (ParamCount(), ParamStr())。
  • Exit が使えるようになりました。
  • コンパイラ自体の性能も向上しており、(何をもってか不明ですが) 2.0 より二倍速いという触れ込みでした。
  • 価格は $69.95 でした。

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

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

Turbo Pascal 2.0 (1984 年)

CP/M, MS-DOS 用の Turbo Pascal です。1984/04/17 リリース。

  • 販売後しばらくは ver1.0 のマニュアルがそのまま付属していたようで、ver2.0 の機能が載っていなかったようです。このため、ver 3.0 リリース後に刊行された書籍には、ver2.0 で実装された機能であるのに、ver3.0 の新機能であるかのように書かれたものがあります。
  • オーバーレイの追加。
  • Mark() & Release() に代わる Dispose() の追加。
  • MS-DOS 版はグラフィック機能やサウンド機能が追加されています。
  • 価格は同じく $49.95 でしたが、Turbo Pascal 1.0 を所持していれば $29.95 で購入できたようです。

オーバーレイというのはバンク切り替えみたいな...英語 Wikipedia のオーバーレイ説明図が解りやすいですね。
image.png
要は (空き) メモリ以上のプログラムを実行するための技術です。

See also:

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 という会社 (?) にも興味は沸きますが、こちらについては殆ど情報がありません。PolyData MicroCenter が商標を持っているようですが...?

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 年に書かれた以下の記事です。

日本語版 Wikipedia の Turbo Pascal のページに書かれているリリース日の多くは PC-98 版の発売日だと思われます。

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

BLS Pascal -> Compas Pascal -> Poly Pascal
                            -> Turbo Pascal -> Turbo Pascal 
                                            -> Borland Pascal           -> Delphi
                                            -> Turbo Pascal for Windows

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

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

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
7