DRAPER PASCAL Version 2.1 Copyright 1989 by Norm Draper For the Atari 400, 800, XL, or XE series computers Disk Based Documentation This document contains the "Getting Started" section plus other sections from the actual Draper Pascal manual. It is designed to get you up and running and doing useful things with Draper Pascal in a very short time. It does not, however, contain a detailed description of all the Draper Pascal definitions or pretend to be a comprehensive tutorial or user's reference. Registered users will receive the actual Draper Pascal manual which does contain a complete description of all definitions plus other information. Details on registering are in the last section titled "Registration Form". Draper Pascal 2.1 Table of Contents Table of Contents The ShareWare Concept --------------------------------- 2 Features ---------------------------------------------- 3 Introduction ------------------------------------------ 5 What is Pascal? ------------------------------------- 5 What is Draper Pascal? ------------------------------ 5 About this manual ----------------------------------- 5 What is Draper Pascal made of? ---------------------- 5 About the DOS --------------------------------------- 6 Ramdisk support ------------------------------------- 6 Getting Started --------------------------------------- 7 The Main Menu ----------------------------------------- 14 1 - Run Program ------------------------------------- 15 2 - Disk Directory ---------------------------------- 15 3 - Compile Program --------------------------------- 15 4 - Edit a Program ---------------------------------- 15 5 - Exit to DOS ------------------------------------- 15 6 - List a file ------------------------------------- 16 7 - Trace on ---------------------------------------- 16 The Editor -------------------------------------------- 17 General Prompts ------------------------------------- 18 The Commands ---------------------------------------- 19 A - Add line(s) at end ---------------------------- 19 C - Change line(s) -------------------------------- 19 D - Delete line(s) -------------------------------- 19 E - Edit line(s) ---------------------------------- 20 F - Filer menu ------------------------------------ 20 A - Append file --------------------------------- 20 D - Directory list ------------------------------ 20 L - Load file ----------------------------------- 20 S - Save file ----------------------------------- 21 I - Insert before line ---------------------------- 21 L - List line(s) ---------------------------------- 21 M - Menu ------------------------------------------ 21 P - Print line(s) --------------------------------- 21 Q - Quit ------------------------------------------ 22 S - Scan line(s) ---------------------------------- 22 X - Exit to Compiler ------------------------------ 22 The Compiler ------------------------------------------ 23 The Supervisor ---------------------------------------- 26 Pascal Definitions ------------------------------------ 27 System Information ------------------------------------ 32 Reserved Word List ------------------------------------ 33 Operators --------------------------------------------- 34 Error Messages ---------------------------------------- 35 Registration Form ------------------------------------- 38 1 Draper Pascal 2.1 The Shareware Concept The Shareware Concept Draper Pascal is distributed on a Shareware basis. You may use Draper Pascal without charge for the purpose of evaluating it's suitability for your use. If you find that Draper Pascal is worth continuing to use, then you are requested to become a registered user and gain the additional benefits that go along with it. Simply complete the registration form and mail it in to us with the very reasonable payment of only $15.00. When you register your copy of Draper Pascal, you'll receive the latest version of the software if your registered version is not current, along with a comprehensive printed user manual. If you have received this copy from a Users' Group, "Software Library" or "SIG", and have paid a small fee (usually $3 to $10), you have NOT acquired the registered rights or continued right to use Draper Pascal. This fee was for the convenience of obtaining the diskette with Draper Pascal on it. The fee does NOT apply to the registration fee. You may freely copy Draper Pascal for distribution under the Shareware concept, without charge. You may NOT charge any fee for the Draper Pascal program or documentation without our written approval. You may NOT distribute Draper Pascal or it's documentation in connection with ANY commercial venture, product, publication or service unless you obtain the royalty-free license by registering. 2 Draper Pascal 2.1 Features Features * Draper Pascal is a complete package allowing the user to create, compile, and execute programs written in the Pascal language. * Many features from both UCSD and ISO standard Pascals plus many extensions, such as sound and graphics, to make use of the versatile Atari hardware. * Pascal structured programming features, including IF-THEN-ELSE, WHILE-DO, CASE-OF-ELSE, FOR-TO/DOWNTO-DO, and REPEAT-UNTIL are included. * FUNCTIONs and PROCEDUREs using local or global variables. Integer type variables can be passed directly. * Data types supported include: Character, String, Integer, Real, Boolean, Record, and File. One and two dimension arrays are also supported for all data types other than File and Record. * Only one disk drive and 48K RAM are required. Multiple, and double density, disk drives are supported. * Machine language subroutines may be loaded and called. * Program chaining is supported. * No limit on source program size. "Include" files are supported. * One-pass compiler generates pseudo code directly. * Maximum program pseudo code size is about 30K bytes. * Textual compiler error messages. * Execution debugging features include instruction trace and stack display. * Special options for error display and break key disable. * Single keystroke program execution repeat, exit to DOS, or exit to Main Menu program are featured. * Includes Editor program to create, modify, and print Pascal source files, or other text type files. * Includes Main Menu program (Pascal source included) for easy select of Compiler, Editor, or utility functions, such as directory or file listing. Main Menu program may be replaced with a user written program to create a turnkey operation. 3 Draper Pascal 2.1 Features * Ramdisk support. Details provided to registered users. * Works with most popular versions of DOS. * Easy to use. No linking required. Compile and execute immediately. * Royalty free license available to registered users. * Includes sample programs. * Comprehensive user manual provided to registered users. Complete examples and BASIC equivalents given for each reserved word. 4 Draper Pascal 2.1 Introduction Introduction Draper Software welcomes you to the world of Pascal for the Atari 400/800, XL, and XE series Computer systems. What is Pascal? Pascal is a high-level structured programming language developed by Niklaus Wirth in 1971. It is easy to understand and well suited for program development and maintenance. What is Draper Pascal? Draper Pascal is not a "standard" Pascal. It has a number of commands which are exactly like ISO and UCSD versions, some which are similar, and many "extensions" which bring out the true power of the Atari computer in an easy to use manner. It was designed to require only one disk drive for operation, but not be limited to only one. At this time, it has been shown to work with all hardware and software configurations where enough memory is provided. This implementation also has a number of commands which are familiar to Atari BASIC users, such as POKE, PEEK, SETCOLOR, NOTE, POINT, etc.. About this manual This manual is intended to familiarize you with all the features of Draper Pascal. It is not intended to teach you how to program in Pascal. However, if you already know Atari BASIC, then you can understand the Pascal statements more easily by referring to their BASIC equivalents shown after the definition of each Pascal reserved word in the complete manual provided to registered users. It is recommended that you read this manual completely to be familiarized with its features and restrictions. What is Draper Pascal made of? This implementation of Pascal is made up of three main components. They are the Supervisor (sometimes referred to as runtime routines), the Compiler, and the Editor. The Supervisor is a high performance machine language program which simulates a 16-bit pseudo computer. The Compiler translates Pascal source code into pseudo-code instructions to be executed by the Supervisor. The Editor is used to enter and modify Pascal source programs. It may also be used to edit data files, or BASIC programs which have been LISTed to a disk or tape. These components are explained in detail within this manual. For a description of the various files included on the supplied diskette, refer to the 'System Information' section. 5 Draper Pascal 2.1 Introduction About the DOS Draper Pascal can be used with most popular Disk Operating Systems. It has been tested with Atari DOS 2.5, SpartaDOS 3.2d, and MYDOS. You should format a diskette with DOS on it to contain the Draper Pascal system. Since the Draper Pascal Supervisor is named AUTORUN.SYS, it will execute immediately after the disk is booted. For XL and XE computers, you do not need to hold down the Option key while booting unless you are using SpartaDOS. If using SpartaDOS, you may want to rename AUTORUN.SYS to PASCAL.COM and create a STARTUP.BAT file containing the following two lines: BASIC OFF PASCAL This documentation file is not required to be on that same diskette. Ramdisk support Draper Pascal supports the use of the "Ramdisk" capability provided by using a DOS that supports a ramdisk like Atari DOS 2.5 or SpartaDOS 3.x with an Atari computer system having sufficient memory to support the ramdisk. While using this feature, the Editor takes less than two seconds to load and the Compiler takes less than three seconds. Details on setup and use of this feature are provided in the complete manual provided to registered users. 6 Draper Pascal 2.1 Getting Started Getting Started This section is intended to show by example how to use the Draper Pascal system. You will edit, compile, and run a sample program. Information displayed by the computer is shown in normal type while responses to be entered by you are shown underlined with dashes (---). To begin with, make sure you have 48K RAM installed and no cartridge in place. Boot the disk now by placing it in disk drive 1 and turning on the power to the Atari computer. After the Supervisor has finished loading, you will see a screen that looks like this: DRAPER PASCAL VERSION 2.1 1 - Run Program 2 - Disk Directory 3 - Compile Program 4 - Edit a Program 5 - Exit to DOS 6 - List a file 7 - Trace on Copyright 1989 by Norm Draper 4 Select the Editor - 7 Draper Pascal 2.1 Getting Started DRAPER SOFTWARE EDITOR A - Add line(s) at end C - Change line(s) D - Delete line(s) E - Edit a line F - Filer menu I - Insert before line L - List line(s) M - Menu P - Print line(s) Q - Quit S - Scan line(s) X - Exit to Compiler A,C,D,E,F,I,L,M,P,Q,S,X,?->F Select Filer menu - A - Append file D - Directory list L - Load file S - Save file L Load a file - Enter filename -> SAMPLE1 Enter the name of the file ------- to be loaded. The name of the last file edited, compiled, or run will be filled in by the Editor. You may have to overtype it with the name shown. A,C,D,E,F,I,L,M,P,Q,S,X,?->L List the file on the - screen Line from -> Just press RETURN for - 'Line from' and 'Line to'. Line to -> This will give a list of - the entire program in memory. 8 Draper Pascal 2.1 Getting Started 1:PROGRAM KALEIDOSCOPE; 2:VAR I,J,K,W,X:INTEGER; 3:BEGIN 4: MAXGRAPH(19); 5: GRAPHICS(19); 6: X:=0; 7: REPEAT 8: FOR W:=3 TO 50 DO 9: BEGIN 10: FOR I:=1 TO 10 DO 11: BEGIN 12: FOR J:=0 TO 10 DO 13: BEGIN 14: K:=I+J; 15: COLOR(J*3/(I+3)+I*W/12); 16: PLOT(I+8,K); 17: PLOT(K+8,I); 18: PLOT(32-I,24-K); 19: PLOT(32-K,24-I); 20: PLOT(K+8,24-I); 21: PLOT(32-I,K); 22: PLOT(I+8,24-K); 23: PLOT(32-K,I) 24: END 25: END 26: END 27: UNTIL X=99 (* UNENDING LOOP *) 28:END. A,C,D,E,F,I,L,M,P,Q,S,X,?->I Let's insert a comment - before line 15. Line -> 15 -- 15: (* MY FIRST EDIT *) Enter the data to be ------------------- inserted when prompted for 16: line 15. Just press RETURN - when prompted for line 16. This will terminate insert mode. A,C,D,E,F,I,L,M,P,Q,S,X,?->L List again to verify that - the change was made correctly. Line from -> - Line to -> - 1:PROGRAM KALEIDOSCOPE; 2:VAR I,J,K,W,X:INTEGER; 9 Draper Pascal 2.1 Getting Started 3:BEGIN 4: MAXGRAPH(19); 5: GRAPHICS(19); 6: X:=0; 7: REPEAT 8: FOR W:=3 TO 50 DO 9: BEGIN 10: FOR I:=1 TO 10 DO 11: BEGIN 12: FOR J:=0 TO 10 DO 13: BEGIN 14: K:=I+J; 15: (* MY FIRST EDIT *) 16: COLOR(J*3/(I+3)+I*W/12); 17: PLOT(I+8,K); 18: PLOT(K+8,I); 19: PLOT(32-I,24-K); 20: PLOT(32-K,24-I); 21: PLOT(K+8,24-I); 22: PLOT(32-I,K); 23: PLOT(I+8,24-K); 24: PLOT(32-K,I) 25: END 26: END 27: END 28: UNTIL X=99 (* UNENDING LOOP *) 29:END. A,C,D,E,F,I,L,M,P,Q,S,X,?->F Let's save the program - back to disk drive 1 under the same name. A - Append file D - Directory list L - Load file S - Save file S - Enter filename -> SAMPLE1 ------- A,C,D,E,F,I,L,M,P,Q,S,X,?->X Now let's exit directly to - the Compiler. 10 Draper Pascal 2.1 Getting Started Draper Software Pascal Compiler Version 2.1 Copyright 1989 by Norm Draper Enter Filename: SAMPLE1 Enter name of program to ------- be compiled. The name of the last program edited, compiled, or run will be filled in by the Compiler. Enter List Output Filespec Default is E: Just press RETURN at this - point to have the compile list directed to the screen. 0000 PROGRAM KALEIDOSCOPE; 0000 VAR I,J,K,W,X:INTEGER; 0003 BEGIN 0003 MAXGRAPH(19); 0017 GRAPHICS(19); 001B X:=0; 001E REPEAT 0022 FOR W:=3 TO 50 DO 002A BEGIN 0035 FOR I:=1 TO 10 DO 003D BEGIN 0048 FOR J:=0 TO 10 DO 004F BEGIN 005A K:=I+J; 0062 COLOR(J*3/(I+3)+I*W/12); 008A PLOT(I+8,K); 0098 PLOT(K+8,I); 00A6 PLOT(32-I,24-K); 00B8 PLOT(32-K,24-I); 00CA PLOT(K+8,24-I); 00DC PLOT(32-I,K); 00EA PLOT(I+8,24-K); 00FC PLOT(32-K,I) 010A END 010A END 010C END 11 Draper Pascal 2.1 Getting Started 011C UNTIL X=99 (* UNENDING LOOP *) 0142 END. 0147 ADDR NAME ---- -------- 0003 I 0004 J 0005 K 0006 W 0007 X 5 Compiler table entries used *** Program Execution Completed *** Press the SELECT key at Highest Stack Address Used = $AFF8 this point to take us to Repeat,Menu,Exit If you press the START key, your Pascal program will execute again from the beginning. If you press the SELECT key, control will be transfered to the main menu program (INIT.PCD). If you press the ESC key, you will exit to the DOS utility menu. You also have two other options at this point. They are both used for debugging purposes. If you press CTRL-S (the 'S' key while holding down the CTRL key), the stack values, at termination time, will be displayed. If you press CTRL-T, the internal trace table, if active, will be displayed. With either of these two debugging options, you will be asked where the display should be sent by the prompt 'WHERE? (FILESPEC)'. To see it on the screen, enter 'E:'. It also may be sent to printer or disk by following normal filespec naming conventions. If the display is sent to the screen, you may stop the scrolling by use of the space bar. Press the ESC key if you have seen enough and wish to return to the Supervisor termination prompt. Any other key causes scrolling to continue as normal. 26 Draper Pascal 2.1 Pascal Definitions Pascal Definitions Syntax is shown below for each of the Draper Pascal reserved words. The complete manual provided to registered users, however, contains COMPLETE definitions, COMPLETE sample programs demonstrating the use of each reserved word, as well as BASIC equivalents. ABS FUNCTION ABS(Number):INTEGER; ADDR FUNCTION ADDR(Var):INTEGER; AND ARCTAN FUNCTION ARCTAN(Var):REAL; ARRAY ARRAY[Number1] OF Type ARRAY[Number1,Number2] OF Type ASC FUNCTION ASC(Cvar):INTEGER; BEGIN BLOAD PROCEDURE BLOAD(Program); BOOLEAN CALL PROCEDURE CALL(Address); CASE CASE expr1 OF const1 : stmt1; const2 : stmt2; ... constn : stmtn END; CASE expr1 OF const1 : stmt1; const2 : stmt2; ... constn : stmtn ELSE stmtx END; CHAR CHR FUNCTION CHR(expr1):CHAR; CLOSE PROCEDURE CLOSE(File); COLOR PROCEDURE COLOR(Number); 27 Draper Pascal 2.1 Pascal Definitions CONCAT PROCEDURE CONCAT(Parm1,Parm2,...):STRING; CONST CONST name1=value1; name2=value2; ... COPY FUNCTION COPY(Source,Index,Length) : STRING; COS FUNCTION COS(Var):REAL; CVTREAL FUNCTION CVTREAL(Ivar):REAL DEG PROCEDURE DEG; DELETE PROCEDURE DELETE(Source,Index,Size); DIV DOS PROCEDURE DOS; DRAWTO PROCEDURE DRAWTO(X,Y); DUMPSTK PROCEDURE DUMPSTK; DVSTAT PROCEDURE DVSTAT(A,B,C,D); END EOF EOF(File); EOLN EOLN(File); EXIT PROCEDURE EXIT; EXP FUNCTION EXP(Var):REAL; EXP10 FUNCTION EXP10(Var):REAL; FALSE FILE FOR FOR var := expr1 TO expr2 DO statement; FOR var := expr1 DOWNTO expr2 DO statement; FUNCTION GOTOXY PROCEDURE GOTOXY(X,Y); GRAPHICS PROCEDURE GRAPHICS(Number); HIMEM PROCEDURE HIMEM(Value); 28 Draper Pascal 2.1 Pascal Definitions IF IF expr1 THEN stmt1; IF expr1 THEN stmt1 ELSE stmt2; INSERT PROCEDURE INSERT(Source,Destination,Index); INTEGER IORESULT FUNCTION IORESULT:INTEGER; KEYPRESS FUNCTION KEYPRESS:INTEGER; LENGTH FUNCTION LENGTH(svar):INTEGER; LN FUNCTION LN(Var):REAL; LOCATE FUNCTION LOCATE(X,Y):INTEGER; LOCK PROCEDURE LOCK(Filename); LOG FUNCTION LOG(Var):REAL; LPENH, LPENV FUNCTION LPENH:INTEGER; FUNCTION LPENV:INTEGER; MAXGRAPH PROCEDURE MAXGRAPH(Mode); MOD NOT NOTE PROCEDURE NOTE(Iocbno,Sector,Byte); ODD FUNCTION ODD(iexp); OPEN PROCEDURE OPEN(Fileno,Aux1,Aux2,Filename);; OPTIONKEY OPTIONS OPTIONS(Opt1,Opt2,...,Optn); OR ORD FUNCTION ORD(Realvar):INTEGER; PADDLE FUNCTION PADDLE(Number):INTEGER; PEEK FUNCTION PEEK(Address):INTEGER; PLOT PROCEDURE PLOT(X,Y); POINT PROCEDURE POINT(Iocbno,Sector,Byte); 29 Draper Pascal 2.1 Pascal Definitions POKE PROCEDURE POKE(Address,Value); POS FUNCTION POS(Pattern,Source):INTEGER; PROCEDURE PROCEDURE Name; PROCEDURE Name(Parm1,Parm2,...,Parmn); PROGRAM PROGRAM Name; PTRIG FUNCTION PTRIG(Number):INTEGER; PURGE PROCEDURE PURGE(Filespec); RAD READ, READLN PROCEDURE READ(File,Var1,Var2,...Varn); REAL RECORD REPEAT REPEAT Stmt1; ... ;Stmtn UNTIL Condition; RESET PROCEDURE RESET(File,Filespec); REWRITE PROCEDURE REWRITE(File,Filespec); RND FUNCTION RND(Iexp):INTEGER; SELECTKEY SETCOLOR PROCEDURE SETCOLOR(Register,Hue,Luminance); SHL Expr1 SHL Expr2 SHR Expr1 SHR Expr2 SIN FUNCTION SIN(Var):REAL; SOUND PROCEDURE SOUND(Voice,Pitch,Distortion,Volume); SQR FUNCTION SQR(Var):REAL; SQRT FUNCTION SQRT(Var):REAL; STARTKEY STATUS PROCEDURE STATUS(Iocbno,Ivar); STICK FUNCTION STICK(Number):INTEGER; 30 Draper Pascal 2.1 Pascal Definitions STR FUNCTION STR(Var):STRING; STRIG FUNCTION STRIG(Number):INTEGER; STRING TRACEOFF PROCEDURE TRACEOFF; TRACEON PROCEDURE TRACEON; PROCEDURE TRACEON('Number); TRUE UNLOCK PROCEDURE UNLOCK(Filespec); VAL FUNCTION VAL(Svar):INTEGER or REAL; VAR VAR Name1,Name2,...,Namen : Type; VAR Name1,Name2,...,Namen : ARRAY[Number] OF Type; WAIT PROCEDURE WAIT(Number); WHILE WHILE Condition DO Statement; WRITE WRITE(File,Expr1,Expr2,...); WRITE(File,Expr1:Fldwdth...); WRITE(File,Expr1:Fldwdth:Numdec...); WRITELN WRITELN(File,Expr1,Expr2,...); WRITELN(File,Expr1:Fldwdth...); WRITELN(File,Expr1:Fldwdth:Numdec...); XCTL PROCEDURE XCTL(Filespec); XIO PROCEDURE XIO(Number,File,Aux1,Aux2,Filespec); 31 Draper Pascal 2.1 System Information System Information The Supervisor uses zero page locations $A0 - $BF. Locations $80 - $9F are available for your use if desired. Various locations between $D4 and $FD are used by the floating point routines. Page six ($600 - $6FF) is available for your use and not used by the Pascal system. The Supervisor is loaded into memory by DOS at the address $1D7C. If this memory location is not available, then an error message is given, along with an explanation of the probable cause of the problem. The pseudo code program to be executed is loaded in memory immediately after the end of the Supervisor. The pseudo machine stack extends from the end of the pseudo code program to the MEMTOP position, just before screen memory. Filename Descriptions The files named below are included in this ARC file: AUTORUN.SYS Supervisor object code COMPILER.PCD Compiler pcode EDITOR.PCD Editor pcode INIT.PCD Main Menu pcode INIT.PAS Main Menu Pascal source EXPLNERR.PCD Error code explainor (used by Compiler) RSVDWRDS.TXT Reserved word list (used by Compiler) ERRORS.TXT Text for compile errors (used by EXPLNERR.PCD) RAMDISK1.DAT Ramdisk setup (See complete manual) RAMDISK2.DAT Ramdisk setup (See complete manual) RAMDISK3.DAT Ramdisk setup (See complete manual) NOTITLE.OBJ Used to suppress title (See complete manual) SAMPLE1.PAS Kaleidoscope sample program source SAMPLE2.PAS Roman numeral sample program source PASCAL.DOC This introduction manual 32 Draper Pascal 2.1 Reserved Word List Reserved Word List ABS DEG FUNCTION ODD READLN STRING ADDR DELETE GOTOXY OF REAL THEN AND DIV GRAPHICS OPEN RECORD TO ARCTAN DO HIMEM OPTIONKEY REPEAT TRACEOFF ARRAY DOS IF OPTIONS RESET TRACEON ASC DOWNTO INSERT OR REWRITE TRUE BEGIN DRAWTO INTEGER ORD RND UNLOCK BLOAD DUMPSTK IORESULT PADDLE SELECTKEY UNTIL BOOLEAN DVSTAT KEYPRESS PEEK SETCOLOR VAL CALL ELSE LENGTH PLOT SHL VAR CASE END LN POINT SHR WAIT CHAR EOF LOCATE POKE SIN WHILE CHR EOLN LOCK POS SOUND WRITE CLOSE EXIT LOG PROC SQR WRITELN COLOR EXP LPENH PROCEDURE SQRT XCTL CONCAT EXP10 LPENV PROGRAM STARTKEY XIO CONST FALSE MAXGRAPH PTRIG STATUS COPY FILE MOD PURGE STICK COS FOR NOT RAD STR CVTREAL FUNC NOTE READ STRIG 33 Draper Pascal 2.1 Operators Operators Operator Operation ________ _________ := assignment arithmetic: + addition - subtraction * multiplication / or DIV division MOD modulo (remainder after division) Relational: = equality <> inequality < less than > greater than <= less than or equal to >= greater than or equal to Logical: OR AND NOT 34 Draper Pascal 2.1 Error Messages Error Messages COMPILE TIME ERROR MESSAGES 01: Compiler table overflow (max 170) 02: Error Messages COMPILE TIME ERROR MESSAGES 01: Compiler table overflow (max 170) 02: Number expected 03: '=' expected 04: Identifier expected 05: Constant type identifier, number, or string constant expected 06: 'BEGIN' expected 07: Too many nesting levels 08: ':' expected 09: '.' expected 10: ';' expected 11: Undeclared identifier 12: Invalid type of identifier 13: ':=' expected 14: 'END' expected 15: ';', 'ELSE', or 'END' expected 16: 'THEN' expected 17: '#' expected 18: 'DO' expected 19: '#' or FILE type identifier expected 20: '[' expected 21: ']' expected 22: ')' expected 23: Illegal factor or identifier type 24: INCLUDE file nesting too deep 25: 26: 'OF' expected 27: Mismatched data types 28: 'TO' or 'DOWNTO' expected 29: 'UNTIL' expected 30: Range error 31: '(' expected 32: ',' expected 33: Literal too long or missing end quote (') 34: 'END' but no RECORD started 35: Incorrect number of parameters 36: INTEGER type identifier expected 37: STRING type identifier expected 38: REAL type identifier expected 39: CHAR type identifier expected 40: FILE type identifier expected 41: HEX type identifier expected 42: STRING constant expected 35 Draper Pascal 2.1 Error Messages EXECUTION TIME ERROR MESSAGES INDEX TOO HIGH This message occurs if an attempt is made to store a string array element into an occurance that is higher than defined for the variable. For example, if you tried to store the twentieth entry of an array that was only defined to hold ten occurances, you would get the message. This message only applies to string arrays since other array types are not checked for valid occurance numbers. UNABLE TO OPEN DEBUG IOCB (7) This message is issued if the list output device you specify in response to the 'WHERE? (FILESPEC)' prompt cannot be opened. The prompt is issued only for the debug features trace and stack display. CIO ERROR xxx FOR IOCB # y Some kind of Input-Output operation was performed which resulted in an abnormal return code from the Atari operating system. Refer to your BASIC or DOS manual for the meaning of the error number 'xxx'. 'y' is the IOCB number which the error occured on. Note that this message will not be printed if OPTIONS(0) is in effect. In this case it is your responsibility to check the return code by interrogating IORESULT after each I/O type instruction. AT OFFSET This message accompanies some other error message and refers to the offset within the pseudo code of the instruction that had the error. Refer to the offset shown on your compile listing to determine the Pascal instruction that experienced the error. 36 Draper Pascal 2.1 Error Messages STOPPED BY KEY This message indicates that execution of the program was stopped because the BREAK key was pressed. The offset of the instruction executing is shown in the 'AT OFFSET' message. Note that this message will not occur (and the program will not stop after BREAK is pressed) if OPTIONS(4) is in effect. INSUFFICIENT MEMORY This message indicates that an attempt was made to increase the value of the stack pointer to a value which would overlay screen memory or the trace buffer, if the trace was active. It may also be caused by manipulation of a record without sufficient room between the top of the stack and the top of available memory (MEMTOP) to temporarily hold it. INVALID OPCODE This message should not occur. It indicates that a pseudo instruction was encountered which is invalid. If you get this message, it means that your '.PCD' file has been corrupted somehow or an XCTL was made to a file that was not a pseudo code file. To correct, re-compile the program in question. It may also occur if you attempt to run a Draper Pascal program which was compiled under a previous release of this software. 37 Draper Pascal 2.1 Registration Form Registration Form When you register for a fee of only $15.00, you will receive a copy of the latest version of the Draper Pascal manual. Also, if a later version of the software is more current than the version you are registering, you will receive a diskette containing it. In addition to all relative information in this manual, the complete manual provided to registered users contains the following: * Complete Draper Pascal reserved word definitions * Complete Draper Pascal example programs demonstrating the use of each reserved word * BASIC equivalents for each reserved word, where applicable * Information on setup and use of a Ramdisk for Draper Pascal. After proper initialization, the Editor will take less than two seconds to load and the Compiler will take less than three seconds. Also, the default drive will be automatically set to the Ramdisk. * A royalty-free, non-exclusive license to allow you to distribute software developed using Draper Pascal * Complete Draper Pascal source listings for the Editor, Main Menu program, Ramdisk initialization program, and sample programs * Editor command summary * Information on how to suppress the title screen from being displayed * Trace format descriptions * Internal data format descriptions * Notes on printer usage with Draper Pascal * Technical support, by mail, at no charge If you purchased Draper Pascal directly from Draper Software in your own name, then your copy is already registered and you will recieve all the benefits of registration. You do not need to send in a registration form. If you received Draper Pascal some other way, you may register your copy by filling out the following form and mailing it to the listed address along with your check or money order. 38 Draper Pascal 2.1 Registration Form ================================================================ Draper Pascal 2.1 Registration Form Mail payment to: Draper Software 307 Forest Grove Drive Richardson, TX 75080-1939 Texas residents: Please add 8% tax. Note: Please allow three to five weeks for delivery. NAME _________________________________________ COMPANY (if any) ______________________________ ADDRESS ______________________________________ CITY/STATE ___________________________________ ZIP __________________ Where did you obtain this copy of Draper Pascal? _________________________________________________ _________________________________________________ _________________________________________________ ================================================================ 39