From: Anders Hejlsberg - microsoft.com
Sent: Monday, November 03, 2008 10:33 AM
Subject: Turbo Pascal v1…
[ David I. note - Anders Hejlsberg is the original author of the Turbo Pascal compiler. Anders was also chief architect of Delphi. He is now a Technical Fellow at Microsoft and chief designer of the C# language. In 2001, Anders received the Dr. Dobbs Excellence in Programming Award at the Software Development 2001 Conference. Today, November 20, 2008 is the 25th anniversary of the release to manufacturing (RTM) of Turbo Pascal version 1.0! ]
Amazing that it has been 25 years, isn’t it. Also amazing how many people I run into day to day who cut their programming teeth on Turbo Pascal. What a fun time it was creating it and how fortunate we all were to be there in the right place at the right time with the right product. And, at the right price, I might add. Personally, I thought Niels [Jensen] and Philippe [Kahn] were nuts when they put it at $49.95, but in retrospect it clearly was a game-changer.
A few additional facts about the pre Turbo Pascal days…
I originally wanted to implement an Algol compiler because that was the language I used on my high school’s mini-computer (an HP 2100). My business partner, Preben Madsen, thought it was a better idea to write a Pascal compiler because “Pascal is the new thing”. To my delight I discovered that Pascal was much simpler to implement than Algol, so Pascal it was!
You’re right that BLS Pascal was 12K in size. That was the maximum size available for EPROMs on the NASCOM. You could yank out the pre-installed Microsoft ROM BASIC chips and slot in ours instead. Some people even built piggy boards with both sets of ROMs on them and a switch to choose between Pascal and BASIC. BLS Pascal was also licensed to Lucas Logic in the U.K. and sold under the name NASCOM Pascal.
BLS Pascal grew into COMPAS Pascal 1.0, a subset implementation for CP/M-80 released in 1982. In 1983 it was followed by COMPAS Pascal 2.0, a largely complete Pascal implementation for CP/M-80. COMPAS Pascal was later renamed PolyPascal and released in 16-bit versions for CP/M-86 and MS-DOS. There was never a dedicated PC-DOS version of PolyPascal.
COMPAS Pascal 2.0 was the base for Turbo Pascal 1.0 which added a new WordStar compatible editor (written by Mogens Glad and Lars Frid-Nielsen), a new menu system, and some changes in the run-time library. COMPAS Pascal and Turbo Pascal actually shared the same source code with lots of “IF TURBO … ENDIF” conditionals in it.
My business partners and I knew the Danish Borland founders (Niels Alex Jensen, Ole Henriksen, and Mogens Glad) from trade shows and other industry functions. At one point one of my partners (I think it was Flemming Oestergaard) ran into Niels at a reception. Niels talked about their new venture (Borland) and the products (MenuMaster and WordIndex) they were building using Digital Research’s Pascal MT+. Flemming told him we had a much better Pascal implementation which initially he didn’t believe (most people didn’t). However, after playing with an evaluation copy for a week or two the Borland folks became converts.
I still recall being on vacation in Spain in July of 1983 when I got an excited phone call from Preben that Borland had agreed to license our product… and that we’d get an additional bonus if we could complete a 16-bit version in three months. Which we did! At the time I did my coding on a DEC Rainbow 100, a dual CPU machine with both a Z-80 and an 8088 processor. It ran an interesting hybrid of CP/M-80 and CP/M-86 and allowed me to develop and test 8-bit and 16-bit versions of the product without having to switch machines.
From: Anders Hejlsberg - microsoft.com
Sent: Sunday, November 09, 2008 7:27 PM
Subject: a few clarification details about the pre-Turbo Pascal v1 editions…
I dug out my copy of the Turbo Pascal 3.0 source code and looking at the comments in there it appears I had my version numbers confused a bit:
COMPAS Pascal 1.0 and 2.0 were both subset implementations. Turbo Pascal 1.0 was indeed based on COMPAS Pascal 3.0. Looks like it was version 3.02 to be specific.
Development of the 16-bit version started on 7/22/1983—which, I guess, was when I returned from vacation in Spain. We were fast back then—from zero to ship in four months!
Also, the comments show that we changed the name to PolyPascal a year later, on 7/24/1984.
Below is a copy of the comments from the compiler source code. Pure nostalgia!
; ******************************************************* ; * * ; * PolyPascal-86 (MS-DOS version) * ; * Compiler Main Module * ; * * ; * By Anders Hejlsberg * ; * Copyright (C) 1984 by * ; * PolyData MicroCenter A/S * ; * * ; ******************************************************* ; Version history: ; 1.01 220783 Development version ; 3.01 030983 Field test version ; 260983 @INI parameters now set when program code is ; dumped directly from memory (DUMPC) ; 3.02 061083 8087 support added. ; OVERLAYs added. ; ARRAY OF CHAR assignment fixed (SCVAC). ; RECORDs within RECORDs ok (RECTYP). ; PORT and PORTW in expressions ok. ; CLRHOM standard string added. ; 3.03 041283 Array subscriptions with constant indices generates ; more efficient code. ; 3.04 190184 Memory allocation scheme changed. Entire object code ; segment used to buffer object files. ; Include file buffering removed (no longer required). ; Overlay areas packed in disk files. Unpacking occurs ; at load time. ; EXTERNAL now works with PROGRAM and OBJECT commands. ; 3.05 160284 RESET and REWRITE with untyped files compile ok when ; the record length specification is an expression. ; 3.06 030384 EXIT and HALT standard procedures added. ; PROGRAM command generates correct code for segment ; allocation parameters passed to @INI. ; 3.07 100484 String constant assignment to ARRAY OF CHAR ok. ; 3.10 240784 Name changed to PolyPascal. ; 3.11 011085 FIND on large programs does not produce compiler ; overflow (TSTMO).