Skip to content

Memories of Turbo Pascal version 1.0 - Anders Hejlsberg, United States

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).

{ 5 } Comments

  1. John Herbster | November 20, 2008 at 11:23 am | Permalink

    Anders Hejlsberg,
    Thanks for reminding us how powerful simple ideas and tools can be.
    Best regards, John Herbster

  2. RIF | November 20, 2008 at 3:02 pm | Permalink

    Hej Anders

    Heldigt at det blev COMPAS Pascal og ikke COMPAS Algol ;-). Tak for Turbo Pascal og dit arbejde på de første Delphi versioner. Hilsen RIF

    EN: Lucky that it became COMPAS Pascal and not COMPAS Algol ;-). Thanks for Turbo Pascal and your work on the first Delphi versions. Greetings RIF

    To spørgsmål:
    1. The "trade show" var det Mikrodata i Bella centeret?
    2. Blev du engang tilbage i begyndelsen af 1980′erne interviewet til DR P4 radio?

  3. Ken Knopfli | November 21, 2008 at 2:35 am | Permalink

    My first contact with computing was also an HP2100 - 64k core memory! No ALGOL, tho’. I entered everything via the pushbutton switches on the front panel. The machine code manual consisted of indestructible thick plastic coated pages.

  4. paul cockshott | April 22, 2009 at 12:00 am | Permalink

    I had no idea that the Nascom figured in the past of Turbo. I was a great fan of both Turbo and the Nascom. Along with Peter Balch we did a sort of pico-algol for the Nascom that fitted into the 2k Eprom. It was an interpreter of course to fit in that small space not a compiler.
    We used the Turbo compiler as our basic teaching tool and prefered research language at Strathclyde University during the 80s and early 90s.
    I used to use Turbo as my language of choice for implementing compilers right down to the late 90s when I switched to Java for portability, and the Vector Pascal compiler is very much modelled on the Turbo source language. I have tried automatically generating code generators in Delphi more recently and still find these run much faster than the ones I usually generate in Java.

  5. Igor Funa | September 5, 2009 at 1:31 pm | Permalink

    Pascal is my favorite programming language since the beginning. I started with Turbo Pascal on CP/M machines in early 80s and continued on PC in 90s. Now it is called Delphi.

    Turbo Pascal inspired me to create Turbo51 (http://turbo51.com/), Pascal compiler for the 8051 microcontrollers. I didn’t know that building a (Pascal) compiler is such a fun.

    Anders Hejlsberg, thank you very much for this superb compiler!

    Igor Funa

{ 1 } Trackback

  1. [...] David I has been running a fun series on memories about Turbo Pascal 1.0 now that it has been 25 years since it’s relase.  And guess who showed up with some thoughts?  [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

Bad Behavior has blocked 4 access attempts in the last 7 days.

Close