Turbo Pascal

From Wikipedia, the free encyclopedia

Turbo Pascal 3.0 manual front page
Turbo Pascal 3.0 manual front page

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.

Contents

[edit] 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. A text editor let you create and manage the source code of your program, a compiler turned your source code into object code, and a linker "linked" separately compiled object code components to create a final binary program.

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, and all were cumbersome and slow. For example, the Microsoft Pascal system consisted of two compiler passes and a final linking pass. You had to run an editor to edit the program, then save the file. Then you had to run pass 1 of the compiler, then pass 2 (creating a separate .exe file), then the linker (to bring in startup and common library code), then run the code to verify the correct functionality of the program. The whole process could take many minutes, especially on floppy disks. Vendors' standard charge 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 there was no online help, copy protection was effectively enforced by possession of the Turbo Pascal reference manual (pictured above).

[edit] 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.

[edit] Version 1.0

Debugging a program using the Turbo Pascal 6.0 IDE
Debugging a program using the Turbo Pascal 6.0 IDE

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 - 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 so 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 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. It was simple and intuitive, and it had a menu system that was well organized. Early versions used the WordStar control key layout. Later versions of the IDE 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.

[edit] Later versions

Turbo Pascal 4.0 (1987) startup screen.
Turbo Pascal 4.0 (1987) startup screen.

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

[edit] Competition with Microsoft Pascal

It is likely that Microsoft Pascal was dropped because of the competition provided by Turbo Pascal's good quality and low price. Another theory is that Borland made an agreement with Microsoft to drop development of Turbo BASIC, a BASIC IDE that stems from Turbo Pascal, if Microsoft would stop developing Microsoft Pascal. For a while, Microsoft produced QuickPascal, which was almost 100% compatible with Turbo Pascal.

[edit] Units, 5.5+ Object Pascal

Over the years, Borland enhanced not only the IDE, but also the programming language. 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). From version 5.5 onwards some object oriented programming features were introduced. 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).

Units in Borland's Pascal were similar to Modula-2's separate compilation system, and almost certainly influenced by it. 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. 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.

[edit] 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 3rd 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.

[edit] 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 ObjectWindows library, 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.

[edit] 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.

[edit] Successors

By 1995, Borland had dropped Turbo Pascal and replaced it with the RAD environment Delphi, which included the language Object Pascal. Native 32-bit Delphi versions still support the more portable Pascal enhancements (read: those that are not 16-bit centric) of the earlier products including the earlier static object model.

Several Turbo Pascal compatibles also exist. The best-known ones are Free Pascal and Virtual Pascal.

[edit] Legacy

Borland Pascal is still taught at secondary, sixth form level and University level in the island of Malta and at other colleges in Germany and the USA, and was the state-approved educational programming language for all South African secondary schools until 2002. Today it continues to be taught in some universities around the world as an introduction to computer programming, usually continuing on with C and/or Java. Some lecturers prefer to use Borland Pascal 7 or Turbo Pascal 5.5 as it is very simple (in comparison to more modern IDEs like Microsoft Visual Studio or Borland JBuilder), introduces students less familiar with computing to using the keyboard and keyboard shortcuts (TP 5.5 has no mouse support), familiarises students with DOS commands (which are largely the same as Windows NT's Command Prompt) and it is now available for free download so students willing to program on their own PCs can do so freely without possible legal complications.

Some argue that it is not worth the time to teach a very deprecated language that may be easier to initially learn than others, as it is inevitable that more contemporary languages will have to be taught afterwards. Others comment that since it is just as inevitable that evolving language standards and changing language fashions will require every programmer to absorb large amounts of new material on a regular basis, it is just as well to start with a well-structured, easily comprehended language that provides a solid foundation for future learning. After all the language is still developing and evolving - eg in new compilers, new versions for .NET such as Chrome, etc.

[edit] 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).

[edit] See also

[edit] External links

[edit] Newsgroups