Turbo Pascal

Turbo Pascal
Developer(s) Anders Hejlsberg while working at Borland
Initial release 1983 (1983)[1]
Operating system CP/M, CP/M-86, MS-DOS,
Windows 3.x, Macintosh
Platform 8080/Z80, 8085, x86
Type Integrated development environment

Turbo Pascal is a software development system that includes a compiler and an integrated development environment (IDE) for the Pascal programming language running on CP/M, CP/M-86, and MS-DOS, developed by Borland under Philippe Kahn's leadership. For versions 6 and 7 (last), both a lower-priced Turbo Pascal and more expensive Borland Pascal were produced; Borland Pascal was more oriented towards professional software development, with more libraries and standard library source code. The name Borland Pascal is also used more generically for Borland's dialect of the Pascal programming language, significantly different from Standard Pascal.

Borland has released three old versions of Turbo Pascal free of charge because of their historical interest: the original Turbo Pascal (now known as 1.0), and versions 3.02 and 5.5 for DOS.[2][3][4]

Motivation and release

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 workflow in terms of the edit/compile/link cycle, with separate tools dedicated to each task. Programmers wrote source code using a text editor; the source code was then compiled into object code (often requiring multiple passes), and a linker combined object code with runtime libraries to produce an executable program.

In the early IBM PC market (1981–83) the major programming tool vendors all made compilers that 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, although programs were very much smaller than they are today). This process was less resource-intensive than the later integrated development environment (IDE). 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 package all these functions in an integrated programming toolkit designed to have much better performance and resource utilisation than the usual professional development tools, and charge a low price for a package integrating a custom text editor, compiler, and all functionality need to produce executable programs. The program was sold by direct mail order for $49.95, without going through established sales channels (retailers or resellers).

Unlike some other development tools, Turbo Pascal disks had no copy protection. Turbo Pascal came with the famous "Book License": "You must treat this software just like a book ... [it] may be used by any number of people ... may be freely moved from one computer location to another, so long as there is no possibility of it being used at one location while it's being used at another."[5]

Reception

Jerry Pournelle of BYTE wrote in February 1984 that Turbo Pascal "comes close to what I think the computer industry is headed for: well documented, standard, plenty of good features, and a reasonable price". Pournelle disliked the requirement to buy another license to distribute binaries, but noted that "it turns out not to be a lot more. Borland only wants another $100" more than the $49.95 base price, and that "my first impression of Turbo is that it's probably worth $149.95. It looks to do everything MT+ with the Speed Programming Package does, and maybe even do it faster and better".[6] Three BYTE reviewers praised Turbo Pascal in July 1984. One called the DOS version "without doubt, the best software value I have ever purchased", and another called the CP/M version "an excellent product ... [Borland] deserves praise for this high-value product". The third stated that it was "not a good compiler for developing massive applications", but added that it was greatly superior to BASIC, the programming language usually associated with home computers at the time. He concluded that Turbo Pascal was "a bargain that shouldn't be passed up".[7]

Despite finding what it described as "a serious bug" in version 3.0, and decreased compatibility with PC clones, the magazine in February 1986 stated that "it is hard to avoid recommending Turbo to anyone who wants to program in Pascal", citing improved speed and graphic routines.[8] When reviewing four other Pascal compilers in December 1986, BYTE described Turbo Pascal as "practical and attractive to programmers at all levels of expertise".[9] Bruce Webster also praised the language in the magazine, stating in August 1985 that Turbo Pascal "is best known for its small size, incredible compile speeds, and fast execution times". He noted that the software's quality and low price had been especially surprising after the "JRT Pascal fiasco", and stated that even at the new higher $69.95 price, version 3.0 was "probably still the best software deal on the market".[10]

PC Magazine was similarly complimentary in November 1984, stating that "nothing like Turbo Pascal has ever existed for PC-DOS before". It praised the software's low price, speed, unusually good documentation for a compiler, and noted the existence of many utilities from other companies that hoped to benefit from Turbo Pascal's popularity. The review stated that the IDE that simplified the edit-compile-run-debug loop made Turbo Pascal accessible to new programmers like BASIC.[11]

Borland sold about 250,000 copies of Turbo Pascal in two years, which Webster described as "an amazing figure for a computer language".[10] He reported six months later that the figure had risen to "more than 400,000 copies in a marketplace that had been estimated as having only 30,000 potential buyers".[12]

CP/M and DOS versions

Turbo Pascal 3.0 manual front cover

The Turbo Pascal compiler was 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. Borland licensed Hejlsberg's "PolyPascal" compiler core (Poly Data was the name of Hejlsberg's company in Denmark), and added the user interface and editor. Anders Hejlsberg 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.[2]

