はじめに
これは Delphi Advent Calendar 2018 の 2 日目の記事です。
Delphi のご先祖
早速ですが、Delphi のご先祖を辿ってみましょう。
Delphi 1 (1995 年)
Delphi は 1995/02/11 に最初のバージョンがリリースされました。これは Windows 3.1 で動作する 16bit 版でした。
このバージョンはアンティークソフトウェアとして公開されています。
現在の Delphi は 1996 年の Delphi 2 (32bit 版) がベースになっていると考えていいと思います。
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 リリース。
このバージョンからが オブジェクト指向拡張された Pascal であり、これより前の製品はオブジェクト指向言語ではありませんでした。つまり "Turbo Pascal はオブジェクト指向言語である" というのは正確ではありません。オブジェクト指向拡張されたバージョンとそうでないバージョンがあるからです。
そして、意外に思われる方も多いかもしれませんが、このオブジェクト指向拡張の元を辿れば Apple の Object Pascal (MPW Pascal コンパイラ) 由来なのです (1986 年)。
Borland はこのオブジェクト指向拡張された『Turbo Pascal』を『オブジェクト指向拡張 (Object-Oriented Extensions)』とか『(Turbo) Pascal with Objects』と呼んでおり、少なくとも当時は『Object Pascal』と呼んだ事はなかったようです (マニュアルにも記載がない)。
このバージョンはアンティークソフトウェアとして今でもダウンロードできます。
- Antique Software: Turbo Pascal v5.5 (EDN)
- Turbo Pascal 5.5 (Embarcadero)
- Turbo Pascal 5.5 Object-Oriented Programming Guide (Embarcadero)
- Turbo Pascal 5.5 Object-Oriented Programming Guide (Internet Archive)
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 でした。
このバージョンはアンティークソフトウェアとして今でもダウンロードできます。
- WSL(Windows Subsystem for Linux)で CP/M 8266 をビルドする (Qiita)
- RunCPM (Z80 CP/M 2.2 エミュレータ) (ht-deko.com)
- Turbo Pascal 3.0.x の使い方 (Qiita)
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 のオーバーレイ説明図が解りやすいですね。
要は (空き) メモリ以上のプログラムを実行するための技術です。
See also:
Turbo Pascal 1.0 (1983 年)
CP/M, MS-DOS 用の最初の Turbo Pascal です。メニューシステムと優秀なエディタが組み込まれています。1983/11/20 リリース。
- 価格は $49.95 でした。
このバージョンはアンティークソフトウェアとして今でもダウンロードできます。
雰囲気だけでも知りたければブラウザで動作する 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 という名前でも販売されていたようです。
何度も出てくる PolyData MicroCenter はデンマークのコペンハーゲンに本社を置く会社でヘルスバーグが設立、所属していました。Compas Pascal を Borland にライセンス供与したものが Turbo Pascal のようで、Turbo Pascal 発売後も Compas Pascal (3.10 で Poly Pascal に改名) は販売されていました。
そうなると Blue Label Software という会社 (?) にも興味は沸きますが、こちらについては殆ど情報がありません。PolyData MicroCenter が商標を持っているようですが...?
- Nascom (computer_kit) (Wikipedia)
- Anders Hejlsberg (Wikipedia)
- 特別インタビュー Anders Hejlsberg 氏 -必要なのはパッションだ!- 生みの親が語る .NET と C# の精神 (日経ソフトウエア, 2002年07月号) (日経 BP 記事検索サービス)
BLS Pascal をエミュレータで動かす
Nascom にはエミュレータがあり、この BLS Pascal を試すことができます。
- http://nascomhomepage.com 1へ行く。
- 下にスクロールすると BLUE LABEL SOFTWARE PASCAL というのがあるのでその画像をクリック。
- blspas.nas というファイルがダウンロードされる。
- http://thorn.ws/jsnascom/jsnascom.html 2 へ行く。
- [Load NAS:] で、blspas.nas を読み込ませる。
- エミュレータで E1000 とタイプする。
コマンド | 機能 |
---|---|
E | エディタ起動。終了は Ctrl+X |
C | コンパイル |
R | 実行 |
FIZZBUZZ を書いてみました。
37 年前のコードが、
最新版の Delphi 10.3 Rio でも動作するのが感慨深いですね。
おわりに
この記事の元になっているのは、2008 年に書かれた以下の記事です。
- "Blue Label Software Pascal -> Compas Pascal -> Poly Pascal -> Turbo Pascal v1.0 (Embarcadero)"
- Memories of Turbo Pascal version 1.0 - Anders Hejlsberg, United States (Embarcadero Blog)
- Turbo Pascal version 1.0 - The Turbo Pascal release dates (Embarcadero Blog)
日本語版 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 -" のイントロダクションに書かれていました。
この書籍は Creative Commons Attribution-NonCommercial-ShareAlike 3.0 で公開されており、誰でも自由に読む事ができます。以下、当該ページです。
ASCII.jp の記事も併せて読むと面白いと思います。
この記事に出てくる共同設立者の一人である Mogens Glad 氏が Turbo Pascal で評判のよかった WordStar 互換エディタを書いたとか。
余談
最近、マイコンボード上の CP/M で Turbo Pascal を動かしていました。
私自身は MS-DOS の時代だと Turbo C++ を触っていたので Turbo Pascal をリアルタイムで触ったことはなく、後になってアンティークソフトウェアで TP 5.5 をちょっと触ったくらいでした。Pascal という言語を本格的に触ったのは Windows 3.1 の Delphi 1 からです。
追体験して解ったのですが、CP/M の Turbo Pascal はオーパーツとしか思えませんでした。こりゃ売れるわ、と。そしてさらに興味を持ったので、昔さらっと読んだ記事を精査してみようと思った訳です。
ん?
ちょっと待って。そうすると神野甘音は(さん)じゅうななさいという事に...
おや、誰か来たようだ、こんな時間に誰だろう?