by Raymond T. Tillman
In March, 1982, after many promises and much delay, ATARI quietly released their ATARI PASCAL Language System. However, they didn’t release it through the expected channels. PASCAL was released through the ATARI Program Exchange as unsupported software. Adding to that disappointment, it required two ATARI 810 disk drives. ATARI also said that the program “was not suited for learning PASCAL or the ATARI 800 computer.” Furthermore, the absence of a compatible assembler (one which generates relocatable code), limited debugging tools, and incomplete documentation are considered to have reduced the usefulness of ATARI’s PASCAL. Finally, only part of the PASCAL language system was released. Since then, almost nothing has been said by ATARI or anyone else about the product.
Just what is ATARI’s PASCAL? ATARI PASCAL is a powerful, structured programming language built on the core of a real computer language standard: the International Standards Organization’s draft standard (DPS/7185). This standard has been adopted for almost all large computer versions of PASCAL. The language system is significantly expanded to provide graphics and sound and to eliminate some of the shortcomings of standard PASCAL. As such, it is a very nice package at an extremely attractive price.
The ATARI PASCAL was written for a double density disk drive. In order to run it with the 810 drive and the current ATARI 800 computer, it was necessary to place the files on two separate disks and make some other changes. These changes cause some small problems, especially if compilation is aborted. The compiler expects the system monitor to be on the same disk as the compiler. It isn’t; there. isn’t room for it. Some consider this a drawback and have said that this problem has driven them away. They, like ATARI’s top brass, just don’t know what they have here.
ATARI PASCAL is a well-written version of the standard language with a select few extensions to the base and a good complement of library routines. It contains all of the standard scalar and structured data types associated with PASCAL, as well as three additional scalars: BYTE, WORD, STRING. It allows absolute variables (defined to a particular memory location), external procedures, modular compilation (similar to UCSD units, but easier to use), bitwise operations, heap management (including pointer variables and garbage collection), and a host of other nice things. It even provides an ELSE on case statements.
My sources at ATARI tell me that only two bugs, both associated with the ABSOLUTE variables, have been reported. Some claim to have found others, but no supporting documentation exists. ATARI also tells me that other parts of the language, including random disk access (segmented files) and possibly a compatible relocatable code assembler have been withheld, presumably because of bugs. Maybe they simply won’t run on a 48K ATARI.
PASCAL by nature is not as easy to work with as BASIC. You must write your programs with an editor. The PROGRAM TEXT EDITOR was designed for use with the PASCAL and is an excellent product.I use TEXT WIZARD. The ATARI Word Processor and Letter Perfect are probably not compatible. After writing the code you must load the PASCAL interpreter and call up the compiler (switching disks when you do). Then you can sit and wait. The PASCAL compiler is slow and performs three passes.This is not standard for PASCAL but it does allow for an easier, more flexible compilation. After successfully compiling the program you must again switch disks and link the program.This can be tricky. After linking the program modules you may run the program. If it blows up, you may not know why - the debugger was not released.
While the compile and link steps are very time consuming, the run time is normally very fast. A graphics demonstration using player graphics smoothly and quickly scrolls in both vertical and horizontal directions, quite unlike a similar demonstration program written in BASIC.
When I ran a test using an algorithm which generates Archimedes Spiral, I was rather disappointed. It took more than three and a half hours to compute and plot the spiral; longer than ATARI BASIC! This is certainly because of the slowness of the transcendental functions and the required conversions between integer and real numbers. (Strong data typing is maintained in ATARI PASCAL. )
There is not a lot of hard information available about the ATARI PASCAL memory requirements or where each portion of the system resides in memory. ATARI representatives provided me with a tentative memory map. It is both incomplete and not guaranteed to be accurate.
Page Zero | 0-007FH |
Interpreter | 0080-00FFH |
Concatenation Buffer | 048-057FH |
Evaluation Stack | 0600-0700H |
Interpreter Vector Table | 1D00-1F00H |
Interpreter Jump Table | 1F00-IF80H |
Parameter Compiler Comms Area | 1F80-2000H |
Assorted Program Related Operations & Working Space |
2000-9400H |
Monitor | 9400-BC00H |
Screen Area | BCOO-BFFFH |
Although page zero is used by PASCAL, the main operations, parameter passing and
evaluation operations are performed in page six and elsewhere. This can be
devastating to those accustomed to using page six for other things. In PASCAL,
it is not available to the user.
Machine language modules may be added to PASCAL programs as inline code. These must be fully relocatable. Since parameters are passed on the evaluation stack (page six), programmers must perform the extra task of maintaining that stack when they use machine language subroutines.
ATARI PASCAL and UCSD PASCAL are very similar. The minor differences which exist between the ATARI PASCAL and the UCSD version should cause few problems; in almost every instance, the ATARI version is more flexible. The major differences between the USCD PASCAL and ATARI’s PASCAL is in design philosophy, speed of compilation, and the hardware differences between the ATARI and other microcomputers.
UCSD PASCAL is not simply a computer language, nor does it comply wholly with the ISO draft standard. It is a complete software system including a filer (DOS), compiler, linker, assembler, program editor, and a pseudo-code (P-code) interpreter. These make up the operating system and are not part of the programming language. The language core requires 40K on the APPLE II computer. It includes both RAM and ROM (optional) segments and apparently replaces the APPLE II's base operating system. APPLE PASCAL programmers must learn a new operating system and file manager to use that product. Benchmark tests reported by John Sommer in MICROCOMPUTING magazine (April, 1982) showed that the APPLE II PASCAL was only twice as fast as the APPLESOFT BASIC.
The ATARI PASCAL is smaller, uses the ATARI filemanager and operating system, and is entirely RAM resident. This concept is in full accord with the ISO standard. It appears that the runtime environment may leave as much as 28K for programs. Program compilation is much slower than the UCSD PASCAL and is restricted to about 300 program lines per module but multiple modules are allowed. Linkage of modules is also restricted, but it is possible to chain modules (passing parameters between modules.)
ATARI PASCAL has been shown to execute as much as seven times faster than the APPLE PASCAL in some benchmark tests. But, since ATARI’s PASCAL uses the internal floating point routines and BCD REAL numbers, any operation using REAL numbers is terribly slow.
As with the UCSD product, ATARI PASCAL uses a P-code interpreter. However, the P-code has been optimized for the 6502 CPU. Similar compilation and link time error checking schemes are employed. Modular compilation is possible, actually even easier to perform, with the ATARI PASCAL. One significant advantage for the UCSD PASCAL is segmented files (random access files). The ATARI PASCAL segmented files library has not been released, although it exists.
ATARI PASCAL is not alone in its design. A review of the CP/M PASCAL/MT+ compiler marketed by Digital Research is revealing. Comparison of the documentation for the ATARI PASCAL and the PASCAL/MT+ showed that page after page of the language descriptions are identical or nearly so. Examples used are in almost all instances identical. Special functions, not part of the standard PASCAL, are the same. In one case, an odd comment is found in the ATARI document, in the description of the ADDR function, on page 41. It reads, “Output is system dependent." That doesn’t make sense in the ATARI manual, but in the CP/M document, it makes a lot of sense, since the PASCAL MT+ is designed to run on a variety of microcomputer systems. It and the ATARI version produce relocatable MICROSOFT compatible code.
Additional surprises come when looking at the system monitor and at descriptions of the runtime link modules. Both products have the same user interface and most of the PASCAL/MT+ link modules have counterparts in the ATARI version. There are differences. The PASCAL/MT+ documentation is more complete and the language is more powerful. It also requires 64K of RAM.
People at ATARI tell me that MT Microsystems, a division of Digital Research, the authors of PASCAL/MT+, wrote ATARI PASCAL. However, it was written for a super ATARI with 128K of RAM - a product which has not seen the light of day, and for the 815 disk drive which has been shelved. ATARI wasn’t able to get this super machine to work correctly so it and PASCAL were shelved. Also, the story is that ATARI wanted a UCSD PASCAL, but couldn’t get it, so they decided that nothing was better than what they had. Pressure from ATARI owners and from some people within the company caused ATARI to release the PASCAL. But, it was either APX or nothing.
I have learned of a few problems with the ATARI PASCAL and its usefulness with certain third source hardware and software. First, the compiler and linker modules will not work with the Corvus Hard Disk. Also, the RAM DISK is not compatible. You cannot compile a program using the PERCOM Disk Drive in the double density mode or using the modified DOS. However, programs can be compiled in single density and then transferred to double density for execution. The ATR 8000 will work with the PASCAL package exactly in the same way as the PERCOM drives. It is possible that the RAM PAGE by MAXXAM Dataware Corp. will be compatible because the several bytes of memory which it reserves for its use are F7C0-F7C3H, outside the PASCAL usage area.
ATARI PASCAL is an extremely well designed, powerful programming language for the ATARI Personal computer. Although it compiles programs much slower than does USCD PASCAL, it more closely follows the language standard. Execution speed is generally faster.
PASCAL is not getting the support it richly deserves from ATARI. With the limitations placed on it by release of only part of the system, by the total memory available to it, and with the lack of adequate documentation, ATARI PASCAL is greatly handicapped. Still, until people begin using it and start screaming for better documentation, ATARI will not provide any support, nor will the missing parts of the system be released. I for one, think that ATARI PASCAL has the potential to become one of the best, if not the best product available for the ATARI program developer, but only if ATARI’s top brass will wake up to its potential.
The ATARI Pascal Language System can be purchased from the ATARI Program
Exchange, P.O. Box 3705, Santa Clara, CA 95055. $49.95 Disk. Order number APX-
20102.