The compiler was first released as Compas Pascal for CP/M, and then released on November 20, 1983 as Turbo Pascal for CP/M (including the Apple II computer when fitted with a Z-80 SoftCard, effectively converting the 6502-based Apple into a CP/M machine, the Commodore 64 with CP/M cartridge, and the later DEC Rainbow), CP/M-86, and MS-DOS machines. On its launch in the United States market, Turbo Pascal retailed for USD49.99, a very low price for a compiler at the time. The integrated Pascal compiler was of good quality compared to other Pascal products of the time.[13]

The Turbo name alluded to the speed of compilation and of the executables produced. The edit/compile/run cycle was fast compared to other Pascal implementations because everything related to building the program was stored in RAM, and because it was a one-pass compiler written in assembly language. Compilation was much faster than compilers for other languages (even Borland's own later compilers for C), and other Pascal compilers, and programmer time was also saved since the program could be compiled and run from the IDE. The execution speed of these COM-format programs was a revelation for developers whose only prior experience programming microcomputers was with interpreted BASIC or UCSD Pascal, which compiled to p-code which was then interpreted at runtime.

There were different versions of Turbo Pascal for computers running MS-DOS, CP/M, or CP/M-86 with 64 KB of memory and at least one floppy disk drive. The CP/M version could run on the many CP/M machines of the time with 8080 or Z80 processors, or an Apple ][ with Z80 card. The MS-DOS and CP/M-86 versions ran on the many 8086 and 8088 machines which became available, including the IBM PC. The installer, lister, and compiler with its IDE, and the source code for a simple spreadsheet program called MicroCalc written by Philippe Kahn as a demonstration, would fit on a single floppy disc. A disc copy without MicroCalc would accommodate the source code and compiled executable of a reasonable-sized program—as it was common at the time for users to have only a single floppy drive as mass storage, it was a great convenience to be able to fit both the compiler and the program being written on a single disc, avoiding endless disc swapping.

Bill Gates saw the success of Turbo Pascal "in very personal terms, and 'couldn't understand why [Microsoft's] stuff was so slow. He would bring in poor Greg Whitten [programming director of Microsoft languages] and yell at him for half an hour.' He couldn't understand why Kahn had been able to beat an established competitor like Microsoft."[14]

At the time 8080/Z80/8088/8086 machines had limited computing resources. In particular RAM was expensive. The architecture of the various machines running DOS additionally limited the maximum to under 1 MB (e.g., machines hardware-compatible with the IBM PC were limited to 640 KB), although nothing approaching this limit was affordable for most users.

The TP IDE was very advanced for its day. It was able to perform well and compile very fast with the amount of RAM on a typical home computer. The IDE was simple and intuitive to use, and had a well-organized system of menus. Early versions of the editor used WordStar key functions, which was the de facto standard at the time. Later versions of the IDE, designed for PCs with more disk space and memory, could display the definitions of the keywords of the language by putting the cursor over a keyword and pressing the F1 key (conventionally used to display help). Many definitions included example code.

In addition to standard executable programs, the compiler could generate Terminate and Stay Resident (TSR) programs, small utilities that stayed in memory and let the computer do other tasks—running several programs at the same time, multitasking, was not otherwise available. Borland itself produced a small application suite called Sidekick that was a TSR letting the user keep a diary, notes, and so forth.

Versions 2–7

Versions 2 and 3 were incremental improvements to the original Turbo Pascal, a basic all-in-one system, working in memory and producing .COM executable files for DOS and CP/M, and equivalent .CMD executables for CP/M-86 (totally different from .CMD batch files later used in 32-bit Microsoft Windows).[3] Source code files were limited to 64 KB to simplify the IDE, and DOS .COM files were limited to 64 KB each of code, stack and global (static) variables. Program source code could be extended by the use of Included files, and the .COM programs could be overlaid,[15] effectively using virtual memory if they would not otherwise fit in memory.

Version 4, released in 1987, was a total rewrite, with both look and feel and internal operation much changed; versions 5 to 7 were incremental improvements and expansions. The compiler generated executables in .EXE format under DOS, rather than the simpler but more restricted .COM executables. The by-then-obsolete CP/M and CP/M-86 operating system versions were dropped when TP was rewritten. Version 4 introduced units, and a full-screen text user interface with pull-down menus; earlier versions had a text-based menu screen and a separate full-screen editor. (Microsoft Windows was still very experimental when the first version was released, and even mice were rare.)

Colour displays were replacing monochrome; TP version 5.0 introduced the Borland blue screen, used by Borland's DOS compilers until the end of this product line in the mid-1990s.

Later versions came in two packages with the same version number: a less expensive "Turbo" package, and a "Borland" package with enhanced capabilities and more add-ons.

Assembly language

While all versions of Turbo Pascal could include inline machine code, starting with version 6 it was possible to integrate assembly language within Pascal source code.[16]

Support for the 8086 memory model was provided by inline assembly, compiler options, and language extensions such as the "absolute" keyword. The Turbo Assembler, TASM, a standard x86 assembler independent of TP source-compatible with the widely used Microsoft Macro Assembler MASM, was supplied with the enhanced "Borland Pascal" versions.

Debugging and profiling

The IDE provided several debugging facilities, including single stepping, examination and changing of variables, and conditional breakpoints. In later versions assembly-language blocks could be stepped through. The user could add breakpoints on variables and registers in an IDE window. Programs using IBM PC graphics mode could flip between graphics and text mode automatically or manually, or display both on two screens. For cases where the relatively simple debugging facilities of the IDE were insufficient, Turbopower Software produced a more powerful debugger, T-Debug.[17] The same company produced Turbo Analyst and Overlay Manager for Turbo Pascal. T-Debug was later updated for Turbo Pascal 4, but discontinued with the release of Borland's Turbo Debugger (TD), which also allowed some hardware intervention on computers equipped with the new 80386 processor.

TD was usually supplied in conjunction with the Turbo Assembler and the Turbo Profiler, a code profiler that reported on the time spent in each part of the program to assist program optimisation by finding bottlenecks.[18] The books included with Borland Pascal had detailed descriptions of the Intel assembler language, including the number of clock cycles required by each instruction. Development and debugging could be carried out entirely within the IDE unless the advanced debugging facilities of Turbopower T-Debug, and later TD, were required.

Later versions also supported remote debugging via an RS232 communication cable.[19]

Units

Over the years, Borland enhanced not only the IDE, but also extended the programming language. A development system based on ISO standard Pascal requires implementation-specific extensions for the development of real-world applications on the platforms they target. Standard Pascal is designed to be platform-independent, so prescribes no low-level access to hardware- or operating system-dependent facilities. Standard Pascal also does not prescribe how a large program should be split into separate compilation units. From version 4, Turbo Pascal adopted the concept of units from UCSD Pascal. Units were used as external function libraries, like the object files used in other languages such as FORTRAN or C.

For example, the line uses crt; in a program included the unit called crt; the uses is the mechanism for using other compilation units. interface and implementation were the keywords used to specify, within the unit, what was (and what was not) visible outside the unit. This is similar to the public and private keywords in other languages such as C++ and Java.

Units in Borland's Pascal were similar to Modula-2's separate compilation system. In 1987, when Turbo Pascal 4 was released, 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 DOS (its user interface was almost identical to that of Turbo Pascal 1–3). Instead of porting their Modula-2 compiler to DOS, Borland chose to implement separate compilation in their established 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.[20] Earlier versions of Turbo Pascal, designed for computers with limited resources, had no real need for it (the language had a statement to include separate source code in a program when necessary, and overlaying was supported from TP3) but, as computing and storage facilities advanced and the ability to generate large EXE files was added to Turbo Pascal, programs became large and complex enough to benefit from separate compilation.

Object-oriented programming

From version 5.5 some object-oriented programming features were introduced: classes, inheritance, constructors and destructors.[4] The IDE was already augmented with an object browser interface showing relations between objects and methods and allowing programmers to navigate the modules easily. Borland called its language Object Pascal, which was greatly extended to become the language underlying Delphi (which has two separate OOP systems). The name "Object Pascal" originated with the Pascal extensions developed by Apple Inc. to program its Lisa and Macintosh computers. Pascal originator Niklaus Wirth consulted in developing these extensions, which built upon the record type already present in Pascal.

Windows versions

Two versions named "Turbo Pascal for Windows" (TPW), for Windows 3.x, were released: TPW 1.0, based on Turbo Pascal 6 but released about 2 years later, and 1.5, released after Turbo Pascal 7; they were succeeded by Borland Pascal 7, which had Windows support. The Windows compiler in Pascal 7 was titled Borland Pascal for Windows'.

Both versions built Windows-compatible programs, and featured a Windows-based IDE, as opposed to the DOS-based IDE in Turbo Pascal. The IDE and editor commands conformed to the Microsoft Windows user interface guidelines instead of the classic TP user interface. The support for Windows programs required the ObjectWindows library, similar but not identical to that for the first release of Borland C++, and radically different from the earlier DOS Turbo Vision environment. Turbo Pascal was superseded for the Windows platform by Delphi; the Delphi compiler can produce console programs in addition to GUI applications, so that the use of Turbo and Borland Pascal became unnecessary.

Apple Macintosh

Borland released Turbo Pascal for Macintosh in 1985. Much like versions 1 to 3 for other operating systems, it was written in compact assembly language and had a very powerful IDE, but no good debugger. Borland did not support this product very well, although they issued a version 1.1, patched to run on the 32-bit Macintosh II. Macintosh support was dropped soon after.

Successors

By 1995 Borland had dropped Turbo/Borland Pascal and replaced it with the rapid application development (RAD) environment Delphi, based on Object Pascal. The 32- and 64-bit Delphi versions still support the more portable Pascal enhancements of the earlier products (i.e. those that are not specific to 16-bit code) including the earlier static object model. This language backwards compatibility means much old Turbo Pascal code can still be compiled and run in a modern environment today.

Other suppliers have produced software development tools compatible with Turbo Pascal. The best-known are Free Pascal and Virtual Pascal.

Freeware release

Borland released several versions of Turbo Pascal as freeware after they became "antique software" (abandonware) in 2002.[21] The newest released international version was TP 5.5, while the newer French TP 7.01 was also released as freeware.[22] The downloads are still available on the successor website of Embarcadero Technologies.[2][3][4]

In education

Borland Pascal is still taught in some countries at secondary, sixth form and university levels. It is taught at colleges and universities in Costa Rica, Turkey, Germany, Russian Federation, USA, Malta and at secondary schools in Argentina, Belgium, Bulgaria, Canada, Costa Rica, Croatia, France, Italy, Jamaica, Libya, Moldova, Romania, Serbia, Tunisia, Ukraine and Vietnam. It 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 advancing to C or Java or both.

Some lecturers prefer to use Borland Pascal 7 or Turbo Pascal 5.5 because of its simplicity in comparison to more modern IDEs such as Microsoft Visual Studio or Borland JBuilder, so it introduces students unfamiliar with computing to common tasks such as using the keyboard and keyboard shortcuts (TP 5.5 has no mouse support), familiarises them with DOS commands (which are largely the same as those of Microsoft Windows's command prompt), and lets them write programs without spending a lot of effort on getting the environment to work. TP 5.5 is available as a free download from Borland.[21][22]

Issue with CRT unit on fast processors

Several versions of Turbo Pascal, including the latest version 7, include a CRT unit used by many fullscreen text mode applications. This unit contains code in its initialization section to determine the CPU speed and calibrate delay loops. This code fails on processors with a speed greater than about 200 MHz and aborts immediately with a "Runtime error 200" message.[23] (the error code 200 had nothing to do with the CPU speed 200 MHz). This is caused because a loop runs to count the number of times it can iterate in a fixed time, as measured by the real-time clock. When Turbo Pascal was developed it ran on machines with CPUs running at 1 to 8 MHz, and little thought was given to the possibility of vastly higher speeds, so from about 200 MHz enough iterations can be run to overflow the 16-bit counter.[24] A patch was produced when machines became too fast for the original method, but failed as processor speeds increased yet further, and was superseded by others.

Programs subject to this error can be recompiled from source code with a compiler patched to eliminate the error (using a TURBO.TPL itself compiled with a corrected CRT unit) or, if source code is not available, executables can be patched by a tool named TPPATCH or equivalent,[25] or by loading a Terminate and Stay Resident program loaded before running the faulty program.[26]

There are also patches to the TP7 compiler itself,[27] thus if the Pascal source is available, a new compilation's code will work without the compiled code having to be patched. If the source code is available, porting to libraries without CPU clock speed dependency is a solution too.[28]

Floating point

There were several floating point types, including single (the 4-byte [IEEE 754] representation) double (the 8-byte IEEE 754 representation), extended (a 10-byte IEEE 754 representation used mostly internally by numeric coprocessors) and Real (a 6-byte representation).

In the early days, Real was the most popular. Many PCs did not have a floating point coprocessor so all FP had to be done in software. Borland's own FP algorithms on Real were quicker than using the other types, though its library also emulated the other types in software.

Sample code

This is the classic Hello world program in Turbo Pascal:

program HelloWorld;
begin
  WriteLn('Hello World')
end.

This asks for a name and writes it back to the screen a hundred times:

program WriteName;
var
  i    : Integer;        {variable to be used for looping}
  Name : String;         {declares the variable Name as a string}
begin
  Write('Please tell me your name: ');
  ReadLn(Name);          {ReadLn returns the string entered by the user}
  for i := 1 to 100 do
  begin
    WriteLn('Hello ', Name)
  end;
 readln;
end.

See also

References

  1. Gajic, Zarko. "Delphi history – from Pascal to Embarcadero Delphi XE 2". About.com.
  2. 1 2 3 Intersimone, David (2000-02-01). "Antique Software: Turbo Pascal v1.0". Embarcadero Technologies.
  3. 1 2 3 Intersimone, David (2000-02-10). "Antique Software: Turbo Pascal v3.02". Embarcadero Technologies.
  4. 1 2 3 Intersimone, David (2002-02-21). "Antique Software: Turbo Pascal v5.5". Embarcadero Technologies.
  5. Google Groups
  6. Pournelle, Jerry (February 1984). "Chaos Manor Gets Its Long-Awaited IBM PC". BYTE. p. 113. Retrieved 8 February 2015.
  7. Wadlow, Tom; Pierce, Al; Bridger, Mark (July 1984). "Turbo Pascal". BYTE (review). pp. 263–278. Retrieved 23 October 2013.
  8. Bridger, Mark (February 1986). "Turbo Pascal 3.0". BYTE. p. 281. Retrieved 9 May 2015.
  9. Shammas, Namir Clement (December 1986). "Pascal for the IBM PC". BYTE. p. 265. Retrieved 9 May 2015.
  10. 1 2 Webster, Bruce F. (August 1985). "Greetings and Agitations". BYTE. p. 355. Retrieved 27 October 2013.
  11. Duntemann, Jeff (1984-11-13). "Supercharged Turbo Pascal". PC Magazine. p. 276. Retrieved 25 October 2013.
  12. Webster, Bruce (February 1986). "Programming Tool and the Atari ST". BYTE. p. 331. Retrieved 9 May 2015.
  13. Chapman, Merrill R. (2006). In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters. Springer-Verlag. p. 118. ISBN 978-1-59059-721-7. Borland made its debut in the industry in a big way with the release of Turbo Pascal in November 1983. Turbo Pascal was a port to DOS and CP/M of Anders Hejlsberg's COMPAS Pascal, and it was released by Borland at a price that seemed amazing at that time: $49.95, about one-tenth the price of comparable products.
  14. Wallace, James; Erickson, Jim (1992). "Growing Pains". Hard Drive: Bill Gates and the Making of the Microsoft Empire. John Wiley & Sons. p. 277. ISBN 0-471-56886-4.
  15. Embarcadero Web site: Antique Software: Turbo Pascal v3.02]. "Turbo Pascal 3 was the first Turbo Pascal version to support overlays, the Intel 8087 math co-processor and BCD math."
  16. "Chapter 14 -- Combining Pascal with Assembly".
  17. InfoWorld 21 Mar 1988: Announcement of Turbopower T-Debug 4
  18. Turbo Profiler 1.0 manual
  19. Marco Cantų's Delphi Power Book: Debugging Delphi Programs
  20. 3.3.2. Linkage to Externally Compiled and Assembled Routines – UCSD Pascal System II.0 User Manual Reconstruction – Version I.5, September 1978
  21. 1 2 "Antique Software: Turbo Pascal v5.5". CDN » Museum. Borland Software Corporation. Archived from the original on 2004-02-03. Retrieved 2013-04-01.
  22. 1 2 "Téléchargements - Gratuits : Compilateurs Delphi, Pascal & C / C++". Borland Software Corporation. 2002-05-02. Archived from the original on 2003-08-13. Note to international users : This free Turbo Pascal 7 is available in French Only. The US version of Turbo Pascal 7 is not available as free download yet. For the US version please download Turbo Pascal 5.5 US below. Thanks.
  23. "Borland Pascal Developer Support". Retrieved 2011-04-25.
  24. "Borland's Version 7 Pascals' Start-Up Runtime Error 200 (divide by zero)". Archived from the original on September 7, 2015. Retrieved 2015-11-16. Web page discussing the cause of the error and various solutions.
  25. "PatchCRT – fix RunTime Errors on some apps". kennedysoftware.com. 2003. Retrieved 2010-09-28.
  26. "How to fix a Run Time Error 200". pcmicro.com. 2006. Retrieved 2010-09-28.
  27. "Runtime Error 200". blume-programm.de. 2003-03-13. Retrieved 2015-11-16. (German)
  28. Cheng, Allen (1997). "SuperDelay v1.1a". blume-programm.de. Retrieved 2010-09-28.
Wikimedia Commons has media related to Turbo Pascal.
This article is issued from Wikipedia - version of the 10/24/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.