Borland Pascal

Turbo Pascal is a complete development system that includes a compiler and an Integrated Development Environment (IDE) for the Pascal programming language running mainly on MS-DOS, developed by Borland under Philippe Kahn's leadership. The name Borland Pascal was generally reserved for the high end packages (with more libraries and standard library source code) while the original cheap and widely known version was sold as Turbo Pascal. The name Borland Pascal is also used more generically for Borland's dialect of Pascal.

Borland has released three versions of Turbo Pascal for free: versions 1.0, 3.02 and 5.5.

Motivation for Turbo Pascal
Philippe Kahn first saw an opportunity for Borland, his newly formed software company, in the field of programming tools. Historically, the vast majority of programmers saw their work flow in terms of the edit/compile/link cycle, with separate tools dedicated to each task. Programmers wrote code in a text editor, a compiler created object code from source (often requiring multiple passes), and a linker combined object code with runtime libraries to produce an executable program. This cycle was the result of limited computer power and small amounts of memory.

In the IBM PC market of the early 1980s, the major programmer tool vendors included IBM, Microsoft, and Lattice. They all made C compilers (and some made Pascal compilers), which all worked in a similar fashion. For example, the Microsoft Pascal system consisted of two compiler passes and a final linking pass (which could take minutes on systems with only floppy disks for secondary storage). This process was the cumbersome product of the extremely limited resources of the early IBM PC models. Vendors of software development tools aimed their products at professional developers, and the price for these basic tools plus ancillary tools like profilers ran into the hundreds of dollars.

Kahn's idea was to integrate these separate functions in a programming toolkit, have it run with much better performance, and charge one low price for it all. Instead of selling the kit through established sales channels (retailers or resellers), his new tool would be sold inexpensively via mail-order. Turbo Pascal is generally considered to be the first popular Integrated Development Environment (IDE) of any type.

As an additional selling point against the bigger vendors, Turbo Pascal disks came with no copy protection of any sort. Turbo Pascal came with the famous "Book License": "You must treat this software just like a book ... may be used by any number of people ... may be freely moved from one computer location to another". Since the first versions didn't have online help, copy protection was effectively enforced by possession of the Turbo Pascal reference manual (pictured above).

Version history
The Turbo Pascal compiler is based on the Blue Label Pascal compiler originally produced for the NasSys cassette-based operating system of the Nascom microcomputer in 1981 by Anders Hejlsberg. This was first rewritten as the Compas Pascal compiler for the CP/M operating system and then as the Turbo Pascal compiler for DOS and CP/M. A version of Turbo Pascal was available for the Apple Macintosh from about 1986 but was eventually discontinued around 1992. Another version was available for the DEC Rainbow through several releases.

Version 1.0
See also Antique Software: Turbo Pascal v1.0. Borland licensed the PolyPascal compiler core, written by Anders Hejlsberg (Poly Data was the name of his company in Denmark), and added the user interface and editor. Anders joined the company as an employee and was the architect for all versions of the Turbo Pascal compiler and the first three versions of Borland Delphi.

Turbo Pascal 1.0 was very fast compared to other microcomputer Pascal compilers. Turbo Pascal 1.0 was not only fast but also compact due to the lack of EXE support — the compiler was a single COM file, about 38 kilobytes long. This file included the editor, compiler, linker, and all of the library routines. The edit/compile/run cycle was fast compared to other Pascal implementations, because everything related to building the program was stored in RAM. Writing a built program to disk was an additional menu option.

When the first version of Turbo Pascal appeared on November 20 1983, the type of IDE it used was relatively new. On its debut in the American market, Turbo Pascal retailed for USD$49.99. The integrated Pascal compiler also was of very good quality compared to other Pascal products of the time and was affordable above all. The "Turbo" name alluded to its compilation speed as well as the speed of the executables it produced. The speed of these "com" executable files was a revelation for developers whose only previous experience programming the PC was with Microsoft's BASIC.

The IDE was incredible for its day, a day of extremely limited resources for the typical IBM PC. It was simple and intuitive, and it had a menu system that was well organized. Early versions used the WordStar control key layout, which was the de facto standard because of WordStar's wide use. Later versions of the IDE, designed for later PCs with more disk space and memory, had the ability to instantly look up the definitions of the keywords of the language just by putting the cursor over a keyword and hitting the help button. The definitions also frequently included example code that used the keyword. This enabled the inexperienced programmer to learn Pascal simply by using the IDE, without actually requiring help from a book.

Later versions
Beginning with version 4.0, released in 1987, the compiler could generate executables in native EXE format under MS-DOS. (Previous versions could generate only COM files.) Along with this, support for the increasingly outdated CP/M operating system was dropped. This version also introduced the first full-screen user interface with pull-down menus. Prior to 4.0, the product had a text-based menu screen and a separate full-screen editor.

Version 5.x introduced the familiar Borland blue screen, which would be the trademark of the company's MS-DOS compiler tools until the end of this line in the middle 1990s.

Later versions had the ability to easily integrate assembly language within Pascal. The addition of in-line assembly was desirable because assembly provides the lowest human-readable interface to the machine, and allowed a talented assembly programmer to replace the built-in Pascal functions with code that was smaller or faster (or both). The user could single step through a program quite easily, and when they got to an assembler block, they could single step through that too. The user could add watches on variables and registers in an IDE window. Programs using IBM PC graphics mode could flip between graphics and text mode automatically or manually.

On top of all of the previous features, the IDE included a code profiler that could report on which parts of the program were using the most time. The books included with Borland Pascal had detailed descriptions of the Intel assembler language, going so far as to provide the clock cycles required of each instruction. Overall this system, as a whole, made for a relatively pleasant experience when trying to optimize code; the user never had to leave the IDE. This all worked 'out of the box' and was put together so simply that a high school student could use it.

Units
Over the years, Borland enhanced not only the IDE, but also the programming language. Borland's dialect of Pascal became a de facto industry standard (and is still implemented by modern variants like Free Pascal), since ISO standard Pascal proved inadequate for real-world application development.

From version 4.0, the language introduced the concept of Units. Units were used as external function libraries, like the object files used in other languages such as C, but a little more high level (the programmer was able to define what will be visible outside the unit and what not).

Units in Borland's Pascal were similar to Modula-2's separate compilation system. In 1987 when Turbo Pascal 4.0 came out, Modula-2 was making inroads as an educational language which could replace Pascal. Borland, in fact, had a Turbo Modula-2 compiler, but this product ran only on CP/M and was never ported to MS-DOS (its user interface was almost identical to that of Turbo Pascal 3.x and earlier). Instead of porting their Modula-2 compiler to MS-DOS, Borland elected to implement separate compilation in their popular Pascal product. Separate compilation was not part of the standard Pascal language, but was already available in UCSD Pascal, which was very popular on 8-bit machines. Turbo Pascal syntax for units appears to have been borrowed from UCSD Pascal[1]. With earlier versions of Turbo Pascal, which ran on primitive PCs, the complexity of software written with the package did not demand it; but with the new ability to generate EXE files, programs of significant complexity were now possible which needed separate compilation.

Object oriented programming
From version 5.5 onwards some object oriented programming features were introduced: classes (confusingly called "objects"), inheritance, and constructors and destructors. The IDE was already augmented with an object browser interface showing relations between objects and methods and allowing the programmer to navigate the modules easily. Some people call these extensions Object Pascal although that is more commonly used as a name for the language underlying Delphi (which has two totally separate OOP systems).

Turbo Pascal 7 and Borland Pascal 7
The last version released was version 7. Borland Pascal 7 contained an IDE and compilers for creating DOS, extended DOS and Windows 3.x programs. Turbo Pascal 7 on the other hand could only create standard DOS programs. It also had a graphical API (the Graph unit) which supported multiple external drivers (BGI files - standing for Borland's Graphics Interface) and provided a mechanism to link these drivers with the EXE, but as it was quite slow and caused unpleasant flickering, interchangeable visual pages were used, which caused overfilling the video memory. Some third party drivers, such as SVGA drivers, were made by fans, but they never gained big popularity, since next-generation tools like Borland C++ and Delphi were on their way at that time.

Windows versions
Two versions of Turbo Pascal for Windows 3.x were released: Turbo Pascal for Windows 1.0 (based on Turbo Pascal 6 but released about 2 years later), and 1.5 (released after Turbo Pascal 7). The Windows compiler included in Borland Pascal 7 was entitled Borland Pascal for Windows' but presumably was from the same code base as TPW 1.5.

All versions built Windows-compatible programs, and featured a Windows-based IDE, as opposed to the traditional DOS-based IDE in Turbo Pascal. The IDE and editor commands conformed with Microsoft Windows user interface guidelines, instead of the classic TP user interface. The support for Windows programs required the use of the ObjectWindowslibrary, similar but different from (the first release of) the Borland C++ sister, radically different from the DOS Turbo Vision environment, and was launched quite late (1992), so it never achieved wide popularity, and was later eclipsed by Delphi.

Mac version
Borland released Turbo Pascal for Macintosh in 1985. Much like the PC version, it was written in very tight assembly language and had a very powerful IDE, but not a good debugger. Borland did not support this product very well. They did issue a version 1.1, patched to run on the 32-bit clean Macintosh II. The product was dropped not long after.

The CRT issue
The CRT unit of Turbo Pascal 7.0 (used by many fullscreen text mode applications) contains code in its initialisation section to determine the CPU speed for calibration of delay loops. Unfortuately this code fails to work properly on processors with a speed greater than about 200 MHz and quits with a Runtime error 200 because it uses 16-bit DIV, the result of which doesn't fit into a 16-bit integer. The issue can be fixed either by patching the executable file or using a Terminate and Stay Resident program loaded before the problem executable (see link below).

Graphic
Turbo Pascal uses Borland Graphics Interface.

Sample Code
Notes:
 * Historically, Pascal comments are indicated, or  , but later versions of Borland Pascal also supported C++-style comments.
 * The line  is a Borland specific extension to Pascal.
 * Borland's Pascal is not case sensitive.

Samples:


 * This simple program prints the words "Hello World" on the screen.

BEGIN WriteLn('Hello World'); END.

program WriteName; VAR Name:string; { This declares the variable Name as a string } BEGIN Write('Please give your name: '); Readln(Name); { Readln reads the string printed on the screen } WriteLn('Hello ', Name); END.
 * This asks for a person's name and prints it on the screen.