Home
Courtesy to all ATARI 8 Bit Users
Contents
1. Two ways of declaring MatxType are TYPE Row ARRAY 1 3 OF Real MatxType ARRAY 1 3 OF ROW Each element of MatxType is a row TYPE MatxType ARRAY 1 3 1 3 OF Real Subscripts are row number column number It is important to recognize which subscript refers to which dimension in such arrays The significance of this is illustrated by the following example in which a name i e a string is copied from a list TYPE String ARRAY 1 14 OF Char TableType ARRAY 1 100 OF String VAR Table TableType Name String Integer BEGIN FORI 721TO 14 DO Table 2 l Name I Name is written into the second row of table END One way to remember which subscript is first is to rewrite the declaration of the array type The first subscript type in the declaration below gives the first subscript S in Table S P the second subscript type gives the second subscript P TYPE TableType ARRAY 1 100 OF ARRAY 1 14 OF Char Scanned amp Re Edited by GoodByte in 2005 P 2006 41 Kyan PASCAL Version 1 0 Adding Two Multidimensional Arrays The following program adds two 3 X 3 matrices To find the sum of two matrices the corresponding elements those with identical row and column subscripts are added to form the elements of the sum matrix In this program the first matrix is entered in matrix form into the computer s memory The elements of the second matrix are then added one at a time to the
2. 5 BB1 is local AA1 15 3 END Procedure BEGIN Other A1 A3 A1 A3 are parameters IF A4 Y THEN Writeln A4 is global IF A1 15 3 THEN Writeln AA1 is a formal parameter END Program Alpha The statements in the body of a function or procedure manipulate a variety of variables and parameters Variables must be appropriately defined in order for the program to function properly 1 They can be declared in the global declaration section VAR A1 Real A3 A4 Char A variable that has been declared in the main program may be used in a function or procedure in a global manner The variable A4 is used in this way A4 Y Every time the procedure Other is called A4 is given the value Y and the statement in the main program A4 Y becomes true 2 They can be declared in the local declaration section VAR BB1 Integer A variable declared only in the procedure may be used The variable BB1 is used locally in the program BB1 5 Because BB1 was not declared in the main program if the statement BB1 5 were to appear in the main program it would make no sense and the compiler would generate an error message 3 They can be listed in the formal parameter section Other VAR AA1 Real AA3 Char Passing values through global variables is not recommended because it makes it difficult to keep track of incoming and outgoing data it is better to use actual and formal parameters The fo
3. INCLUDE How to Include Procedures and Functions from Other Files Kyan PASCAL facilitates the inclusion of a user defined library of procedures and functions during compilation time That is procedures and functions that are used in many programs may be declared each in a file of its own and easily included for use in many programs To include a function or procedure in a program use the following format i FileName A pound sign must appear in column 1 and i for include in column two The name of the file in which the declaration of the function or procedure is written follows For example the program HELLO was discussed in the Editor and Compiler chapter at the beginning of this book Written as a procedure the file Hello would be PROCEDURE Hello BEGIN Writeln Hello world END The file Hello may be be included in any program by using the format just discussed PROGRAM Main i Hello BEGIN Hello END Use the same name for the procedure or function as the file name Although it is possible to use different names such would be poor style Scanned amp Re Edited by GoodByte in 2005 P 2006 59 Kyan PASCAL Version 1 0 Including Files Other Applications Files that are included may be any text file not just procedures and functions It is important to try to visualize the insertion of the lines of the included file in place of the i FileName line THE ASSEMBLED PROGRAM AND ITS USES
4. In the above example the variables X1 X2 A and B provide this means These variables are examples of parameters Parameters may be variables constants and even other parameters When parameters are listed in parentheses after the procedure name in the declaration part of the program as are X1 and X2 they are part of the formal parameter list PROCEDURE ExChgVal VAR X1 X2 Real When parameters such as A and B appear in parentheses after the procedure name in the body of the program they are part of the actual parameter list ExChgVal A B Obviously the formal parameters X1 and X2 are variables of the type Real as are the actual parameters A and B Real numbers such as 4 3 and 6 7 may also have been used Actual and formal parameters must match Although the formal parameter list is written within parentheses it can be arranged to look more like the declaration section of a program The following are identical PROCEDURE Calculate A B Real VAR X Real Y Integer PROCEDURE Calculate A B Real VAR X Real Y Integer Variable and Value Parameters Notice that in the following formal parameter list only some of the parameters are preceded by VAR These are the variable parameters i e X1 X2 Y Variable parameters are used for both input to the procedure and output from the procedure A value parameter such as Z is formal parameter that is not preceded by a declaration such as VAR and can b
5. Re Edited by GoodByte in 2005 P 2006 11 Kyan PASCAL Version 1 0 m dit at Line N To edit a specific line use the command lt ESC gt G When the editor will prompts LINE NUMBER enter the number of the line which you wish to change For example if the compiler indicates that you have an error in line 3 enter 3 after the prompt LINE NUMBER 3 lt RETURN gt Remember if you add or delete lines before the one you are searching for then the line number of that line will be increased or decreased accordingly Including a File If you wish to include one file in another use the lt ESC gt command When you enter lt ESC gt the editor will prompt PATHNAME OF FILE TO INSERT BLANK TO QUIT FILE NAME OF FILE TO INSERT BLANK TO QUIT ATARI Version If you enter the pathname or file name of an existing file it will be inserted into the file you are editing ATARI users remember to include disk prefix Block Move Commands You may take any section of the program and save it as a block To mark a block 1 Move the cursor to the character or space that is at the beginning and type O Notice how the entire block is displayed in inverse video as you move the cursor 2 Go to the last character or space in the block Type O to mark the end of the block Then entire block will seem to disappear Actually it is saved in memory so that it can be moved to any location you choose Move the cursor to the position where you
6. THEN UNTIL Exchanged False If one of the elements was exchanged the test must be repeated until all elements are in order amp Exchanged remains False END Procedure ShOrder BEGIN Main Program Writeln Enter a list of numbers to be ordered Writeln After each number press the return key Writeln After last number enter 0 and press Writeln return to stop Subscript 0 REPEAT Subscript Subscript l Write Entry Number Subscript 3 is Readln BigArry Subscript UNTIL BigArry Subscript 0 0 Writeln Between which Entry Numbers should Writeln this list be ordered First Readin First Writeln Last Readin Last ShOrder First Last BigArry Writeln FOR Subscript First TO Last DO Writeln BigArry Subscript 7 3 Entry Number END PROGRAM Example2 In the following program the procedure ShOrder is modified to sort a two dimensional array The new procedure ShAlph is used to alphabetize a list of 6 words each of which has no more than 15 letters The procedure Exchg exchanges the position of two consecutive words in the array The two dimensional word array used in this program can be visualized as follows help program difficult easy should be The first subscript gives the horizontal position of a letter the second subscript gives the vertical position Thus the r in program would be subscripted 2 2 the d in should would be subscripted 6 5 e
7. AT 167 FILE LOCKED A8 168 COMMAND INVALID FOR DISK AQ 169 DIRECTORY FULL 64 FILES AA 170 FILE NOT FOUND AB 171 POINT INVALID Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 68 Kyan PASCAL Version 1 0 APPENDIX B QUICK GUIDE TO KYAN PASCAL Predefined Types Integer Boolean Real Char Pointer scalar values Predefined File Types Input Output Text Compound Types Reserved Words ARRAYT OF RECORD OF SET OF FILE OF Predefined Functions with Real or Integer Parameters Abs Real or Integer Arctan Real or Integer Cos Real or Integer Exp Real or Integer Ln Real or Integer Round Real Sin Real or Integer Sqr Real or Integer Sqrt Real or Integer Trunc Real Predefined Functions with Other Parameters PR PRON PROFF are non standard Ord scalar Pred scalar Succ scalar Chr Integer Odd Integer EOF file EOLN Text file PR slot number PRON PROFF Predefined File Procedures Chain amp Pathname are non standard Reset file optional pathname Rewrite file optional pathname Get file Put file Page file Read Readln Write Writeln Chain file Seek file element number Predefined Pointer Procedures New pointer Dispose pointer Predefined Non standard Pointer Procedures Assign pointer integer Predefined Constants True False Maxint Value Reserved for Unassigned Poi
8. Assembly Language Routines Kyan PASCAL accepts in line assembly code which enables the user to create many powerful routines and not be limited by the structure of standard PASCAL In line assembly routines do have one restriction though they must appear in the body of the program procedure or function i e they must appear between the BEGIN and END Some distinction must be made if the computer is to tell whether or not to interpret the lines that follow as assembly language or PASCAL Assembly language lines are simply left as they are during compilation If the lines that follow are to be in assembly language they should begin with the pound sign in column 1 and the letter a in column 2 End the assembly language lines with the pound sign in column 1 For example the procedure Delay is written with in line assembly language PROCEDURE Delay BEGIN a LDY 100 IMPORTANT WLOOP DEY LABELS MUST START IN COL 1 BNE WLOOP ONLY LABELS START IN COL 1 END It is important not to use labels in the assembly language routines that begin with the letter L The compiler uses the lables Lxxxxx xxxxx is a number and if you use lables that begin with L it is likely to fail Assembler Directives Assembler directives are also known as pseudo code because they appear in the assembly language listing of a program but are not part of the language of the microprocessor Instead they are part of the language of
9. However since the Kyan compiler and assembler are still on the floppy disk you must now enter a full pathname when you call them For example instead of typing PC to call the compiler assembler you must now type Kyan PASCAL PC RETURN CAUTION When you are through programming don t forget to copy back to disk the last version of your source and object code files ATARI RAM Disk ATARI XE computers include a 64K RAM disk Because this area of memory appears to the operating system as a disk drive it may be used to store the files you will be using during compilation and assembling The main reason to move these files from a floppy disk to RAM disk is that it will greatly increase the speed of compilation and assembling The DOS disk number is D8 Addition by GoodByte And even D9 or more with some DOSses It can be used as any other disk except it can contain only 64K bytes of data and data is lost on power down To move your source code from a disk file to the RAM disk use the COPY command You can also move the library file LIB Compiler and editor file ED to the RAM disk Remember to execute your program from the RAM disk there must be a copy of the LIB file in D8 When you are ready to compile your files will be on Device 8 Caution Don t forget to copy back to disk the last version of your program source and object files ProDOS Kyan PASCAL for Apple Il computers includes ProDOS a powerful operating system
10. InputVar DayDate 3 InputVar YearDate 3 END In Kyan PASCAL the WITH statement should be used with record variables such as InputVar in the program above It allows the fields of a record to be accessed without repeating the name of the record The WITH statement should be used with records with simple identifier names it should not be used with Arrays Variant Records In many applications of the record type there are two or more record that have most but not all their fields in common The variant recor is constructed for such cases For example an auto repair shop owner wishes to keep a record of eac repair in order to bill his customers later His customers are either individuals or companies In both cases he wants to know the labor ar parts used as well as invoice number and customer s name and address the case of companies he also wants to know their requisition number The two records are nearly the same TYPE Invoice RECORD InvoiceNum Labor Parts Integer CusName CusAddr String SocSec String END RECORD TYPE Invoice2 RECORD InvoiceNum Labor Parts Integer CusName CusAddr String ReqNum Integer END RECORD For convenience these may be combined into a single variant record named Invoice by use of the CASE statement TYPE Invoice RECORD InvoiceNum Labor Parts Integer CusName CusAddr String CASE Custmr Integer OF 1 ReqNum Integer 2 SocSec String END RECO
11. Number 1 Scanned amp Re Edited by GoodByte in 2005 P 2006 32 Kyan PASCAL Version 1 0 The Functions Ord Pred Succ and Chr Scalar type variables are declared in a particular order or scale Often the order of these items is of significance and can be used in a program This is made possible by the functions Ord order and Pred preceding and Succ succeeding One example is the days of the week TYPE DaysWeek Sun Mon Tue Wed Thur Fri Sat The items in the list are called the values Each item is an identifier i e it must start with a letter followed only by letters or numbers The first value in the type Days is Sun The seventh value is Sat Thus both these statements are true Ord Sun 0 Ord Sat 6 The day succeeding Sun is Mon and the day preceding Fri is Thur Both these statements are true Succ Sun Mon Pred Fri Thur If two scalar types are declared some of the items in the two lists will have the same ordinal value For example if the days of the week and the months of the year are declared both Tue and Mar will have the ordinal value 2 There is an ASCII character corresponding to every Integer from to 128 The function Chr Character gives the ASCII character corresponding to an Integer specified in parentheses e g Chr 2 This Integer may be the ordinal value of a scalar element However Chr is not the inverse function of Ord Chr 2 STX STX is a nonprintable A
12. PROCEDURE CheckPoint Vector Z Real Program Example1 This program is used to order a small subset of a list of up to 1 50 numbers Beyond six numbers in the subset the procedure becomes inefficient The ordering of the subset is accomplished by the procedure ShOrder which works as follows pairs of elements in the subset are compared starting with the first and second elements If the first element is greater than the second they are exchanged This is repeated for the second and third elements etc As long as any exchanges have taken place anywhere in the list this procedure will repeat again for the entire list When no exchanges have taken place the list is in order PROGRAM Example 1 Input Output CONST MaxNumbs 150 TYPE NumbArray ARRAY 1 MaxNumbs OF Real VAR First Last Subscript Integer BigArry NumbArray PROCEDURE Exchg VAR A B Real VAR C Real Scanned amp Re Edited by GoodByte in 2005 P 2006 42 Kyan PASCAL Version 1 0 BEGIN Procedure Exchg C A A B B C END Procedure Exchg PROCEDURE ShOrder First Last Integer VAR SubArry NumbArray Orders a list of numbers subset of full list VAR Numbindex Integer Exchanged Boolean BEGIN REPEAT Exchanged False FOR Numbindex First TO Last 1 DO IF SubArry NumbIndex gt SubArry NumbIndex 1 THEN BEGIN Exchange if out of order Exchg SubArry Numbindex SubArry Numbindex 1 Exchanged True END Exchg
13. Typeless file SOS and ProDOS 01 Bad block file S02 PASCAL code tile 03 PASCAL text tile 04 ASCII text tile SOS and ProDOS 05 PASCAL data file 06 General binary file SOS and ProDOS 07 Font tile 08 Graphics screen file 09 Business BASIC program file 0A Business BASIC data file 0B Word Processor file SOC SOS system tile 0D 0E SOS reserved 0F Directory file SOS and ProDOS 10 RPS data file 11 RPS index tile 12 BF SOS reserved CO EF ProDOS reserved FO ProDOS added command file F1 F8 ProDOS user defined tiles 1 8 F9 ProDOS reserved FA Integer BASIC program file FB Integer BASIC variable file FC Applesoft program file FD Applesoft variables file FE Relocatable code file EDASM FF ProDOS system tile Apple III SOS only not used by ProDOS Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 ProDOS ERROR MESSAGES 00 01 04 25 27 28 2B 2E 40 42 43 44 45 46 47 48 49 SAA 4B 4C 4D 4E 50 51 52 53 55 56 57 5A No error Bad system call number Bad system call parameter count Interrupt table full I O error No device connected Disk write protected Disk switched Invalid pathname Maximum number of files open invalid reference number Directory not found Volume not found File not found Duplicate filename Volume full Volume directory full Incompatible file form
14. Year Integer END RECORD FailType RECORD SerialNum Integer Gear Integer FailDate DateType StartDate DateType END RECORD VAR Failure ARRAY 1 FailCount OF FailType FUNCTION SurviveTime VAR FailDate StartDate DateType Integer BEGIN SurviveTime FailDate Day StartDate Day 30 FailDate Month StartDate Month 365 FailDate Year StartDate Year END FUNCTION BEGIN Writeln The first gearbox to fail lasted SurviveTime Failure 1 FailDate Failure 1 StartDate Writeln It was serial Failure I SerialNum 9 END PROGRAM Scanned amp Re Edited by GoodByte in 2005 P 2006 48 Kyan PASCAL Version 1 0 The first Writeln statement specifies two fields FailDate and StartDate of the first record of the array Failure SurviveTime Failure 1 FailDate Failure 1 StartDate This statement calls the function SurviveTime which then calculates the time to failure of the first machine ITH Some programs that use records can be made more compact by using the WITH statement to access the fields of the array PROGRAM Entry TYPE InputType RECORD Money Real Name ARRAY 1 15 OF Char MonDate DayDate YearDate Integer END RECORD VAR InputVar InputType BEGIN WITH InputVar DO BEGIN Money 25 50 Name Full Moon Inc MonDate 4 DayDate 30 YearDate 1952 END WITH Writeln InputVar Name gave InputVar Money 6 2 on InputVar MonDate 3
15. be combined in three ways Test Prime Odd Union 1 2 3 4 5 7 9 Test Prime Odd Intersection 1 3 5 7 Test Prime Odd Difference 2 In addition to the three basic set operators there are seven set relational operators These result in either a True or a False output and are exactly parallel to the arithmetic relational operators previously discussed Equality Seti Set2 Inequality Seti lt gt Set2 Subset Set1 lt Set2 Superset Seti gt Set2 SetMembership Seti IN Set2 The set membership operator is True if the element is a member of SETT It is not necessary to declare a set type to use sets The following program uses the set of failing grades F NP PROGRAM Finals Input Output CONST ClassSize 30 TYPE GradeType A B C D F P NP I StuGrade RECORD StudentID Integer Grade GradeType END RECORD VAR ClassGrades ARRAY 1 ClassSize OF StuGrade N Integer LettGra ARRAY 1 2 OF CHAR BEGIN FOR N 1 TO ClassSize DO BEGIN Write Student ClassGrades N StudentlD Enter final grade Readin LettGra IF LettGra F THEN ClassGrades N Grade F IF LettGra NP THEN ClassGrades N Grade NP IF ClassGrades N Grade IN F NP THEN Writeln Too Bad ELSE Writeln Good END FOR END Scanned amp Re Edited by GoodByte in 2005 P 2006 51 Kyan PASCAL Version 1 0 Using Sets to Examine the Members of an Array In the program below the se
16. computer program should cease to be rightful Any exact copies prepared in accordance with the provision of this section may be leased sold or otherwise transferred along with the copy from which such copies were prepared only as part of the lease sale or other transfer of all rights in the program Adaptations so prepared may be transferred only with authorization of the copyright owner SUBJECT TO THOSE LIMITATIONS KYAN SOFTWARE GRANTS THE PURCHASER OF THIS PRODUCT A LICENSE TO USE THIS SOFTWARE UNDER THE TERMS DESCRIBED IN THE FOLLOWING LICENSE AGREEMENT Scanned amp Re Edited by GoodByte in 2005 P 2006 3 PREFACE cdita aioe eh ve cesta inna ina ee 7 INTRODUCTION essence inca ette et xo tto y tbe RR EE RN ERR Ee RE CERE eek Er gie 8 EDITOR AND COMPILER INSTRUCTIONS essen 9 Creating a File an Example 2 e dee decided e dece 9 End onEditirig 66 sacs ero arene a a a aa LM oo A matre 10 Files Pathnames and File Names d 10 Cursor Movement n 10 Delete Commands 11 Search For and Search Replace 11 Edit at Line N ssss 412 Including a File 2 deae code epe cae dece repe de epe a cce de epe eo re p e 12 Block Move Commands iere in tert ko n terree Pn de oh nh epe ERR NER e EHE ERR NER ER ERES 12 Editing HELLO an Example 2212 Compiling a File P e Apple Compiler O
17. file to redirect Output BEGIN Writeln Enter hours worked and rate of pay Readin Hours Rate Labor Hours Rate Total Labor Material PR 1 redirect Output to Apple slot 1 Writeln Labor Labor 8 3 Total Total 8 3 PR 0 redirect Output back to Apple CRT screen END The last three statements would be written differently if the computer is an ATARI PRON redirect Output to ATARI printer Writeln Labor Labor 8 3 Total Total 8 3 PROFF redirect Output back to ATARI CRT screen Readin When data is read from the keyboard using Readln more than one variable may be input as in Readin Hours Rate Data entered at the keyboard must include spaces or RETURN to distinguish the variables In the examples below Hours would get the value 10000 and Rate would be set to 14 20 Example A 10000 14 20 RETURN Example B 10000 RETURN 14 20 RETURN CONST Use of constants CONST makes programs easier to read and maintain Suppose next year the cost of materials rises to 330 000 Also suppose that we had not used the constant Material and instead had said the total cost was Total Labor 325 00 In order to change the materials cost we would have to reanalyze the program because in many programs a constant appears more than once We would have to find every occurrence of 325 00 Then we would have to make sure each time that it wasn t some ot
18. gt M equivalent to right bracket List of Editor Commands Note is equivalent to CONTROL Key ED enter the editor program S move the cursor back 1 space left D move the cursor forward space right E move the cursor back 1 line up X move the cursor forward line down A move the cursor back 1 word left E move the cursor forward 1 word right R move the cursor back 20 lines up C move the cursor forward 20 lines down V move the cursor to the bottom of the file AT move the cursor to the top of the file Q delete the letter to the left of the cursor G delete the letter or keystroke coincident to the cursor AY delete the line in which the cursor is positioned AW find string backward direction AZ find string forward direction O mark cut block P paste block N type left bracket Apple II only lt SHIFT gt M type right bracket Apple II only Special Editor Functions Mode m n O V enter leave special functions mode remain in editing with save exit from editing without save exit from editing with save designate string to be found designate replacement string set search replace options include file set pathname or file name if you have an ATARI go to line get help menu T0U OUP xoo Scanned amp Re Edited by GoodByte in 2005 P 2006 18 List of Compiler Assembler Commands PC Enter the compiler and assembler programs Assembler Compi
19. is possible to use a simple assignment to transfer the value of one to the other VAR DateRecl DateRec2 DateType BEGIN DateRecl1 DateRec2 This copies all the fields of DateRec2 into DateRec1 without having to list them In this case the Boolean comparison below would have the value True DateRec2 DateRec1 Scanned amp Re Edited by GoodByte in 2005 P 2006 46 Program Absolute Kyan PASCAL Version 1 0 Using data in the form of a record it is easy to write a program to calculate the absolute value of a complex number The formula for the absolute value is the same as that for the distance from a point to the origin PROGRAM Absolute Input Output Finds the absolute value of a complex number TYPE ComplexType RECORD RealPart Real ImagPart Real END ComplexType Record VAR ComplexNum ComplexType Abs Real BEGIN WITH ComplexNum DO BEGIN Write The real part Readln RealPart Write The imaginary part ReadIn ImagPart Abs Sqrt Sqr RealPart Sqr ImagPart Writeln Writeln Absolute Value Abs 10 2 END With END Program ElapsedTime In the program that follows the approximate time elapsed since January 1 1980 is computed All months are assumed to be of equal length 30 days and all years are 365 days long PROGRAM ElapsedTime Input Output Since Starting Time CONST StartDay 1 StartMonth 1 StartYear 1980 TYPE DateType REC
20. language routine was inserted into a PASCAL program to cause a delay every time the program came to the place in which it was inserted It does not modify any of the values of the variables in the PASCAL program In order to use assembly code to modify PASCAL variables the location of these variables must be known These locations are never absolute but always relative to a pointer maintained by the compiler called LOCAL The location of PASCAL variables may also be calculated relative to the stack pointer SP In the example that follows in line assembly code puts the value of the PASCAL variable Cee into the A accumulator of the microprocessor PROCEDURE Zen Alt Bee Cee Integer VAR m n Integer BEGIN a LDY 7 LDA SP Y END The first line loads the Y accumulator with 7 the distance that Cee is from SP The first variable declared is the first one on the stack and the one furthest from SP The offset from SP is calculated by adding 3 to the space taken by variables following the declaration of Cee Offset of Cee above SP 3 bytes Last in Stack bytes Since 2 bytes are required for each integer variable and both m and n are pushed on the stack after Cee the total offset is 7 3 2 2 The second line of the assembly code loads the accumulator A with the value in memory that is stored at where SP is pointing plus 7 SP top of stack n The stack grows toward lower memory m Bee Cee Local Alt botto
21. letters when they appear in programs in this manual As a general rule do not use any of the vocabulary of PASCAL for the name of anything within the program In addition to reserved words this includes predefined words such as Integer Read and others whose meaning is consistent from one implementation of PASCAL to another In this manual all predefined words will be written with only the starting letter capitalized except EOF and EOLN which are acronyms for end of file and end of line Of course comments which appear between parentheses and asterisks like this and literals which appear between parentheses and single quotes like this are not restricted Declaration and Program Body Every PASCAL program has two main parts the declaration and the program body The above program begins with a statement of the name of the program Some programs also include lists of constants and variables The naming of the program constants and variables constitutes the declaration part of the program After the declaration is the portion of the program where computations input and output can occur It is denoted by the word BEGIN and is called the program body The word END followed by a period lets the computer know where the program body ends The indentation of statements in Ego and other programs in this manual is intended to help clarify the program structure it is not recognized by the compiler Analysis of Ego The first stat
22. main program Demo 1a Declare program name 1b If there were program constants or types to declare they would be in this section ic Declare program variables A B 2 Declare procedure ExchgVal 2a Declare procedure name and parameters 2b If there were local constants or types to declare they would be in this section 2c Declare procedure local variable Y 2d Procedure body the executable statements are declared here but not executed 3 Main program body 3a Enter two numbers from keyboard A B 3b Exchange A and B by executing procedure ExchgVal 3c Output numbers A and B to the screen PROGRAM Demo Input Output Shows result of procedure ExchgVal VAR A B Real PROCEDURE ExchgVal VAR X1 X2 Real Values of X1 and X2 are exchanged VAR Y Real BEGIN Y X1 X1 X2 X2 Y END Procedure ExchgVal BEGIN Demo Write Enter two numbers Readin A B ExchgVal A B Writeln Writeln Now first A 7 2 and second B 7 2 END Scanned amp Re Edited by GoodByte in 2005 P 2006 34 Kyan PASCAL Version 1 0 Suppose the values to be exchanged are 5 8 and 11 15 The screen will show the following user entries are underlined Enter two numbers 5 8 11 15 Now first 11 15 and second 5 8 Parameter Lists Actual and Formal Because a procedure is a program within a program there must be a way of getting data into and out of the procedure
23. that have been discussed so far are limited to single values Integer and Real both imply a single number Char implies a single character and Boolean is either the value True or False However some kinds of data are not conveniently divided into components This is the case with words or strings which were discussed previously A string such as butter is actually a collection of characters This is the identifying characteristic of an array an array is always a collection of one of the simpler data types A vector such as the direction of a spaceship in flight is another example of an array The clearest and most correct way to handle such data is to put parentheses around the components X Y Z to clarify that they represent a single direction Arrays are declared in PASCAL as follows Array Type ARRAY Subscript Type OF Element Type 1 Array types are always user defined 2 The subscript type specifies the size of the array and assigns a number to each of the elements of the array See examples below 3 The element type may be any standard or user defined type All the elements in an array must be the same type The amount of memory space allocated for an array is determined by the subscript type If an array of characters is not filled because the input is smaller than the array size the remaining spaces are set to blanks However unused array spaces of other types are not determined Example Program PROGRAM Graph
24. the assembler KyanPASCAL has six assembler directives They must not start in column 1 because they would be mistaken for labels ORG origin EQU equate DB define byte DW define word gt least significant byte lt most significant byte ORG is used to tell the assembler that the following code is to start at the specified memory location When a label is given a value using the directive EQU that value will be substituted for the label throughout the program when the program is converted to object code In other words EQU defines constants DB and DW are used in building tables and strings that reside in certain parts of the assembly code When the program executes the values placed by these directives may be read by setting the index register to the address in program where the DB or DW statements are then loading the value at the index register When the gt and lt operators afe used with a label or immediate value in a program either the least significant byte or most significant byte is extracted For example the following equalities are true gt FFO1 0001 lt FFO1 00FF Parentheses are not allowed in assembler directives Expressions are evaluated from left to right There is no precedence of one directive over another Scanned amp Re Edited by GoodByte in 2005 P 2006 60 Kyan PASCAL Version 1 0 How to Use Assembly Routines to Access PASCAL Variables In the previous example Delay an assembly
25. the file K is the second and L is the third the following statements get the first three elements J List1 Get List1 K List1 Get List1 L List1 Usually the number of elements in a file is not known therefore to get all the data from a file the file should be read until the end of file marker EOF is found The end of file marker is always at the end of the file furthest from the first element The following statements write all the elements of the file Reset List1 WHILE NOT EOF List1 DO BEGIN J List1 Writeln J Get List1 END Sometimes a specific element in a file is sought The following statements find and write all the elements of the file equal to 77 List1 is the file buffer variable Reset List1 WHILE NOT EOF List1 DO BEGIN IF 77 List1 THEN Writeln List1 4 Get List1 END Text Files Because files of characters are so frequently used PASCAL has a standard type of file called Text that is predefined as Text FILE OF Char To create a file of text include the file name after the program name and also declare it as a variable PROGRAM WordProc TextFileName VAR TextFileName Text Although the input and output of a text file may be handled in the same way as the input and output of other types of files the following simplifications may be used Read TextFileName Identifier can take the place of Identifier z TextFileName Get TextFileName Also Wri
26. variables types etc in a PASCAL program are not the same as ProDOS pathnames or DOS 2 5 file names To change the name of the file you are working with type lt ESC gt P and computer will prompt PATHNAME FILE NAME if your computer is an ATARI Enter the new name e g Account of the file followed by a carriage return and lt ESC gt PATHNAME Account RETURN lt ESC gt FILE NAME D1 Account RETURN lt ESC gt ATARI Version It should be noted that the new file name will be entered immediately after lt RETURN gt whether or not the final lt ESC gt is typed The final lt ESC gt causes the computer to leave the special functions mode Cursor Movement Kyan PASCAL includes an easily learned full screen insert mode editor Anywhere you move the cursor a letter a number a space or even a new line break may be added This greatly facilitates editing your program All cursor movement commands are a combination of the CNTL key Note is a shorthand notation for CNTL so CNTL S is the same as S and another key The combinations are S move the cursor back 1 space left D move the cursor forward 1 space right AE move the cursor back 1 line up AX move the cursor forward 1 line down A move the cursor back 1 word left E move the cursor forward 1 word right R move the cursor back 20 lines up C move the cursor forward 20 line down T move the cursor to the top of the file V move the cu
27. 0 Operations on Sets esssssssss san oll Using Sets to Examine the Members of an Array 2 ccccceeeeseeeeeeeeeeeneeeeeneeeteaes 52 FILES ee oe teen Cotati Md 52 File Declaration 22 52 Writing to a File 53 Program Store List 559 Reading a File nt DS Text Files es 54 Files OF Records cec ce e xai de cree ek ou P LR ORR nV EHE SUR du e pa 55 PRAMGOMM FICS ERRAT EE 55 POINTER VARIABLES AND LINKED LISTS essen 56 Pointers and NOd6S i e neo he Re m Gand e dei et 56 NOW shes eae eg eee T vec bie Y IRL canteen d RU RE L e ead 57 Peek and Poke 57 Linked Lists and NIL w 58 DiSpOoSse ton Soke e Ira a HD elus ented n e de vA t te ely aaa ie ds 59 INGO DE CL D 59 How to Include Procedures and Functions from other Files ssss 59 Including Files Other Applications ssssseeeeneenen 60 THE ASSEMBLED PROGRAM AND ITS USES Assembly Language Routines Assembler Directives cccccccecesceeeeceeeeeeeeeeneeeeeeneeeeeaeeeseaeeeeeaeeeseaeeeeeaee m How to Use Assembly Language Routines to Modify PASCAL Variables 61 Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 Predefined Labels ts die ced ta er diee der er ere re paR a aE eani 62 Passing Parameters through Chain ccccceeeeeceeeeeeeeseneeeeeeaeees
28. 1 FILE OF Integer Here the elements of the file List are Integers A file may also contain characters or Real numbers Arrays sets and records made of Integers characters or Real numbers are also allowed Scanned amp Re Edited by GoodByte in 2005 P 2006 52 Kyan PASCAL Version 1 0 Writing to a File In order to store data in a file we first must open the file for writing This is done by using the Rewrite statement which also clears the file of any data previously stored in it Rewrite List1 Because Apple ProDOS uses the pathname to call files Kyan PASCAL has been extended to include an optional pathname as well as the PASCAL file identifier in Rewrite The pathname may be a string constant Rewrite List1 Dirl Lst Rewrite List1 D1 Lst for ATARI or the pathname may be an array of characters Rewrite List1 a To actually put data into the opened file two more statements are necessary List1 J Put List1 List1 which is identical to List11 is called a file buffer variable Before the value of an element can be Put into a file it must be temporarily assiged to a file buffer variable The first statement above assigns the value J to the file buffer variable The Put statement is used to write the value J from the file buffer into the file The first value entered goes to the first element position The next value entered goes to the second element position and so on It is impossible to
29. 1 Type ESC 2 Prompt Appears PATHNAME File Name for ATARI 3 Type TRIAL RETURN D1 TRIAL for ATARI Notice that the string of six X from TRIAL has been added WRITELN Hello XXXXXXworld You have now entered two changes in the program HELLO and are ready save the new version 4 Type ESC X Try to compile and assemble the edited version of HELLO PC gt HELLO lt RETURN gt PC gt D1 HELLO RETURN if you have an ATARI computer Because of one of the changes you made there will be an error The error listing will appear on the screen 0001 WRITELN Hello XXXXXXworld 1 OR END EXPECTED The line with the error is displayed with its line number The 1 underneath the line indicates where the error occurred A description of the error is also displayed Sometimes a single error in a program such as a missing semicolon after a VAR declaration will generate multiple errors following it There may be too many errors to display at one time on the screen To see them all send the error listing to the printer Go back to the edit mode and correct the error you introduced Try compilation again Now there should be no error message However a program with no errors on compilation may still be faulty For example programming the area of a circle to be r r instead of 3 14 r r is an error the compiler will not detect To Halt a Program While It Is Running If a program is in an endless loop or if you si
30. 2005 P 2006 30 Kyan PASCAL Version 1 0 0U Number 0 1 Number 1 2 Number 2 9 Number 3 4 Number 4 5 Number 5 6 Number 6 7 Number 7 8 Number 8 9 Number 9 A Number 10 B Number 11 C Number 12 D Number 13 E Number 14 F Number 15 END CASE OldNumber Number OldNumber 16 The more significant digit OldNumber is a power of 16 times greater than the next digit Number Writeln Is there another digit Write after this one Yes No ReadIn Signal IF Signal Y OR Signal y THEN Answer Yes ELSE Answer No IF Answer Yes THEN BEGIN Continue True Write Enter the next digit Readln Digit END IF Answer true ELSE Continue FALSE UNTIL NOT Continue Writeln Writeln Writeln The decimal equivalent is OldNumber 6 END Algorithm 1 Initialize OldNumber 0 2 Input the most significant Digit 3 REPEAT 3a Convert Digit to decimal Number 3b OldNumber Number OldNumber 16 3 c Is there another digit 3ca IF NOT Continue False input the next most significant digit UNTIL NOT Continue True Output base ten number OldNumber REPEAT UNTIL The REPEAT UNTIL loop is very much like the WHILE loop discussed earlier The statements in the loop are repeated until the specified condition becomes True The WHILE loop continues until the co
31. 67 Maxint 32767 Real Range of 1 00E 99 to 1 00E 99 Precision of 13 decimal digits Char Character Printable and nonprintable ASCII characters corresponding to ordinal values 0 to 256 Pointer Represented by 16 bit Integer SET Maximum number of members is 256 Requirements Disk Drive amp 64K memory Maximum Program Size 36K Apple II 29K ATARI Significant Identifier Length 8 characters Apple Memory Map User Program amp Data POANAOARWD Librar ii mmoou a Library is located from 800 to 2000 and B000 to BF00 T Stack starts at AEFF and grows toward low memory User program is loaded starting at 2000 However when graphics procedures are included user program should be loaded starting at 4000 Scanned amp Re Edited by GoodByte in 2005 P 2006 71 Kyan PASCAL Version 1 0 ATARI Memory Map 0 1 FMS E 2 User Program amp Data 3 HEAP 4 l 5 29K 6 7 8 1 9 Stack ii A Library ENS B C D E OS F i File Management System is located from 800 to 2000 and 9400 to BF00 i Stack starts at 93FF and grows toward low memory bg User program is loaded starting at 2000 However when graphics procedures are included user program should be reloaded upward to leave room for graphics starting at 2000 The HEAP starts at the end of the program and grows upward IO The library is located from 9400 to BBFF The screen area and display list are loc
32. C END Phase Declaration BEGIN C A A B B CsLaw C 2 A B Cos Theta END CsLaw Declaration BEGIN END PhaseDis Notice how the scope of a variable is determined the moment it is declared and remains in effect until the end of the procedure function or main program in which it was declared The scope of the variables can be represented more clearly by Showing only the declaration sections of the program functions and procedures program PhaseDis variables declared Height1 Width1 Angle1 Angle2 Dist function CsLaw variables declared formal parameters A B Theta local variables C procedure Phase1 variables declared formal parameters H1 W1 Ang1 AngX D local variables E In this example C is global to Phase1 The new value for C is passed to Phase1 as soon as CsLaw is executed Use of global variables in this way is not recommended Values should be passed to and from functions and procedures only through parameters Compare the following version of the program PhaseDis to the previous one The procedure Phase1 is no longer nested within CsLaw C is no longer global relative to Phase1 because CsLaw no longer has greater scope than Phase1 The statement using C in Phase1 had to be dropped because it would no longer be syntactically correct Scanned amp Re Edited by GoodByte in 2005 P 2006 38 Kyan PASCAL Version 1 0 It is possible and often desirable in a long progra
33. Courtesy to all ATARI 8 Bit Users PROGRAMMING LANGUAGE Tutorial Manual Copyright 1985 by Kyan Software 1850 Union Street Suite 183 San Francisco CA 94123 Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 Kyan Dear Friend Thank you for purchasing Kyan PASCAL We believe you will find it to be the most powerful and complete PASCAL implementation available for the Apple Il and ATARI family of computers This manual is intended to help you learn the PASCAL language and master the many features and functions of your Kyan PASCAL compiler Kyan PASCAL includes all the sophisticated PASCAL functions needed to develop professional quality programs The built in assembler linking chaining functions and other advanced features enable you to write very large PASCAL pro grams and run them at the maximum speed possible on the Apple ATARI 6502 microprocessor We believe you will find that KyanPASCAL can satisfy all of your programming needs Kyan PASCAL is not copy protected and we recommend that you make and use back up copies of the software We also allow you to copy and use Kyan s PASCAL library in any software you develop with no fee or separate license agreement The only requirement is that you acknowledge Kyan s copyright on this software on your magnetic media and in your documentation This is all explained in more detail by the enclosed license agreement Thanks again for purchasing this soft
34. EGIN BEGIN If program Alpha calls program Beta through file the values of A B and C are passed to D E and F Y does not match and a value is not passed Although L matches P no value is passed because it follows the mismatch of the parameters Y and X How to Chain Source Code Files Sometimes a program is broken into sections that are to be loaded from the floppy disk when and where they are needed This strategy is called chaining To chain files together PROGRAM MyExample BEGIN Chain NextOne D1 NextOne for ATARI END The next statement executed will be the first statement in NextOne GRAPHICS Apple Il Only High Resolution Graphics Before the graphics functions can be used the following assembly language code must be used to relocate the PASCAL program a ORG 4000 Scanned amp Re Edited by GoodByte in 2005 P 2006 62 Kyan PASCAL Version 1 0 PROGRAM MyProgram start of PASCAL program body The above origin statement must be included before the body of the PASCAL program whenever high resolution graphics are used Normally the origin of the PASCAL program is 2000 Once the program has been moved the graphics procedures can be included But this is not done automatically The following pre compilation statement must be written in the declaration part of the program and in particular it must be in the section for the declaration of functions and procedures a ORG 4000 P
35. Enter the pathname or file name if you have an ATARI computer of the program with the object code extension after compilation and assembly gt FileName O gt D1 FileName O for ATARI A system file is also a stand alone file in that a compiled and assembled PASCAL program can be run without using the Kyan PASCAL disk There is one important precaution If you have an Apple II the Kyan PASCAL library file LIB must be in the same subdirectory as the file you are going to run If you have an ATARI LIB must be in the same directory as the file you are going to run Run the program from the last example HELLO O HELLO O gt D1 HELLO O for ATARI The result should appear on your screen Hello world Printing a Program Any PASCAL source code file may be printed using PRINT O For example to print the program HELLO enter gt PRINT O gt D1 PRINT O for ATARI When PRINT O has loaded the computer will prompt PATHNAME FILE NAME for the ATARI Enter the name of the file to be printed Scanned amp Re Edited by GoodByte in 2005 P 2006 14 Kyan PASCAL Version 1 0 Compiler Error Messages an Example Use the cursor control keys to go to the end of the line WRITELN Hello world Then add a period to the end of the line Now move the cursor to the space after Hello in the same line Next enter the special command lt ESC gt Add the file called TRIAL created earlier Creating a File an Example
36. F C R THEN RdRec IF C W THEN WrRec UNTIL C Q END If it were desired to open a file for the first time or to clean an existing file of all data the procedure Rewrite is used Instead t Next he above program uses the procedure Reset to open the file Data POINTER VARIABLES AND LINKED LISTS Pointers and Nodes VAR Count Integer BEGIN Count 54 If we could examine the computer s memory we would find that the above statements put 54 into specific memory locations Just for the sake of this discussion assume that 54 goes into memory locations 12156 and 12157 Count 512156 4 12157 There is another way to get 54 into memory and that way is to use pointers VAR Locate Integer BEGIN New Locate Locate 54 If we could now examine the computer s memory we would again find 54 in specific memory locations perhaps 11343 and 11344 We would also find that the value 11343 is stored in memory Locate 1 11338 1 11339 3 11340 4 11341 3 11342 Locate 5 11343 4 11344 Locate is the group of memory locations that point to the place in memory where 54 is stored There was no such pointer in the first example Locate is called a pointer variable while Locate is called stored data or a node The pointer symbol or t appears on the left side of the Type in the pointer variable declaration Locate Integer but on the right of an identifier for stored data Locate 54 It is also possible to declar
37. FITNESS ARE HEREBY LIMITED TO NINETY DAYS FROM THE DATE OF PURCHASE CONSEQUENTIAL OR INCIDENTAL DAMAGES RESULTING FROM A BREACH OF ANY APPLICABLE EXPRESS OR IMPLIED WARRANTIES ARE HEREBY EXCLUDED Some states do not allow limitations on how long an implied warranty lasts or do not allow the exclusion or limitation of incidental or consequential damages so the above limitations or exclusions may not apply to you This warranty gives you specific legal rights and you may also have other rights which vary from state to state APPLE COMPUTER INC MAKES NO WARRANTIES EITHER EXPRESS OR IMPLIED REGARDING THE ENCLOSED COMPUTER SOFTWARE PACKAGE ITS MERCHANTABILITY OR ITS FITNESS FOR ANY PARTICULAR PURPOSE THE EXCLUSION OF IMPLIED WARRANTIES IS NOT PERMITTED D BY SOME STATES THE ABOVE EXCLUSION MAY NOT APPLY TO YOU THIS WARRANTY PROVIDES YOU WITH SPECIFIC LEGAL RIGHTS THERE MAY BE OTHER RIGHTS THAT YOU MAY HAVE WHICH VARY FROM STATE TO STATE ProDOS are copyrighted programs of Apple Computer Inc licensed to Kyan Softw are to distribute for use only in combination w ith Kyan PASCAL Apple Softw are shall not be copied onto another diskette except for archive purposes or into memory unless as part of the execution of Kyan PASCAL When Kyan PASCAL has completed execution Apple Softw are shall not be used by any other program ATARI COMPUTER INC MAKES NO WARRANTIES EITHER EXPRESS OR IMPLIED REGARDING THE ENCLOSED COMPUTER SOFTWARE PACKAGE ITS ME
38. Matrix WordIndex END for END End of Line The character that terminates a line of data on the keyboard is the end of line character EOLN lt RETURN gt key The statements Read Letter IF EOLN THEN may be used to control input from the keyboard because the THEN statement will only be executed when a RETURN is entered EOLN stays True until additional data are entered through a Read or Readln statement EOLN is used to control data entry below Writeln Enter four words End each word Writeln with the RETURN key FOR Wordlndex 1 to 4 DO BEGIN Letterindex 0 WHILE NOT EOLN DO BEGIN Letterindex Letterindex 1 Read WordMatrix WordIndex Letterlndex END WHILE Writeln Preceding word had Letterlndex 3 letters Readln END FOR The above lines allow words to be entered one letter at a time into a list Each EOLN signifies the end of a word i e the end of a row in the array WordMatrix If WordMatrix is declared to be of the size 1 4 1 15 when a word has fewer than 15 letters the unused places will be filled with blanks If a word is longer than 15 letters the excess letters will not be saved Scanned amp Re Edited by GoodByte in 2005 P 2006 44 Kyan PASCAL Version 1 0 Recursive Procedures and Functions A procedure or function that calls itself is said to be recursive In Progam Example2 it is possible to rewrite ShAlph to make it recursive Typical of recursiv
39. ORD Day 1 31 Month 0 12 Year Integer END DateType Record VAR B Integer DateRec DateType InMonth ARRAY 1 3 OF Char BEGIN Write MONTH upper case first 3 lett Readln InMonth WITH DateRec DO BEGIN Write DAY Readln Day Write YEAR Readln Year END WITH reads DateRec DateRec Month 0 IF InMonthz JAN THEN DateRec Month IF InMonth FEB THEN DateRec Month IF InMonth MAR THEN DateRec Month IF InMonth APR THEN DateRec Month IF InMonth MAY THEN DateRec Month IF InMonth JUN THEN DateRec Month IF InMonthz JUL THEN DateRec Month IF InMontn AUG THEN DateRec Month IF InMonthz SEP THEN DateRec Month IF InMonth OCT THEN DateRec Month IF InMonth NOV THEN DateRec Month IF InMonth DEC THEN DateRec Month 12 dowd d cado cad Jab bad cub i RSLOPNOUPWONS Aor B DateRec Day StartDay 30 DateRec Month StartMonth Scanned amp Re Edited by GoodByte in 2005 P 2006 47 Kyan PASCAL Version 1 0 365 DateRec Year StartYear IF DateRec Month 0 THEN Writeln Format error in Month ELSE Writeln Days since Starting Time B 8 END In this program the record type contains three sets of Integers Only a subset of the type Integers is used for Month and Day In the range of values for Month 0 is included to check that a three letter abbreviation is input correctly Error checking statements are always part of a professionally written prog
40. RCHANTABILITY 0 ITS FITNESS FOR ANY PARTICULAR PURPOSE THE EXCLUSION OF IMPLIED WARRANTIES IS NOT PERMITTED BY SOME STATES THE ABOVE EXCLUSION MAY NO APPLY TO YOU THIS WARRANTY PROVIDES Y OU WITH SPECIFIC LEGAL RIGHTS THERE MAY BE OTHER RIGHTS THAT Y OU MAY HAVE WHICH VARY FROM STATE T STATE DOS 2 5 are copyrighted programs of ATARI Computer Inc licensed to Kyan Software to distribute for use only in combination with Kyan PASCAL ATARI Software shall not be copied onto another diskette except for archive purposes or into memory unless as part of the execution of Kyan PASCAL When Kyan PASCAL has Scanned amp Re Edited by GoodByte in 2005 P 2006 73
41. RD Suppose a variable of type Invoice is named Bill VAR Bill Invoice Then to refer to the billing number of either an individual or company the auto shop would use Bill InvoiceNum To refer to the requisition number of a company Bill ReqNum would be used The latter number does not exist for individuals Scanned amp Re Edited by GoodByte in 2005 P 2006 49 Kyan PASCAL Version 1 0 SETS Another type of data that may be declared in PASCAL is the set type Sets may have up to 256 members The general format for the declaration of a set type is Identifier SET OF Base Type The base type must be a scalar type but not Real For example if the numbers from 10 to 25 are the base type the prime and nonprime numbers from 10 to 25 are two possible set variables PROGRAM ExSetl Input Output TYPE NumType SET OF 10 25 VAR Prime NotPrime NumType N Integer BEGIN Prime 11 13 17 19 23 NotPrime 10 12 14 15 16 18 20 21 22 24 25 Write Enter a number between 10 and 25 Readln N IF N IN Prime THEN Writeln That is a prime ELSE IF N IN NotPrime THEN Writeln Not a prime ELSE Writeln That is not between 10 and 25 END Notice that the declaration does not specify what numbers constitute the set variables only that they must be some set of Integers between 10 and 25 The numbers constituting the variables are assigned in the program as shown There are many similarities between a set
42. ROGRAM MyProgram start of PASCAL program body i HIRES I in declaration section of MyProgram High resolution graphics functions are used to draw figures in outline such as would be done by a sharp pencil The following statement turns on the graphics HGr To leave high resolution graphics use the Tx statement Tx Line Segments To draw a line segment your Apple computer must be in the high resolution mode The endpoints of the line must be determined and input as integers into the function Draw Suppose you wished to draw a short line of the color blue between the points 25 50 and 60 70 The following statements would accomplish this task BEGIN HGr Draw 25 50 60 70 5 Tx END The procedure Draw X1 Y1 X2 Y2 n selects the color corresponding to n 5 which is blue and draws the line between the endpoints X1 Y1 X2 Y2 In the high resolution mode your Apple monitor is composed of 280 by 192 pixels which is that the monitor goes from 0 192 in Y axes vertically and 0 280 in X horizontally The 0 0 point is in the upper left hand corner The entire program would be a ORG 4000 PROGRAM MyProgram start of PASCAL program body i HIRES I in declaration section of MyProgram BEGIN HGr Draw 25 50 60 70 5 For J 1 to 50 000 Do forces a pause long enough to draw line Tx END The following are the integers corresponding to the colors available in high resolution graphics bl
43. S User s Manual for a complete discussion of pathnames or type and press lt RETURN gt ProDOS How to Make a Directory 1 Type FILER and press lt RETURN gt 2 Press F for File Commands 3 Press M for Make Directory 4 Place the volume disk into any available drive If you have a one drive system remove the Kyan PASCAL disk 5 Type the pathname of the directory you want to create and press lt RETURN gt 6 The FILER checks to make sure there is room on the disk and in the directory for you new directory If there is and if the disk is not write protected you will get the message Make Directory Complete DOS 2 5 Kyan PASCAL for ATARI computers includes DOS 2 5 a powerful operating system developed for use with ATARI 6502 based personal computers Please refer to the warranty section for limitations of the use of this licensed copy of DOS 2 5 DOS 2 5 commands may be used at any time the prompt gt is present To access DOS 2 5 type DOS after the prompt The DOS 2 5 menu will appear To exit DOS 2 5 first type L followed by a carriage return then type D1 B followed by another carriage return To make a backup copy of Kyan PASCAL duplicate a disk enter DOS 2 5 and select option J from the menu Then simply follow the instructions on the screen Note DOS 2 5 will automatically format the disk To convert files from DOS 2 5 to DOS 3 0 use the convert utility on the DOS 3 0 disk All Kyan PA
44. SCAL program will run under DOS 3 0 when converted using this utility Recommendation by GoodByte For more advanced programming mass storage like hard drive flash disk etc are needed If you intend to upgrade your system like that SpartaDOS is the best choice Kyan PASCAL uses the DOS 2 5 load facility but we have moved it to a new location to conserve user program space The new location is from 480 to 6FF This load facility automatically loads the Kyan PASCAL library files when required by the PASCAL object files To build programs in AUTORUN SYS format it is necessary to append the Kyan PASCAL library to the program DOS 1 0 DOS 2 5 and DOS 3 0 contain a COPY command with an append option which enables you to do this When chaining programs in an AUTORUN SYS environment only the first program loaded needs the library appended this greatly speeds the chaining process during execution It is beyond the scope of this manual to describe all the features of DOS 2 5 We encourage you to consult a DOS 2 5 manual for more information Scanned amp Re Edited by GoodByte in 2005 P 2006 17 Help Kyan PASCAL includes a help file that may be called by typing HELP D1 HELP if your computer is an ATARI Special Characters Apple Il Only Kyan PASCAL Version 1 0 Some Apple models do not have the brackets and which are necessary in writing PASCAL arrays To type brackets N equivalent to left bracket lt SHIFT
45. SCII character used in some compilers to mark the start of a text file The ordinal values corresponding to the characters A B 1 and 2 are shown below The quotes around the characters denote that they are of the type Char and are not undefined variables or Integers Chr 65 A Chr 66 B Chr 49 1 Chr 50 2 Scanned amp Re Edited by GoodByte in 2005 P 2006 33 Kyan PASCAL Version 1 0 PART II PROGRAMMING TECHNIQUES PROCEDURES The following section explains a technique for breaking down long programs into simple and easy to understand modules called procedures With a little rewriting any procedure can be made into a program by itself Procedures may or may not communicate with the main program or other procedures If they do a list of parameters is generally declared In the following example the parameters are X1 and X2 PROCEDURE ExchgVal VAR X1 X2 Real Values of X1 and X2 are exchanged VAR Y Real BEGIN Y X1 X1 X2 X2 Y END Declaring and Executing PROCEDURES The following outline lists the steps necessary in using the procedure ExchgVal in a program Demo The program is divided into three main sections The first section the declaration part of the program was discussed earlier The second section is the declaration of the procedure or procedures The third section is the body of the program where the procedure is actually used 1 Declaration section of
46. a number or a symbol In addition it could be a space or a RETURN but control characters such as lt CTRL gt Q are not allowed Although digits such as 1 single quotes are used to denote Char values may be of this type they are not the same as Integers and ordinary arithmetic may not be performed on them Another type of data is called String Any string of characters and spaces such as is alphabetically first constitutes a string When string data are entered on the keyboard the end of the string is signaled by RETURN In Kyan PASCAL the following statement declares a String String ARRAY 1 15 OF Char Since String is user defined any number of characters may be specified although 15 characters are used in FirstWord When a word with fewer than 15 letters is entered in this program Readln will fill in the remaining places with blanks If a word with more than 15 letters is entered the extra letters will be ignored When String and Char values are assigned in a program statement quotes are used VAR Word String Letter Char BEGIN Word Help 5 Letter A The number of characters in a String must be correct Thus there are 11 blanks in Word which is defined as a 15 character String Char is always a single character Scanned amp Re Edited by GoodByte in 2005 P 2006 27 Kyan PASCAL Version 1 0 WHILE The WHILE loop is repeated as long as the specified condition is true If ther
47. ack green purple red blue white akWN O Scanned amp Re Edited by GoodByte in 2005 P 2006 63 Kyan PASCAL Version 1 0 STRING MANIPULATION String String is not a predefined PASCAL type however in order to use the Kyan PASCAL string manipulation functions and procedures it must be declared in the programs that use it As stated in previous chapters a string is simply an array of characters CONST Maxstring 10 10 as an example TYPE String ARRAY 1 Maxstring OF Char Maxstring must also be declared as a constant to whatever value is appropriate to the use of String in the program To use string procedures and functions in a program along with the above declarations the file containing the specific function or procedure you wish to use must be included using the i format in the procedures and functions declaration section of the program The three string manipulation fuctions and one procedure are Length Index Substring and Concat For example in order to use Substring include the file Substring PROGRAM MyExample CONST Maxstring 10 10 as an example TYPE String ARRAY 1 Maxstring OF Char i Substring BEGIN The file containing the string manipulation function or procedure always is appended with as above All the examples that follow use Maxstring 10 although any value up to Maxint may be used Length A string ends with the first blank space or the last cha
48. al erasure 6 If you have a one drive system put your volume in your disk drive and be ready to do quite a bit of disk swapping Messages at the bottom of the display will tell you when to switch disks 7 Press RETURN The blank diskette will automatically be formatted and assigned the volume name Kyan PASCAL 8 When the copy is complete remove your Kyan PASCAL source disk and store it in a safe location ProDOS How to Format a Disk 1 Type FILER and press lt RETURN gt 2 Press V for Volume Commands 3 Press F for Format a Volume 4 Place the blank diskette in any available drive If you have a one drive system remove the Kyan PASCAL diskette 5 Assuming your Apple II is configured in the standard way accept the slot drive defaults by pressing RETURN two times Otherwise consult the on disk ProDOS tutor or the ProDOS User s Manual 6 Type a name for the volume or accept the default name Press RETURN 7 When the format is complete remove the disk and label it with its new volume name Scanned amp Re Edited by GoodByte in 2005 P 2006 16 Kyan PASCAL Version 1 0 ProDOS How to List a Disk Directory 1 Type FILER and press lt RETURN gt 2 Press F for File Commands 3 Press L for List ProDOS Directory 4 Place the volume disk into any available drive If you have a one drive system remove the Kyan PASCAL disk 5 Type the pathname of the directory you want to list see ProDO
49. alse False False AND True True True AND True False False AND False An example of AND The environment is clean True only when both the air AND water are clean Both conditions have to be True for the result to be True AND is also illustrated by the program DivLesn Operator Precedence Operations within parentheses are performed first For example 4 5 1 24 while 4 5 1 21 If parentheses are nested the operation within the innermost pair is done first 3 2 6 2 15 However it is not always necessary to use parentheses because operator precedence is predefined operations of higher precedence are performed before operations of lower precedence If the levels are equal it does not matter which is performed first The five levels of precedence in PASCAL are 1st Highest Precedence 0 2nd Level of Precedence NOT 3rd Level of Precedence AND DIV MOD 4th Level of Precedence OR 5th Lowest Precedence lt gt gt lt lt gt MULTI DIGIT HEXADECIMAL CONVERSION The following program converts a hexadecimal number into a decimal number PROGRAM Hexadecimal Input Output Hexadecimal to base ten TYPE YesNo Yes No VAR Digit Signal Char Number OldNumber Integer Answer YesNo Continue Boolean BEGIN OldNumber 0 Write Enter the most significant far left digit Readln Digit REPEAT CASE Digit OF Scanned amp Re Edited by GoodByte in
50. at also a ProDOS directory Unsupported storage type End of tile encountered Position out of range F le access error also file locked File is open Directory structure damaged Not a ProDOS volume Invalid system call parameter Volume Control Block table full Bad buffer address Duplicate volume File structure damaged 67 APPENDIX A Cont ATARI FILE ERROR MESSAGES Shown below are the known CIO STATUS BYTE values 01 001 OPERATION COMPLETE NO ERRORS 80 128 BREAK KEY ABORT 81 129 IOCB ALREADY IN USE OPEN 82 130 NON EXISTENT DEVICE 83 131 OPENED FOR WRITE ONLY 84 132 INVALID COMMAND 85 133 DEVICE OR FILE NOT OPEN 86 134 INVALID IOCB NUMBER Y reg only 87 135 OPENED FOR READ ONLY 88 136 END OF FILE 89 137 TRUNCATED RECORD 8A 138 DEVICE TIMEOUT DOESN T RESPOND 8B 139 DEVICE NAK 8C 140 SERIAL BUS INPUT FRAMING ERROR 8D 141 CURSOR out of range 8E 142 SERIAL BUS DATA FRAME OVERRUN ERROR 8F 143 SERIAL BUS DATA FRAME DEVICE CHECKSUM ERROR 90 144 DEVICE DONE ERROR 91 145 BAD SCREEN MODE 92 146 FUNCTION NOT SUPPORTED BY HANDLER 93 147 INSUFFICIENT MEMORY FOR SCREEN MODE AO 160 DISK DRIVE ERROR A1 161 TOO MANY OPEN DISK FILES A2 162 DISK FULL A3 163 FATAL DISK I O ERROR A4 164 INTERNAL FILE MISMATCH A5 165 FILE NAME ERROR A6 166 POINT DATA LENGTH ERROR
51. ated from BC00 to BFFF Scanned amp Re Edited by GoodByte in 2005 P 2006 72 Kyan PASCAL Version 1 0 SOFTWARE MEDIA LIMITED WARRANTY Kyan Software warrants to the original consumer purchaser of Kyan PASCAL for a period of ninety 90 days from the date of purchase that the recording medium and only the recording medium on which the software program is recorded will be free from defects in materials and workmanship Defective media returned by purchaser to Kyan Software during that ninety day period will be replaced free of charge provided that the returned media has not been subjected to abuse unreasonable use mistreatment neglect or excessive wear Following the initial ninety day period defective media will be replaced for a 9 50 replacement fee To qualify for replacement defective media must be returned postage paid in protective packaging to Kyan Software 1850 Union St 183 San Francisco CA 94123 Defective media must be accompanied by 1 proof of purchase 2 a brief statement describing the defect 3 a 9 50 check payable to Kyan Software if beyond the ninety day warranty period and 4 your return address THIS WARRANTY IS LIMITED TO THE RECORDING MEDIA ONLY AND DOES NOT APPLY TO THE SOFTWARE PROGRAM ITSELF WHICH IS PROVIDED AS IS THIS WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES WHETHER ORAL OR WRITTEN EXPRESS OR IMPLIED ANY APPLICABLE IMPLIED WARRANTIES INCLUDING WARRANTIES OF MERCHANTABILITY AND
52. cause the latter is declared as a forward reference before Bisect is declared Notice that the forward reference declaration includes the formal parameter list later when Factor is fully declared the parameters and the FORWARD declaration are not repeated Scanned amp Re Edited by GoodByte in 2005 P 2006 39 Kyan PASCAL Version 1 0 Unconditional Branch GOTO Although it is not ordinarily done PASCAL statements may be labeled to allow unconditional branching such as from a REPEAT UNTIL loop A label i e statement number in PASCAL is an Integer followed by a colon and placed before a statement in a program The maximum size of a label is four digits Labels must be declared just like variables and constants The following statements might occur in a program with a forward jump PROGRAM Example Input Output LABEL 22 35 VAR A Integer BEGIN A 0 22 Writeln A A 4 A A 1 IF A lt 5 THEN GOTO 22 ELSE GOTO 35 Writeln Skip Me 35 Writeln The End END The unconditional jump which may be either forward or backward in the program is written as follows GOTO label Labels used in a function or procedure must be declared locally GOTO jumps can be used to jump forward or backward within a function or procedure or to leave a function or procedure to enter the main program but cannot be used to jump from the main program to enter a function or procedure ARRAYS Most of the types of data
53. ced programming Its popularity derives from the clarity of programs written in it and the efficiency with which it can be implemented within the computer Kyan PASCAL is especially efficient in this regard because the run time code and the compiler itself are written in assembly language the language of the microprocessor integrated circuit Unlike some other compiled languages Kyan PASCAL includes the necessary tools for advanced programmers who wish to include assembly language routines in their PASCAL programs PASCAL is a self documenting and self structuring language Top down programming and modulization are natural outgrowths of its features These features include among others user defined functions and procedures of which modules are built Separation of the declaration section from the program body also enforces good programming technique All the information on constants types of variables and names of variables and constants appears in a single section rather than being spread throughout the program Kyan PASCAL provides features that help the programmer to find the syntax errors that account for over 90 of the errors in programming Over 30 error messages for syntax are in the compiler These not only tell the programmer what types of errors were made but also on which lines the errors occurred Kyan PASCAL does not stop looking for errors or lose synchronization when an error is found Instead although compilation halts erro
54. developed by Apple for use with the Apple II e c Please refer to the warranty section for limitations of the use of this licensed copy of ProDOS ProDOS commands may be used at any time the prompt gt is present While it is beyond the scope of this manual to describe all the features of ProDOS we encourage you to utilize the ProDOS tutor on the disk and consult your ProDOS manual To access the ProDOS Filer and Tutor follow these steps 1 Bootthe Kyan PASCAL disk 2 Type FILER and press lt RETURN gt The ProDOS menu will appear You be asked to choose one of the following options Tutor F File Commands V Volume Commands D Configuration Defaults Q Quit To obtain information about ProDOS from the tutor press ProDOS How to make a back up copy of Kyan PASCAL Note Please refer to the enclosed Copyright Notice and License Agreement for a description of the limitations on the use of back up copies 1 Type FILER and press RETURN 2 Press V for Volume Commands 3 Press C for Copy a Volume 4 Assuming your Apple Il is configured in the standard way accept the slot drive defaults by pressing lt RETURN gt four times Otherwise consult the on disk ProDOS tutor or the ProDOS User s Manual 5 Put the source Kyan PASCAL and destination new disks in the appropriate drives and press RETURN WARNING Be sure that the write protect tab is in place on the Kyan PASCAL disk to prevent accident
55. e is more than one statement in the loop BEGIN and END must be used to mark the boundaries Usually indentation is used to clarify the boundaries of the loop although indentation has no significance to the compiler A program would never exit from the following loop because Ex1 will never equal or exceed the test value PROGRAM Never CONST Alpha 4 6 Pi 3 14 VAR Ex1 Ex2 Real BEGIN Ex1 Alpha WHILE Ex1 5 432 DO BEGIN Ex1 Ex1 1 00 Ex2 Ex1 Pi END WHILE END FACTORIAL PROGRAM The following program calculates the factorial function of a given number The factorial function is used quite frequently in analysis of probabilities PROGRAM CalcFact1 Input Output This program computes n where n Integer The result is an Integer VAR Number LoopCount Factorial Integer BEGIN Writeln Writeln Writeln This program calculates the factorial Writeln of an Integer N Write Enter a value N Readln Number Factorial 1 FOR LoopCount 1 TO Number DO BEGIN Factorial Factorial LoopCount END FOR Writeln Writeln Writeln N Factorial 6 END Analysis of Program If a number is equal to zero or one its factorial is defined as one In all other cases n 1 2 3 n 1 n 1 Input N Number 2 Initialize N Factorial 1 3 Begin FOR loop Start with LoopCount 1 Increment LoopCount until Loop Count N Number For each pass through the
56. e pointer types such as TYPE LocateType Integer Scanned amp Re Edited by GoodByte in 2005 P 2006 56 Kyan PASCAL Version 1 0 z e New is the standard PASCAL procedure used to assign memory locations to a pointer variable Each time the New statement is executed a new set of locations is assigned to Locate If we deleted the New statement from the example above the computer might put 54 into memory locations occupied by other data This would probably cause run time errors IU eek and Poke Although New allows us to put data into memory we have no idea where in memory the data is going Peek and Poke give us the power to examine or change the data in specific memory locations Peek and Poke are most often used with memory locations that have a dedicated function such as specifying a character on the screen the color of a character or a sound emitted from the speaker Suppose we wish to check what actually is in memory locations 11343 and 11344 VAR Locate Integer BEGIN Assign Locate 11343 Write Locate Assign Locate 11344 Write Locate Although Assign Locate 11343 is not part of standard PASCAL it is included in Kyan PASCAL When the Assign statement is used with a Write statement the result is a Peek In standard PASCAL it is not possible to decide where in memory to store data The compiler makes that decision However the Kyan PASCAL Assign statement allows us to Poke data into a s
57. e procedures ShAlph has fewer statements than before but in the compiled machine code it will be longer PROCEDURE ShAlph WordMatrix Word Array VAR Wordlndex Integer BEGIN FOR Wordlndex 1 to MaxWords 1 DO IF WordMatrix WordIndex gt WordMatrix WordIndex 1 THEN BEGIN ExChg WordMatrix Wordlndex ShAlph WordMatrix END END PROCEDURE As rewritten ShAlph tests the words from the first word to the last If any of the words are out of alphabetical order they are exchanged and ShAlph begins again When ShAlph is called recursively the index to the array is reset to the beginning There are two uses for recursion 1 where logical decisions occur repetitively as above and 2 when computing a function in the form of some repetitive function such as NI N N 1 N 2 N N 1 Copying Arrays If two arrays have the same subscript type and element type the values of one may be copied to the other using a simple assignment statement Notice that it is not necessary to specify the subscripts when copying VAR Matrix1 Matrix2 ARRAY 1 3 1 3 OF Real BEGIN Matrix1 Matrix2 Values may be assigned to string array variables by using single quotes around the characters to be included This is illustrated in the example below Blanks are assigned because the string array size is larger than the word being put into it PROGRAM CopyArrays TYPE String ARRAY 1 16 OF Char VAR Word1 Word2 String BEGIN Wo
58. e used only to input data to the procedure PROCEDURE OtherVal VAR X1 X2 Real Z Real VAR Y Integer Although Z may change value during the execution of the procedure the new value of Z is not communicated to the main program The following statements might occur within the body of the program when the procedure OtherVal is to be executed OtherVal A B 5 0 D OtherVal C B A 10 0 E Notice that arithmetic operators and values such as Integers can appear in a list of actual parameters if the corresponding parameter is a value parameter An error is generated if the corresponding parameter is a variable one Scanned amp Re Edited by GoodByte in 2005 P 2006 35 Kyan PASCAL Version 1 0 Correspondence Between Actual and Formal Parameters The following rules must always be obeyed 1 The number of actual parameters in each set of parentheses must be exactly the same as the number of formal parameters 2 The parameter types must be consistent Thus the main program which uses the procedure OtherVal may declare VAR A B C Real D E Integer The names of the variables in a procedure may be the same as names used in other procedures or in the main program Functions Functions are similar to procedures in that both use parameters but different in that a function takes the values input viz the parameter values and returns a single value which is identified by the function name For example the func
59. ed iene 22 PROGRAM TO FIND THE AVERAGE sese 23 Readln and Writeln wee 28 Real and Integer Data Types e 24 Trunc Round and Maxint 24 Arithmetic Operators 5 2 d e Lege eee rege e ebat eee 25 SOCIAL SECURITY PROGRAM Relational Operators enea e aaa aaa AA E E nennen enne nennt EAE DENNA nnn The IF THEN Statement The Assignment Statement ALPHABETIZE PROGRAM ci eee prn er a eee RR eed Rea eV dpt depend 26 FirstWord Algorithm 27 String and Char Types a 27 WHILE iei o et RE nete ree ee p de 28 FACTORIAL PROGRAM 5 entities tec e d ee e dd dedos 28 Analysis of ProgfFatm reip erect er Ente epe desea e E Eder Eee aoea 28 For Loops and Loop Control Variables sssssssssseseeseeeeeeneeees 29 BOOLEAN PROGRAM ire td et n o er de ee ao eo ebrei 29 Boolean Data Type 29 Div and Mod Operators we 29 Boolean Operators sssssssssssssssssseeseseeeeee enne eene rnen et rnn rentrer nnn 30 Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 Operator Precedente s s eL eie du eel eb ed dn e ores 30 MULTI DIGIT HEXADECIMAL CONVERSION seen 30 Algorithm REPEAT UNTIL PROCEDURES tet dte ke REOR D e A GER De NER HU Re opa co EU Declaring and Executing Procedures ccccscceeeeceeeeeeeeeeeeeeeseeeeeeeaeeeseneeeseeaeeeseaees Parameter Lists Act
60. edure or function Since each pointer takes two bytes each variable parameter takes two bytes In PASCAL programs all the declarations come before the body of the program function or procedure thus the location of the variables is easily calculated Always calculate the location of the variables relative to the beginning of the procedure function or program in which they appear It is inappropriate and misleading to calculate the stack location of variables based on their relative scope in the program i e based on variables outside the scope of the ones in line with the assembly code Predefined Labels The following tables gives the absolute locations of SP LOCAL and T SP and LOCAL contain the addresses of the bottom and top of the PASCAL variables stack respectively T is the start of the temporary registers There can be up to 16 temporary labels going from T to T 15 SP EQU 4 LOCAL EQU2 T EQU 16 Passing Parameters through Chain Parameters passed from one executable program to another executable program using Chain are passed by value and are only passed forward i e to the next file to be run The parameters passed are the ones in that match type and position in the declaration section of the program All parameters that follow any parameter that does not match cannot pass values through Chain PROGRAM Alpha PROGRAM Beta VAR VAR A B C Integer D E F Integer X Integer Y Real P Char L Char B
61. elements of the first matrix Thus the sum matrix is formed without the computer s ever having seen the second matrix PROGRAM AddMatrix Input Output TYPE MatxType ARRAY 1 3 1 3 OF Real VAR Matrix MatxType SubSRow SubSCol Integer Subscripts of the matrices AddEle Real Elements of 2nd Matrix BEGIN FOR SubSRow 1 TO 3 DO FOR SubSCol 1 TO 3 DO BEGIN Write Matrixl element SubSRow 3 SubSCol 3 is ReadlIn MatrixiSubSRow SubSCol Inputs the elements of first Matrix END FOR FOR SubSRow 1 TO 3 DO FOR SubSCol 1 TO 3 DO BEGIN Write Matrix2 element SubSRow 3 SubSCol 3 is Readln AddEle Inputs the elements of second Matrix Matrix SubSRow SubSCol AddEle MatrixiSubSRow SubSCol END FOR loops Writeln Writeln The sum of the two matrices is Writeln FOR SubSRow 1 TO 3 DO BEGIN Writeln FOR SubSCol 1 TO 3 DO Write Matrix SubSRow SubSCol 7 3 END FOR END The Array As a Parameter In the procedure below ShOrder an array SubArry is used as a variable parameter PROCEDURE ShOrder First Last Integer VAR SubArry NumbArray If SubArry were to be passed as a value parameter VAR would be deleted But this would take twice as much memory space because an extra copy of the array would be set up for use in the procedure Individual elements of an array may also be passed as parameters such as the third element of Vector viz Vector Z
62. ement declares the name of the program which is Ego The next line BEGIN tells the computer the following statements are part of the program body The third and fourth statements Writeln short for write line create two blank lines on the screen before the message The fifth statement causes the message to appear on the screen My name is Sam Smith Scanned amp Re Edited by GoodByte in 2005 P 2006 20 Kyan PASCAL Version 1 0 CONSTRUCTION PROGRAM The second program we are going to run will calculate the cost of constructing an apartment building given the hours worked the rate of pay and the cost of materials PROGRAM Construction Input Output Dollar units are thousands CONST Material 325 0 VAR Hours Rate Labor Total Real BEGIN Writeln Enter hours worked and rate of pay Readin Hours Rate Labor Hours Rate Total Labor Material Writeln Labor Labor 8 3 Total Total 8 3 END Analysis of Construction The objective of the program is to calculate the Labor cost and Total cost for the construction project The calculation of these costs will depend on the Hours worked and the Rate of pay during those hours The first part of the program gives the names of the program the constants and the variables In PASCAL user defined names are called identifiers The fixed cost of the materials is given by the identifier Material and is 325 000 No
63. eneeesenaeeeseneeeeeaeees 62 How to Chain Source Code Files sse 62 GRAPHICS Apple ll Only ease eatin lates tin de beret ei ive 63 Highi ResolutionGraphiCs redis eiii et a e et eae cena 63 Line Segments asarini II eren eerie pir ase ee operae e tee eee 63 STRING MANIPULATION cecceceeseeeeeeceeeeceeeeeeseeeaeceeeaeeeeceaeeaesaeeenecaesaeeeeeeaeeeeesaeeareneeeaes 64 String 64 Length 64 Concat 65 ING OX m 65 SUID SUING opc 65 APPENDIX A COMPILER ASSEMBLER AND RUN TIME ERROR MESSAGES see 66 APPENDIX B QUICK GUIDE TO KYAN PASCAL esee rennen enne eree etr enrnn 69 APPENDIX C SPEGIFIGATIGONS i rte nta tee de et a E RR C eb t ee ee etdd 71 WARRANTY 5 decine cde cms ies d di ded ode e e eee ane 73 Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 Kyan PASCAL Version 1 0 PREFACE PASCAL A Programming Language provides beginning programmers with a step by step introduction to PASCAL and advanced programmers with a convenient reference to the language The first chapter EDITOR AND COMPILER INSTRUCTIONS explains how to enter edit and compile a PASCAL program This material must be read prior to actual programming Readers with no previous experience with PASCAL should read the chapters in order It is recommended that the example programs be entered compiled and run It is not essential that every line be dupl
64. er assembler goes to work If there are no errors an object file will be generated and the prompt will reappear on the screen If errors are detected a listing will be generated and sent to the location you have specified To illustrate the compiler options let s compile the HELLO program generate an object file and send the assembly language listing or a listing of any syntax errors to the printer in slot 1 1 Prompt gt 2 Type PC 3 Prompt Appears PC gt Wait for Compiler to Load 4 Type HELLO L S1 RETURN Assuming no errors have been detected you can now run the HELLO program by following the instructions on the next page Scanned amp Re Edited by GoodByte in 2005 P 2006 13 Kyan PASCAL Version 1 0 ATARI Compiler Options Enter the name of the PASCAL program you wish to get ready to run followed by the compiler options you choose PC gt D1 ProgramName L E O lt RETURN gt The L option tells the computer whether you want a listing of the assembly language program and where it is to go If you do want an assembly language listing you must use L or LP When L is chosen the listing will go only to the CRT screen If LP is chosen the listing will go to the screen and printer The O option allows you to not generate an object file or to specify its name 1 If you do not specify O the object file will be generated with the same file name as the source file 2 If you want a different file name than the s
65. f the parenthetical statements following it are true see DIV and MOD operators below The AND operator means that both equalities in parentheses must be True otherwise Correct will be false and the next two statements will be skipped DIV and MOD Operators The DIV and MOD operators give the quotient and the remainder of a division problem when the divisor and dividend are both of the type Integer The general form is Integer1 DIV Integer2 quotient Integer1 MOD Integer2 remainder For example if Integer 14 and Integer2 4 then 14 DIV 4 3 and 14 MOD4 2 Scanned amp Re Edited by GoodByte in 2005 P 2006 29 Kyan PASCAL Version 1 0 Boolean Operators Up to this point we have discussed only the manipulation of Real and Integer type data This included the add subtract multiply and divide operators There are also Boolean operators NOT OR AND Boolean operators follow the rules of formal logic and can be diagramed in truth tables NOT False NOT True True NOT False An example of NOT A coin is flipped If it is NOT heads True it is tails False If it is NOT tails False it is heads True OR True True OR False True False OR True True True OR True False False OR False An example of OR Two cars are racing The race is over True whenever car A crosses the finish line OR car B crosses Only one condition has to be True for the result to be True AND False True AND F
66. her constant such as Taxes Scanned amp Re Edited by GoodByte in 2005 P 2006 22 Kyan PASCAL Version 1 0 The declaration of the constant Material 325 00 at the start of the program obeys three rules of good programming 1 Top down structure 2 provides documentation and 3 accommodates changes easily PROGRAM TO FIND THE AVERAGE The following program finds the average of two numbers PROGRAM Average Input Output Computes the average of two numbers VAR X1 X2 Average Real BEGIN Read the two numbers Write First number Readln X1 Write Second number Readln X2 Compute Average Average X1 X2 2 Print Average Writeln Average Average 9 2 END The following is a sample run of Average First number 12 Second number 8 Average 10 00 In this book data entered on the keyboard will be underlined ReadIn and Writeln Write First number causes First number to appear on the screen The user then enters the first number which in the above example is 12 If the program had used Writeln First number there would have been a RETURN and the user would have had to enter 12 on the line below the prompt Readin X1 enters data from the keyboard into the computer The entire line is read up to and including the RETURN However the data that is assigned to X1 depends on what type X1 is For example suppose the data entered a
67. ic TYPE String ARRAY 1 15 OF Char CoordnType X Y Z VectorType ARRAY CoordnType OF Real VAR Vector VectorType Word String BEGIN Vector X 3 0 Vector Y 5 0 Vector Z 4 0 Word First Point END Scanned amp Re Edited by GoodByte in 2005 P 2006 40 Kyan PASCAL Version 1 0 The first array String may be used to handle words or phrases that have 15 characters including blanks Integers 1 to 15 identify the elements of the array The second array declares that each vector consists of 3 numbers Each one is a direction in three dimensional space The elements of this array are identified not by Integers but by CoordnType a user defined type Any scalar type may index an array Arrays of Arrays and Multidimensional Arrays If we wished to represent a paragraph that contained up to 50 words we might define it as an array of String i e an array of an array TYPE String ARRAY 1 15 OF Char Paragraph ARRAY 1 50 OF String Use of the array Paragraph could prove to be a wasteful programming technique because it reserves a lot of memory space for what might turn out to be a short paragraph The array Paragraph is an example of a multidimensional array The array MatxType below is also multidimensional MatxType is a two dimensional array of numbers It is not necessary for the dimensions of the matrix to be the same size although in this one they are 3 elements each
68. icated from these programs In fact rewriting the example programs not only is instructive but also can improve them Programmers who are already familiar with PASCAL need only read the sections on topics they wish to review Appendix B provides a quick review of PASCAL vocabulary Addition by the Re Editor This manual is brought to you in the intention to keep the knowledge about a great product from former kyan software within the ATARI community Even after more than 20 years it is fascinating to discover the power of the language and the machine in a setting which matches a state of the art home computer set in the mid eighties of the 20 century Scanned amp Re Edited by GoodByte in 2005 P 2006 7 Kyan PASCAL Version 1 0 INTRODUCTION The history of PASCAL goes back to the late 1960s when Niklaus Wirth a professor of computer science decided that a new approach a new language was needed for teaching programming Wirth introduced PASCAL as a formal language in 1971 The two principal aims of PASCAL are to make available a language suitable to teach programming as a systematic discipline based on certain fundamental concepts clearly and naturally reflected by the language and to develop implementations of this language which are both reliable and efficient on presently available computers Jensen and Wirth PASCAL User Manual and Report PASCAL has become a widely used language for both elementary and advan
69. ignal TYPE String ARRAY 1 15 OF Char VAR Word LeastWord String LoopCount Integer BEGIN Each time through the loop increment the counter LoopCount and save the least word Write Enter a word or Readln Word LeastWord Word LoopCount 0 WHILE Word l lt gt Signal DO BEGIN IF Word lt LeastWord THEN LeastWord Word LoopCount LoopCount 1 Write Enter a word or Readln Word END WHILE LOOP Writeln Scanned amp Re Edited by GoodByte in 2005 P 2006 26 Kyan PASCAL Version 1 0 Writeln Writeln LoopCount 5 words were entered Writeln LeastWord is alphabetically first END FirstWord Algorithm Step 1 Input the first word on the list to be alphabetized Step 2 Initialize variables LeastWord Word LoopCount 0 Step 3 Begin WHILE loop Exit WHILE loop when Word Step 3a WHILE loop Input the next Word Step 3b Increment LoopCount Step 3c IF current Word is alphabetically first LeastWord Word Step 4 Output LeastWord and LoopCount String and Char Types So far only two types of data have been discussed Real and Integer Another type Char is a predefined type that denotes a variable constant or other piece of data that is in the form of a single character Suppose we define a variable Digit to be of the type Char VAR Digit Char This means Digit will always be a single printable character It may be a letter
70. ill appear PC gt Apple Compiler Options Kyan PASCAL features several options which can be selected when you are ready to compile your program The format for selecting these options is PC gt ProgramName L Sn O RETURN gt The L option tells the computer that you want a listing of the assembly language program If you omit the L an assembly language listing will not be generated If you do specify a listing it will be sent to the same location as the error message listing see next paragraph The Sn option tells the computer where you want the error list and or the assembly language listing to be sent Errors are syntax problems in your program which must be corrected before the program will run the compiler automatically counts and lists these errors The n refers to the slot number on the Apple II slot numbers are fully explained in your Apple II owners manual Slot 0 is used to send the listing to the monitor The O option allows you to omit the generation of an object file or to specify a new pathname If you specify O an object file will not be generated If you do not specify O an object file with be generated with the same pathname as the source file with a O after the name to designate object file If you want to assign a new pathname to the object file then specify O pathname Remember an object file is necessary if you want to run the program When the RETURN key is pressed the compil
71. lement at a time Programmer created files enable data to be stored on magnetic tape or floppy discs a piece of data assigned to a file variable can be saved In contrast when files are not used values assigned to variables are stored in the computer s directly accessible memory which is lost when the power is turned off Since the data in a file is on magnetic tape or a floppy disk the size of the computer s directly accessible memory is not a limitation as it is in other data types files give the programmer a great deal of extra memory to work with However working with files has the disadvantage of slowing the access time This can become critical in real time programs Files are unique in that they are the only completely sequential data type In fact data items stored in a file cannot be used in a program until they are transferred sequentially one element at a time first to last from the file ile Declaration Before a file can be used in a program it must be declared The first step in declaring a file is to specify the file in Apple ProDOS files are referenced by a pathname which may be different than the PASCAL file name identifier name in parentheses after the program name PROGRAM Store Input Output List1 This tells the computer that at least some of the data used by the program will come from a file other than Input Next in the variable declaration section the variable type comprising the file is specified VAR List
72. ler Options Apple II O Omit object code L Generate assembly language listing Sn Send error listing to slot n Assembler Compiler Options ATARI O Omit object code E Send error listing to screen only EP Send error listing to screen and printer L Send assembly listing to screen only LP Send assembly listing to screen and printer Other Commands A lt RESET gt Stops program during run time Apple Only lt BREAK gt Stops program during run time ATARI Only Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 19 Kyan PASCAL Version 1 0 PART I SAMPLE PROGRAMS EGO PROGRAM The first program shows how to print a message PROGRAM Ego Output BEGIN Writeln Writeln Writeln My name is Sam Smith END This program will put the message My name is Sam Smith on the screen Program Statement and Reserved Words The name of the program is Ego It appears after the word PROGRAM To end the statement which names the program we use a semicolon If we did not use the semicolon the computer might think that the next statement BEGIN was part of the program name PASCAL has a precise vocabulary Part of this vocabulary consists of words that cannot be used by the programmer as names within his or her program PROGRAM and BEGIN are two such reserved words It would be illegal to use the word program for the name of the program Reserved words will be written in capital
73. llowing section extends the preceding definitions of global and local to more general cases where a variable is relatively global or relatively local This occurs when there are several functions and procedures sharing variables Scanned amp Re Edited by GoodByte in 2005 P 2006 37 Kyan PASCAL Version 1 0 Nesting of Functions and Procedures Functions and procedures may be nested within other functions or procedures The declaration section of a program is illustrated below with nested boxes to represent the concept called scope The innermost box Phase is within the scope of both CsLaw and PhaseDis while CsLaw is only within the scope of the main program PhaseDis Because of the top down structure of PASCAL the procedures or functions declared first have greater scope than those declared later Identifiers of variables and types in the outer boxes are global relative to the inner boxes Identifiers that are declared in procedures of greater scope are global relative to procedures of lesser scope Thus values of variables may be passed from a procedure of greater scope to one of lesser scope either by parameters or by global variables of the procedure of greater scope PROGRAM PhaseDis VAR Height1 Width1 Angle1 Angle2 Dist Real FUNCTION CsLaw A B Theta Real Real VAR C Real PROCEDURE Phase1 H1 W1 Ang1 AngX Real VAR D Real VAR E Real BEGIN E 1 CsLaw H1 W1 Ang1 Sin AngX D 1 22
74. loop calculate a new value for Factorial Factorial Factorial LoopCount Scanned amp Re Edited by GoodByte in 2005 P 2006 28 Kyan PASCAL Version 1 0 4 Output N Factorial FOR Loops and Loop Control Variable CalcFactl uses the FOR loop whfch increments a loop control variable from some initial value to some final value Although the loop control variable is an Integer in other uses of the FOR loop it might be an alphabetic character Char The FOR loop may also decrement the loop control variable if written in the following form FOR LoopCount Number DOWNTO 1 DO BOOLEAN PROGRAM PROGRAM DivLesn Input Output VAR X W Z Integer Ans Char Correct Boolean BEGIN Ans Y WHILE Ans Y DO BEGIN Write Enter an Integer ReadIn X Write One of the factors is ReadIn W Write X 3 divided by W 3 is Readln Z Correct X MOD W 0 AND X DIV W Z IF Correct THEN BEGIN Write Correct Another Enter Y or N Readln Ans END IF THEN ELSE BEGIN Write Incorrect Try again Enter Y or N Readln Ans END IF ELSE END WHILE END Boolean Data Type Boolean is a predefined type Boolean type expressions variables and constants are always in one of two states they are either in the True state or the False state In the program above the IF statements are executed only when Correct equals True Correct is a Boolean variable which is true when both o
75. m of stack The offset from LOCAL is simply the total space taken by variables preceeding and including the declaration of Cee Offset of Cee below LOCAL First in Stack bytes Cee bytes The offset from LOCAL is 6 bytes due to the Integer variables Alt and Bee which are pushed before Cee and 2 bytes for Cee itself The 3 bytes added to the value in the stack pointer are 3 bytes are preserved at the top of the stack for stack linkage The 6502 X register is used by the compiler as a stack pointer It is very important to save and restore the X register if you need to use it The following table designates how many bytes of memory each type of variable or constant is provided on the stack Real 8 bytes Integer 2 bytes Char 1 bytes Boolean 1 bytes Pointer 2 bytes ARRAY 1 n OF Char n bytes ARRAY 1 n OF Boolean n bytes ARRAY 1 n OF Integer 2 n bytes Value Parameter Real 8 bytes Value Parameter Integer 2 bytes Value Parameter Char Boolean 1 bytes Value Parameter ARRAY n OF Char Boolean n bytes Value Parameter Scanned amp Re Edited by GoodByte in 2005 P 2006 61 Kyan PASCAL Version 1 0 ARRAY n OF Integer 2 n bytes Variable Parameters All 2 bytes Variable parameters are the parameters in the parentheses of the declaration of a procedure or function They differ from value parameters because memory space is not allocated for the value of the variable but only for a pointer to a variable outside the proc
76. m to reuse names in several places but with different meanings As long as the scope of one definition of such a name does not not encompass another definition there will be no conflict PROGRAM PhaseDis VAR Height1 Width1 Angle1 Angle2 Dist Real FUNCTION CsLaw A B Theta Real Real VAR C Real BEGIN C A A B B CsLaw C 2 A B Cos Theta END CsLaw Declaration PROCEDURE Phase1 H1 W1 Ang1 AngX Real VAR E Real BEGIN E 1 CsLaw H1 W1 Ang1 Sin AngX BEGIN END PhaseDis Global and Local Types User defined types such as scalar types may be local or global The same rules of scope apply Forward References Calling i e executing a procedure or function before it has been defined is called a forward reference Whenever a forward reference is used in a PASCAL program it must be declared as shown in the third line of the following program PROGRAM Compute Input Output VAR X Integer Y Real FUNCTION Factor Z Integer Integer FORWARD PROCEDURE Bisect Alpha Integer Beta Real BEGIN Beta Beta Alpha Factor Alpha END PROCEDURE FUNCTION Factor CONST LargeNum 12345 BEGIN Factor argeNum MOD Z END FUNCTION BEGIN Write Enter an Integer ReadIn X Write Enter a decimal number Readln Y Bisect X Y Y Factor X Y Writeln Writeln Answer is Y END The procedure Bisect is able to execute the function Factor be
77. mory location is a negative number given by the formula Equiv Mem Loc Mem Loc 65536 Scanned amp Re Edited by GoodByte in 2005 P 2006 57 Kyan PASCAL Version 1 0 Linked Lists and NIL In addition to being used with Peek and Poke pointers are used in linked lists which allow a database to be of variable size Below is a program that has a pointer variable Appointm which points to the location of a Record AppointRec just as Locate pointed to the location of an Integer Each record is an appointment including time and person to meet PROGRAM Meetings Input Output TYPE String ARRAY 1 15 OF Char TimeType Hr Min Day Mon Yr AppointRec RECORD Person String Time ARRAY TimeType OF Integer END RECORD VAR Appointm AppointRec BEGIN New Appointm Appointm Person Ernie New Appointm Appointm Person Bob New Appointm Appointm Person Gina Writeln Appointm Person END It is important to notice that each time another name is entered the pointer is moved to a new location New Appointm Although the above sequence of statements inputs three names into memory each with a different pointer it does not provide for retrieval of any of the names except the last When Writeln is executed Gina will be printed In the example that follows a pointer type Appointer is declared and the appointment record includes a pointer Link that will link all the records and th
78. mply want to stop it For Apple Il computers Press lt CTRL gt in combination with RESET For ATARI computers Press BREAK The stack containing the return addresses will be displayed followed by the processor status and the accumulator contents Apple RAM Disk 128K Apple computers include a 64K RAM disk Because this area of memory appears to the operating system as a disk drive it may be used to store the files you will be using during compilation and assembling The main reason to move these files from floppy disk to RAM disk is that it will greatly increase the speed of compilation and assembling The RAM disk volume name is preset by the ProDOS operating system as RAM Thus any time you want to copy a file to or from RAM disk you must use the prefix RAM You can store files e g ED E80 LIB from the Kyan PASCAL disk or your own source code files on the RAM disk To move files from the Kyan PASCAL disk to the RAM disk you can use the Load and Save commands in the Kyan Editor or the Copy File procedure in the ProDOS Filer Note if you want to run your object code programs which are stored in RAM be sure to also copy the Library file LIB and any included files onto the RAM disk Since you will be operating with files that are stored in the RAM disk you may want to use the ProDOS Filer to change the default prefix to RAM Scanned amp Re Edited by GoodByte in 2005 P 2006 15 Kyan PASCAL Version 1 0
79. ndard PASCAL constant whose value is the maximum Integer size In this edition of PASCAL Maxint 32767 It will vary with different computers and compilers Scanned amp Re Edited by GoodByte in 2005 P 2006 24 Kyan PASCAL Version 1 0 Arithmetic Operators PASCAL uses the following arithmetic operators for Real and Integer data Add Subtract Multiply i Divide Multiplication and division are performed before addition and subtraction For example 6 8 2 10 not 7 SOCIAL SECURITY PROGRAM The following program calculates the amount of social security tax to be deducted from each paycheck PROGRAM SocialSecurity Input Output CONST TaxRate 0 075 TaxMaximum 4275 0 VAR Hours Rate TaxNow TaxToDate Real BEGIN Read hours rate and tax to date Writeln Writeln Write Hours worked Readln Hours Write Hourly rate _ Readin Rate Write Soc Sec tax paid to date Readln TaxToDate Compute Soc Sec Tax for this period TaxNow Hours Rate TaxRate Test IF TaxToDate TaxNow is gt Tax Maximum THEN TaxNow must be recalculated IF TaxToDate TaxNow gt TaxMaximum THEN BEGIN TaxNow TaxMaximum TaxToDate TaxToDate TaxMaximum END IF true ELSE IF false TaxToDate TaxNow TaxToDate Write Results Writeln Soc Sec Tax This Pay Period TaxNow 8 2 Writeln Soc Sec Tax To Date TaxToDate 8 2 END Rela
80. ndition becomes False It is important to note that the REPEAT UNTIL condition is tested at the end of the loop rather than at the beginning like the WHILE condition Scanned amp Re Edited by GoodByte in 2005 P 2006 31 Kyan PASCAL Version 1 0 Scalar Types and Boolean Variables In the program above Hexadecimal Answer is a scalar variable Scalar variables are used when there is a short list of names words numbers or other legal identifiers that the variable might be A scalar type which is user defined gives the possible values of a scalar variable Listed below are two scalar types TYPE DaysWeek Mon Tue Wed Thur Fri Sat Sun PayRate Regular Overtime The scalar variables below may take on any of the values listed in the type declaration but no others VAR Day DaysWeek Rate PayRate The following declaration of PayNames is illegal because the values in a scalar type cannot be defined in terms of any other type Because quotes are used A and B are of the type Char and Other is a string Without quotes they are simply identifiers and are therefore acceptable Characters or strings cannot be used nor can integers or real numbers TYPE PayNames A B Other The only exception to this rule is explained below in the definition of a scalar type sub range A Boolean variable is much like a scalar variable where the type would be TYPE Boolean True False In the program abo
81. nged from sequential storage to relative storage to allow random access of the elements in the file However please note that files of Char text or files of Boolean remain sequential files The function Seek has been included in Kyan PASCAL to access parts of relative files called elements that might be in the anywhere in a file This procedure is used as follows Seek F N Position the buffer of file F at the Nth element Put F Put contents of the file buffer into Nth element Either Put or Get follow Seek Get F Get contents of Nth file element and put in buffer The first element of a file has the element number O As was stated previously the first element of a file is the first element put using the PASCAL procedure Put into a file Most often the elements of a file are PASCAL record types PROGRAM SeekDemo TYPE String ARRAY 1 32 OF Char VAR F FILE OF String C Char PROCEDURE RdRec VAR i Integer BEGIN Write Record Number Readln i Seek F i Get F IF NOT EOF F THEN Writeln F EOF is true if element empty END PROCEDURE WrRec VAR i Integer BEGIN Write Record Number Readln i Write Data Readln F assign data to file buffer Seek F i Put F END BEGIN Scanned amp Re Edited by GoodByte in 2005 P 2006 55 Kyan PASCAL Version 1 0 Reset F Data Reset F D1 DATA for ATARI REPEAT Writeln R Read W Write Q Quit Readln C I
82. nt or decimal notation Examples are 12 8 3 456E 11 and 2 5555E 4 A number in decimal notation must have at least one digit before and one digit after the decimal point Very large or very small numbers are best handled in scientific notation The statements following the declaration of the variable Z are equivalent VAR Z Real BEGIN Z 345 55 Z 3 4555E 02 END In the program to find the average X1 and X2 were declared to be of the type Real The range of values that may be assigned to X1 or X2 is from 9 9999999999E 99 to 9 9999999999E 99 Suppose we wish to declare an Integer variable En A declaration statement for En would be written as VAR En Integer Integer numbers must be within the range 32768 to 32767 If arithmetic expressions are formed by mixing Integer and Real types the result will be expressed as a Real type When a Real or Integer number is written the format specifies how many spaces are reserved for it and other details of how it will appear in print or on the screen Notice in the Writeln statement that the size of the space reserved for the Real number is 9 2 This means that the number is to be printed in decimal notation If the format were simply 9 the number would be printed in scientific notation The format for Integers never needs to be larger than 5 because of the range limitation The format 9 2 reserves nine spaces total This includes one space for the sign and one space for
83. nter NIL Conditional Instructions Reserved Words IF THEN ELSE WHILE DO REPEAT UNTIL FOR TO DO FOR DOWNTO DO Operators Reserved Words Arithmetic Operators DIV MOD Boolean Operators AND NOT OR IN Allowed parameter types appear in parentheses Operators Reserved Characters Arithmetic Operators Relational Comparison Operators lt gt Graphics Procedures Non standard Apple II only HGr Draw X1 Y1 X2 Y2 n Tx Miscellaneous Reserved Characters Punctuation Pointer equivalent to 1 Grammatical Identifiers Reserved Words CONST FUNCTION LABEL PROCEDURE PROGRAM RECORD TYPE VAR BEGIN END CASE OF GOTO WITH DO Pre Compilation Instructions Non standard Scanned amp Re Edited by GoodByte in 2005 P 2006 69 ig include file Ha include assembly code String Functions and Procedures Non standard String and Maxstring must be declared Length string Concat string string string Index string string Substring string integer integer Graphics Non standard ATARI only Graphics integer SetColor Register Hue Luminance Plot Horizontal Vertical Color Position Horizontal Vertical Locate Horizontal Vertical Data Drawto Horizontal Vertical Color Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 70 Kyan PASCAL Version 1 0 APPENDIX C SPECIFICATIONS Integer Range of 32768 to 327
84. ource file specify O file name 3 The object file will not be generated if the O option is included without a name An object file is necessary if you wish to run the program The E option tells the computer where you want the list of errors to be sent Errors may occur for example when you leave off some necessary PASCAL punctuation If there are errors they will be counted and listed and the program cannot be run When the RETURN key is typed the compiler assembler will start working If there are no errors and an object file was generated then the program can be run immediately after the prompt gt appears signaling the end of compilation and assembling Compile HELLO and save the results on your floppy disk As an example of using compiler options suppose you wished to send the assembly code and error listing to ATARI slot 1 which is the usual slot for the printer 1 Prompt gt 2 Type D1 PC 3 Prompt appears PC gt 4 Type D1 HELLO L E lt RETURN gt Follow the instructions in the next section to ATARI you can re enter the compiler by typing compiler exit prompt Running Files and File Name Extensions Look at the file directory if you have followed the instructions in the examples it should now include HELLO and HELLO O The PASCAL file is HELLO and HELLO O is the object code file which is also the system file You may now make copies of HELLO O and run these using your Apple without Kyan PASCAL
85. pecific memory location as follows VAR Locate Integer BEGIN q Assign Locate 11343 Locate 5 Assign Locate 11344 Locate 4 In the Apple Il Ile and lic location 1024 maps the first character on the screen The screen is 40 characters wide by 25 characters tall The following program uses Poke to put the alphabetic characters in the first line at the top of the screen Consult your Apple manual for the other memory locations reserved for the screen PROGRAM Alphabet TYPE Screen ARRAY 0 1023 of Char VAR Charmem Screen Integer BEGIN Assign Charmem 1024 FOR 0 TO 25 DO Charmem I Chr l Ord A END In the Poke above an Integer value 1024 is assigned to a pointer variable Charmem This is where in memory Charmem 1 1 will be stored To Poke A into the specified memory location we assign it to Charmem The procedure New is not used with a Poke the next memory location 1025 is automatically mapped to the next Charmem in the loop Each element in the array Charmem I takes one memory space thus the entire array is mapped into memory locations 1024 to 1049 Suppose Charmem is defined as above but now we wish to Peek at the character displayed at the upper left hand corner of the screen BEGIN Assign Charmem 1024 Write Charmem 1 END Some memory locations exceed 32767 the maximum Integer size allowed in Kyan PASCAL In those cases the equivalent me
86. ptions 13 ATARI Compiler Options es 14 Running Files and File Name Extensions ssssssseeeeeenn 14 Printing a Program iso esa has ont tene erit ctp E de a ea de der vua ee 14 Compiler Error Messages an Example ssssssseeeeneeenneennn 15 To Halt a Program While It Is Running 15 Apple RAM disk nnise wt 9 ATARERANM diSK n ricis rn rie ree vie Tea ERE cU EROR EO e 16 ProDOS ch Ibat esd nti end pudet do MIS ed De Pete dV ae ited 16 DOS 2 5 17 Help eerte 18 Special Characters Apple Il 18 List of Editor Commands 18 List of Compiler Assembler Commands we 19 Assembler Compiler Options ATARI 19 OtherComMands wn D 19 PART I SAMPLE PROGRAMS ina tte tete bee bee 20 EGOPROGRAM 5 Ire cest i ere P ERO E p P RE A Pa ER E aT Eee rad Program Statement and Reserved Words Declaration and Program Body sssssssssssssssseeeeeneenneeeennnee nnne Analysis of Ego iot ade e RE eee etse bene dede iade ae CONSTRUCTION PROGRAM iet itp e d ee tpe ede eb toe n EP t Pe ou n 21 Analysis of Construction icr de E Le edes 21 AIGO Stic EET DCN ODIT DM OE TD 21 Identifiers 21 Write and Read Commands 22 Input Output and Printing the Output 22 Readlri 4i ette 22 CONST RICH Die tme EE etae ee kite best vest eis RE Al
87. r detection continues and all the errors are displayed at one time One final reason for using PASCAL is its portability PASCAL one of today s most popular languages is implemented on nearly every computer on the market Kyan PASCAL is compatible with standard PASCAL Programs and program modules written in Kyan PASCAL using standard procedures and functions will run on a multitude of computers a programmer can develop software on a home computer transport it to many other machines and run the programs immediately Scanned amp Re Edited by GoodByte in 2005 P 2006 8 Kyan PASCAL Version 1 0 EDITOR AND COMPILER INSTRUCTIONS Kyan PASCAL consists of two programs the editor program ED and the compiler assembler program PC When your Apple ATARI is booted to boot the ATARI push the lt OPTION gt key during power up with a KyanPASCAL disk in the drive the following will be displayed KYANPASCAL VERSION 1 0 COPYRIGHT 1985 BY KYANSOFTWARE 1850 UNION STREET SUITE 183 SAN FRANCISCO CA 94123 gt If you have an Apple Il to transfer the editor program from the disk to memory type ED gt ED followed by RETURN Striking the RETURN key tells the computer that you have completed your command If you have an ATARI to transfer the editor program from disk to memory type D1 ED 2D1 ED followed by RETURN All commands that require disk access on the ATARI must have the prefix D1 which stands for disk dri
88. racter in the array Length a nonstandard function returns the length of a String For example suppose PROGRAM MyExample CONST Maxstring 10 10 as an example TYPE String ARRAY 1 Maxstring OF Char VAR S String i Length BEGIN s abcd IF Length s 4 THEN Writeln This is true END The Length function can be used in a Write statement as follows to eliminate the trailing blanks in a string appearing in the output Writeln S Length S Concat Concat is an abbreviation of concatenate which means to put two strings together to produce a third If S1 ANY and S2 BODY then S8 ANYBODY where the program calls Concat S1 S2 S3 Scanned amp Re Edited by GoodByte in 2005 P 2006 64 Kyan PASCAL Version 1 0 Index Index is a function that returns the position of one string within another If Index is used to find the position of S1 a in S2 baby then the following statement is true Index 1 S2 2 If the S2 is not found in S1 then the value of Index 0 Substring Substring extracts part of a string indicated by its two indices m and n If a string of length 1 is to extracted from S1 abcd starting at the second position then the value for Substring would be b S Substring S1 2 1 7 b This has a true value Scanned amp Re Edited by GoodByte in 2005 P 2006 65 APPENDIX A COMPILER ASSEMBLER AND RUN TIME ERROR MESSAGES Compiler Er
89. ram The record field DateRec Month could have been the scalar type JAN FEB DEC but this would not have enabled a direct comparison with the input which is in the form of strings JAN FEB DEC This is because JAN a string is not equal to JAN an identifier Arrays of Records Suppose the quality control department of a company wished to calculate the failure rate of each of the parts in a gearbox or some other machine Although 5000 of these machines were built only 500 of them have come back for service The first step in such a program would be to declare an appropriate array of records To construct an array of records the following format is used TYPE Array Type ARRAY Subscript Range OF Record Type VAR Array Variable Array Type A particular element in such an array can be specified as follows Array Variable Subscript Field In the program below Failures the array is a set of records consisting of the serial number Serial Num the gear number Gear the date of failure FailDate and the date the gearbox was put into service StartDate Failures is used to calculate the time between when the unit was placed in service and when a part failed SurviveTime is a function similar to the program ElapsedTime which was previously discussed PROGRAM Failures Input Output CONST GearCount 50 50 parts in gearbox FailCount 500 MachCount 5000 TYPE DateType RECORD Month 0 12 Day 0 31
90. rd1 Initial Word2 Word1 Word2 8 s Writeln Word2 END In this program Word2 is given the value Initials with eight blanks Scanned amp Re Edited by GoodByte in 2005 P 2006 45 Kyan PASCAL Version 1 0 RECORDS Some kinds of data are most conveniently handled as a mixture of several types An example of mixed type data is the date January 1 1987 is a string of characters followed by two Integers PASCAL allows the user to define mixed data types as records TYPE DateType RECORD Month ARRAY 1 10 OF Char Day Integer Year Integer END DateType VAR DateRec DateType DateType is the identifier of a record type with three fields and DateRec is the identifier of a variable of the type DateType The general form of the declaration of a record and its fields is TYPE Identifier RECORD field1 type1 field2 type2 field3 type3 etc END The last field in a record does not need to be terminated by a semicolon The three fields in the record DateType are Month Day and Year The statement below is one way to refer to a record variable It uses the form identifier field Writeln DateRec Year 5 0 Another way to refer to record variables is to use the WITH statement WITH DateRec DO BEGIN ReadIn Month Readln Day Readln Year END WITH DateRec All three record variables are read using the WITH format Copying a Record If two records are of the same type it
91. read from or write to a file without starting from the first position The only memory space reserved for file variables is for the file buffer variable If List1 is a file of Integer List1 will be assigned two bytes This is because a file exists outside the memory space of the computer Program Store List The following program stores the Integers 11 to 45 in a file named List PROGRAM Store Input Output Listl VAR List1 FILE OF Integer J Integer BEGIN Rewrite List1 FOR J 11 TO 45 DO BEGIN List1 J Put List1 END END Reading a File Before a file can be read it must be opened for reading This requires use of the command Reset Reset List1 Because Apple ProDOS uses the pathname to call files Kyan PASCAL has been extended to include an optional pathname as well as the PASCAL file identifier in Reset The pathname may be a string constant Reset List1 Dir1 Lst or the pathname may be an array of characters Reset List1 a The first element read is always the first element that was entered just as a file must be written from beginning to end it must be read sequentially In addition reading requires that the values of the elements be assigned to a file buffer variable J List1 Scanned amp Re Edited by GoodByte in 2005 P 2006 53 Kyan PASCAL Version 1 0 A Get statement must be used to get all elements of the file after the first one Thus if J is the first element of
92. reas a procedure may return as many values as there are variable parameters listed When a function is used in a program a separate statement to call it up is not required For example CsLaw can be called up by relational or arithmetic statements such as the following E 1 CsLaw H1 W1 Ang1 Sin AngX A procedure however does require a separate statement e g OtherVal A B C D This is because the identifier of a function has some value viz the result but the identifier of a procedure does not have a value Scanned amp Re Edited by GoodByte in 2005 P 2006 36 Kyan PASCAL Version 1 0 The Function Odd The function Odd parameter returns the value True when the parameter is odd or the value False when the parameter is even It is important that the parameters used with Odd be of the type Integer For example if the variable Number equals 3 then Odd Number True Thus this function turns Integer data into Boolean data Global and Local Variables When a variable is declared in the main program it is called a global variable When a variable is declared within a function or procedure it is called a local variable Parameters are neither local nor global variables although they are used to pass values of global variables to and from the procedure PROGRAM Alpha Input Output VAR A1 Real A3 A4 Char PROCEDURE Other VAR AA1 Real AA3 Char VAR BB1 Integer BEGIN A4 z Y A4 is global BB1
93. ror Messages 1 syntax error 2 unexpected end of input 3 array dimension expected 4 to or downto expected 5 type specification expected 6 ordinal type expected 7 expected 8 expected 9 expected 10 or end expected 11 compiler directive expected 12 do expected 13 end expected 14 expected 15 identifier expected 16 expected 17 constant expected 18 expected 19 0f expected 20 type identifier expected 21 expected 22 program expected 23 expected 24 expected 25 expected 26 expected 27 then expected 28 unsigned integer expected 29 file name expected 30 can t open file 31 illegal file name 32 or until expected 33 missing end statement s 34 extraneous end statements 35 or case expected Run Time Error Messages 1 bad subscript 2 too many active files Maximum is 5 files 3 file not active 4 set element out of range 5 heap overflow 6 bad In arguement 7 bad exp arguement 8 read past eof End of File 9 out of memory 10 arithmetic overflow Assembler Error Messages 1 A addressing mode error 2 L label required with EQU 3 M multiply defined symbol 4 U undefined expression 5 0 unrecognizable opcode 6 S syntax error 7 J branch address is out of range 8 F symbol table overflow Scanned amp Re Edited by GoodByte in 2005 P 2006 Kyan PASCAL Version 1 0 66 APPENDIX A Cont ProDOS Error Messages FILE TYPES file type Preferred Use 00
94. rsor to the bottom of the file Many Apple and ATARI computers have cursor arrow keys You may also use these to move the cursor right or left one space and up or down one line If you hold the cursor keys pressed down the cursor movement will be repeated until you release the keys Scanned amp Re Edited by GoodByte in 2005 P 2006 10 Kyan PASCAL Version 1 0 Delete Commands To delete a letter word or line use the following commands AG delete the letter coincident to the cursor Q delete the letter to the left of the cursor Y delete the line in which the cursor is positioned The delete key DEL if present accomplishes the task as Q Find String and Change String Search and Replace A string is a combination of characters letters numbers and symbols and spaces A string may be a certain word or a group of words Sometimes you may wish to find a certain string within a program Or you may wish to replace a string with another string lt ESC gt enter the special editor functions A set A designate the string to be found B set B designate the replacement string C change A string to B string W search from cursor forward to end of file AZ search from cursor back to beginning of file To find the occurrence of any string enter lt ESC gt A and the editor will prompt A Next enter the string to be found For example if look out is to be found enter look out followed by a carriage ret
95. s copyright and ownership of these portions in a prominent location on the magnetic media and in the written documentation for your software Please contact Kyan Software Inc for more information E This license is effective until terminated You may terminate it at any time by destroying the Program and documentation with all copies modifications and merged portions in any form It will also terminate if you fail to comply with any term or condition of this Agreement You agree upon such termination to destroy the Program and documentation together with all copies modifications and merged portions in any form COPYRIGHT NOTICE Kyan Software believes you should be aware of your rights under the U S Federal Copyright Law We quote for you the provisions of Section 117 of the Copyright Law which contains limitations on the rights of copying and adaptation given to owners of computer programs Not withstanding the provisions of Section 106 it is not an infringement for the owner of a copy of a computer program to make or authorize the making of another copy or adaptation of that computer program provided 1 that such new copy or adaptation is created as an essential step in the utilization of the computer program in conjunction with a machine and that it is used in no other manner or 2 that such new copy or adaptation is for archival purposes only and that all archival copies are destroyed in the event that continued possession of the
96. t operator IN is used to examine the members of an array that contains all of the test scores of a student in a mathematics class This process is repeated for all of the students in the class By outputting the total number of tests failed or postponed by students in the class the program aids in evaluating overall class performance PROGRAM TestGrades Input Output CONST ClassSize 30 TYPE GradeType A B C D F I P NP GradeSet SET OF GradeType StuGrades RECORD StudentID Integer Grades ARRAY 1 25 OF GradeType END RECORD VAR ClassGrades ARRAY 1 ClassSize of StuGrades N M I Integer BEGIN Statements would be inserted here to input class grades 1 2 0 GradeSet F NP I FOR N 1 TO ClassSize DO FOR M 1 TO 25 DO IF ClassGrades N Grades M IN GradeSet THEN 1 1 Writeln In this class 1 3 tests were Writeln either failed not passed or put off END FILES In PASCAL files are the means of input and output of data A Read or Readln statement calls for input a Write or Writeln statement produces output When information is entered at the keyboard it goes into a PASCAL file called Input When information is output to the display it is sent to a file called Output Files can also be used by the programmer as a data type What programmer created files have in common with Input and Output files is that they are sequential and that information is read to them and written from them one e
97. t the keyboard is 123 RALPH lt RETURN gt and that X1 is Char type Then X1 equals 1 The remaining characters and lt RETURN gt are lost If X1 is of the type ARRAY 1 9 OF Char then X1 equals 1 2 3 R A L P H only the RETURN is lost Finally if X1 is of the type Integer then X1 equals 123 and the remaining characters and the RETURN are lost Note the preceding data types will be fully discussed in later sections of the manual Suppose we wish to assign the input data 123 and RALPH be assigned to two variables X1 and X2 respectively Let X1 be of type Integer and X2 be an array 1 6 of type Char Then Read X1 followed by Read X2 will accomplish this task The Read statement differs from the Readln statement in that any input data not of the type of the variable in parentheses is left over for the next Read or Readln statement Because the remaining characters up to and including the RETURN are not cleared after Read X2 above the RETURN will be read as the first entry in the next Read or Readln statement In most programs this is not desirable This problem could be corrected by changing the statement to ReadIn X2 An alternate method of assigning data to these variables would be Readln X1 X2 Scanned amp Re Edited by GoodByte in 2005 P 2006 23 Kyan PASCAL Version 1 0 Real and Integer Data Types Real numbers in PASCAL are positive or negative numbers represented in scientific floating poi
98. tc PROGRAM Example2 Input Output CONST MaxLetters 15 MaxWords 6 TYPE String ARRAY 1 MaxLetters OF Char WordArray ARRAY 1 MaxWords OF String VAR WordMatrix WordArray WordIndex Integer PROCEDURE Exchg VAR WordMatrix WordArray Wordlndex Integer VAR C String Scanned amp Re Edited by GoodByte in 2005 P 2006 43 Kyan PASCAL Version 1 0 BEGIN C WordMatrix WordIndex WordMatrix WordIndex WordMatrix WordIndex 1 WordMatrix WordIndex 1 C END Procedure Exchg PROCEDURE ShAlph VAR WordMatrix WordArray Alphabetize word list lt 6 words VAR Wordlndex Integer Exchanged Boolean BEGIN REPEAT Until all words are in order Exchanged False All words are in order if none need to be exchanged FOR Wordlndex 1 TO MaxWords 1 DO IF WordMatrix WordIndex gt WordMatrix WordIndex 1 THEN BEGIN FOR Loop Test all in WordMatrix ExChg WordMatrix WordIndex Exchanged E True END IF UNTIL Exchanged False END Procedure ShAlph BEGIN Main Program Writeln Enter six words each with a maximum of Writeln 15 letters After each word press the Writeln RETURN key Wordlndex 0 REPEAT Wordlndex WordIndex 1 Write Word number WordIndex 3 is ReadIn WordMatrix WordIndex UNTIL WordIndex MaxWords ShAlph WordMatrix Writeln Writeln Alphabetized Words FOR Wordlndex 1 TO MaxWords DO BEGIN Writeln Writeln Word
99. te TextFileName Identifier can take the place of TextFileName Identifer Put TextFileName If no text file name is included in a Read or Write statement the file accessed will be Input or Output respectively Note some PASCAL compilers will give an error message if no text file name is given and Input and Output have not been declared Scanned amp Re Edited by GoodByte in 2005 P 2006 54 Kyan PASCAL Version 1 0 Files of Records Most files are files of records In the following example the status of each truck in a company s fleet is kept in a file called BigRigFile PROGRAM Trucks Input Output BigRigVar TYPE String ARRAY 1 16 OF Char TruckType Record NextSrvc Integer ID String Status OnRoad MachShop END TruckType BigRigFile FILE OF TruckType VAR BigRigVar BigRigFile S1 String BEGIN Body of Trucks Program Reset BigRigVar WHILE NOT EOF BigRigVar DO BEGIN Writeln Writeln Truck ID IF BigRigVar Status OnRoad THEN 1 Ontheroad ELSE S1 In the shop 5 Writeln Status is S1 Next Service is NextSrvc 7 Get BigRigVar END WHILE LOOP END Random Files Although standard PASCAL does not include random access files there are many instances where a program might wish to access only part of a file and that part might be in the middle of a file or at the end making sequential access very slow Most files in Kyan PASCAL have been cha
100. ters Scanned amp Re Edited by GoodByte in 2005 P 2006 21 Kyan PASCAL Version 1 0 Write and Read Commands Write Writeln Read and Readln short for read line commands pass information to and from the computer Read and Readin enter data from the keyboard into the computer Write and Writeln send data to the screen or printer The terms Input and Output should appear in parentheses after the program name to tell the compiler that data will be transferred into and out of memory Input and Output and Printing the Output After the program Construction was named the two standard PASCAL terms Input and Output appeared in parentheses Technically the compiler sees these terms as identifying files PROGRAM Average Input Output Files allow information to go to and from places outside the directly addressable memory space of the computer In this implementation of PASCAL information input at the keyboard goes into the Input file and information output to the CRT goes into the Output file It is also useful to be able to define the output as the printer The non standard Kyan PASCAL procedure PR n is used with the Apple Computer while PRON and PROFF are used with the ATARI Computer Include PR I which contains these procedures in the declaration part of the program For example in the preceding program PROGRAM Construction Input Output CONST Material 325 0 VAR Hours Rate Labor Total Real 1 PR include
101. the decimal point Finally two spaces are reserved for the digits following the decimal If a number has fewer digits than the number of spaces reserved for it the correct number will appear but the compiler will fill in the extra spaces with blanks or zeroes If a number in decimal format has more digits than the number of spaces reserved for it a run time error will occur Programmers must think ahead when using the decimal format Run time errors also occur when a number is out of range For example if X is an Integer that has the value 32800 an error will occur Real numbers are limited to 13 significant digits Writing a format that reserves more than 13 spaces for a Real number will not make the number more accurate The computer will present the correct number with the digits beyond 13 filled in with blanks or zeroes On the other hand calling for fewer than 13 digits does not take advantage of all the accuracy available Trunc Round and Maxint The truncate function Trunc takes a decimal or floating point number and disposes of the non Integer portion leaving an Integer value Round gives the integer value closest to the floating number by adding 0 5 before truncating For example Trunc 5 9 5 Round 5 9 6 Trunc 75 3E 01 7 Round 75 3E 01 7 The maximum size of any Integer number is 32767 or 32767 Trunc or Round will cause an error if either operates on a Real number larger than 32767 Maxint is the sta
102. tice how the variables are listed after the reserved word VAR Real although not a reserved word is predefined and specifies that all the variables that precede it are Real numbers The first statement in the program body writes the following line on the screen Enter hours worked and rate of pay The second statement reads the values for Hours and Rate which the user enters on the keyboard Once these values are known the Labor and Total costs can be calculated by the third and fourth statements in the program body The final statement in the program body writes the Labor and Total costs on the screen Algorithm Step 1 Get the values of hours worked Hours and rate of pay Rate Step 2 Multiply Hours times Rate to get the cost of the labor Labor Step 3 Add Material to Labor to get the total cost Total Step 4 Output the Labor and Total costs Identifiers An identifier is a name It can be the name of a PASCAL program or program subsection or it can be the name of some quantity that is used in a PASCAL program Just as in algebra we can define a constant C 7 5 in PASCAL we can say CONST C 5 The rules for constructing an identifier are 1 it must start with a letter A Z or a z and 2 any combination of letters and numbers may follow Although more than 8 characters may be used only the first 8 will distinguish one identifier from another The compiler does not distinguish between upper and lowercase let
103. tion Sqr X returns the value of X squared when given some value of X Thus when X equals 12 Sqr X equals 144 A few of the most commonly used mathematical functions are included in KyanPASCAL X is a Real number or Integer Abs X Absolute value of X Sqr X The square of X Sqrt X The square root of X Sin X The sine of X X is in radians Cos X The cosine of X X is in radians Arctan X The arctangent of X result is in radians Ln X The natural logarithm of X Exp X e raised to the power X Additional functions can be defined by the user Declaring Functions A user defined function is a simple procedure that uses only value parameters The elements of a function are illustrated below They include the function name Cosine Law CsLaw the formal parameter list A B Theta Real the result type Real the local declaration VAR C Real and the function body BEGIN END PROGRAM Trig Input Output VAR E H1 W1 Ang1 AngX Real FUNCTION CsLaw A B Theta Real Real Returns the length of side C opposite the angle Theta VAR C Real BEGIN C A A B B CsLaw C 2 0 A B Cos Theta END PROCEDURE BEGIN Readin H1 W1 Ang1 AngX E 1 0 CsLaw H1 W1 Ang1 Sin AngX END PROGRAM Trig Like value parameters in procedures the parameters of a function do not change their values outside the function The function returns only a single value the result CsLaw whe
104. tional Operators There are six relational operators that may be used to decide which of two branches will be taken within a program One branch is taken if the relationship is true the other if it is false The six relational operators are equal to lt gt not equal to lt less than gt greater than lt less than or equal to gt greater than or equal to In the program Social Security IF the condition is true THEN the tax for the present pay period TaxNow must be recalculated Otherwise the program skips the recalculation steps Scanned amp Re Edited by GoodByte in 2005 P 2006 25 Kyan PASCAL Version 1 0 The IF THEN Statement Notice in the program above that there are two program steps following the IF statement These are grouped between a BEGIN END pair so that both will be performed when the IF statement is true Otherwise only the first statement TaxNow would be associated with IF true and the second statement TaxToDate would be outside IF THEN control and would be performed regardless For program clarity the comment IF true has been placed to signify the end of the program branch that will be executed if the condition is true Sometimes it is necessary to include some program statements for when the IF condition is False These are added after the reserved word ELSE IF TaxToDate TaxNow gt TaxMaximum THEN BEGIN TaxNow TaxMaximum TaxToDate TaxToDate TaxMaximum END IF tr
105. type and a scalar type In fact the scalar type Numbers has the same range of values for its elements as the elements members of the set type NumType TYPE Numbers 10 25 NumType SET OF Numbers VAR Prime NumType NotPrime NumType Prim Numbers NotPrim Numbers Numbers differs from NumType in that the elements in a scalar type are ordered whereas they are not ordered in a set This allows the declaration of sub ranges of scalar types such as TYPE FirstQt Jan Mar a sub range of TYPE Year The differences between Prime and Prim are twofold 1 Scalar variables such as Prim can have only one value at a time whereas set variables can include 0 to 256 values 2 The set operations may be applied to Prime but not to Prim For example if all the prime Integers and all the non prime Integers from 10 to 25 were to be listed the list would be exactly all the Integers from 10 to 25 This is equivalent to the PASCAL statement below where FullSet has been declared to be of the type NumType FullSet Prime NotPrime Scanned amp Re Edited by GoodByte in 2005 P 2006 50 Kyan PASCAL Version 1 0 Operations on Sets There are three basic operations on sets Union Intersection and Difference Consider the following program PROGRAM Assign TYPE Numbers SET OF 1 VAR Prime Numbers Odd Numbers Test Numbers BEGIN Prime 1 2 3 5 7 Odd 1 3 5 7 9 The two sets Prime and Odd may
106. ual and Formal ias Variable and Value Parameters sessssssssseeeseeeeerenee eterne Correspondence Between Actual and Formal Parameters eodeni endet 36 Functions m Declaring Functions cs isha cr eee eve e e vr aaa The Function Odd cccccecccceeeneeeceseeeeeeneeeeeaeeesaeeeseaaeeeeaaeeeeeaeeeeeaeeesseaeeseeieeneeneeeess Global and Local Variables Nesting of Functions and Procedures bit Globaland Local Types e nee niet eee aedes Forward References sc ee d dental eee eda ee oe e ede ad elves Unconditional Branch GOTO sssssssssssssseeeeeeeeene ennemi nnne ARRAYS nte peg ed ni i 40 Arrays of Arrays and Multidimensional Arrays sse 41 Adding Two Multidimensional Arrays 2 42 The Array As a Parameter sssssssssssssssseeeeeeneeeeneee eene nennen nnne 42 Program Examplef uec etre tkt oben ka ee ren cR eb re Red 42 Program Example2 s 438 End of Line ied teehee eles es 44 Recursive Functions and Procedures we 45 Gopying Arrays 3 nene eth eit e ete e vedi P Tre ie par evaessaez diene 45 BECORDS 52110 bte rahe MI IN a LM M t eM on 46 Copying RREGOP d ede erae Re cer dae RNC Spa Re ek aer ra he dee 46 Program Absolute 47 Program ElapsedTime es AT Arrays of Records a oui eee esed se elo ese 48 rd rcc E 49 Variant Records eed eit deed oe aene ee ena dia ede e de 49 SETS aite 5
107. ue ELSE IF false TaxToDate TaxNow TaxToDate The statement following ELSE will only be executed if TaxToDate TaxNow gt TaxMaximum is false There is no semicolon after END IF true above It is incorrect to terminate the statement preceding ELSE with a semicolon The Assignment Statement Although the equal sign was listed above as a relational operator the difference between equal and the assignment operator might not be clear If we examine an assignment statement from another program the difference becomes clear AgeNow Birthdays AgeNow This statement is meant to recalculate the variable AgeNow The old value of AgeNow is on the right and the new value of AgeNow is on the left In general when the assignment symbol is used the result is on the left The equal operator is used almost exclusively to determine which of two branches will be taken following a conditional statement The only time the equal operator is used like an assignment statement is ina CONST declaration ALPHABETIZE PROGRAM This program illustrates the use of data in the form of words It finds the alphabetically first word on a list and counts the total words in the list Since the size of the list is not known in advance a signal word stop is used to indicate the end of the list PROGRAM FirstWord Input Output This program selects the alphabetically first word and counts the total words tested CONST S
108. urn A look out lt RETURN gt The final two steps are to leave the special editor functions mode by typing the lt ESC gt key and then typing W or Z The cursor will go to the first occurrence of look out ahead of the present cursor position To find the second occurrence enter Z again This process can be repeated until all occurrences of look out have been found Maximum string size is 40 characters To substitute a new string for any string both the old A string and the new B string must be designated Use the A and B commands listed above The A string consists of the words or lines the way they are before the substitution The B string consists of the new words or lines that will take their place When both strings have been set type the C command The editor will prompt CHANGE ALL STRINGS OR SOME A S Q Choose S to have the editor stop at each possible string and question whether or not to make that substitution Choose A to replace all strings in the file Choose Q to quit without making any substitutions Substitutions always start at the top of the file and continue to the end To replace the string first with the string 1 everywhere in the file follow these steps 1 Type lt ESC gt A 2 Prompt appears A 3 Type first lt RETURN gt 4 Type B 5 Prompt appears B 6 Type 1 RETURN 7 Type C 8 Prompt appears CHANGE ALL STRINGS OR SOME A S Q 9 Type A Scanned amp
109. us allow all the data to be retrievable PROGRAM Pinter Input Output TYPE String ARRAY 1 15 OF Char TimeType Hr Min Day Mon Yr Appointer AppointRec Pointer Type AppointRec RECORD Link Appointer Person String Time ARRAY TimeType OF Integer END AppointRec RECORD VAR Appointm Pt Appointer Pointer Variables BEGIN Pt NIL New Appointm Appointm Person Ernie Appointm Link Pt Pt Appointm New Appointm Appointm Person Bob Appointm Link Pt Pt Appointm New Appointm Appointm Person Gina Appointm Link Pt END The list of appointments is now retrievable because the next pointer i e the linking pointer is included in each record as the pointer field Link The standard PASCAL identifier NIL is used to indicate the last element in the list Records are linked backward first in last Out NIL indicates the last element to be retrieved Pointer Link NIL Scanned amp Re Edited by GoodByte in 2005 P 2006 58 Kyan PASCAL Version 1 0 In the program above Appointm points to the first name to be retrieved Appointm Link points to the second and Appointm Link Link NIL points to the third The following statements output the names contained in the three linked records WHILE Appointm NIL DO BEGIN Writeln Appointm Person Pt Appointm Link Appointm Pt END WHILE Dispose Dispose Appointm
110. ve 1 If you have more than one disk drive this prefix can change to D2 D3 etc The prompt symbol gt is a signal from the program in this case from Kyan PASCAL that the computer is waiting for your command Unless instructed otherwise you should always press RETURN when entering commands into the computer Your Apple ATARI computer will search for the editor and load it When loading is completed the following message will be displayed PATHNAME FILE NAME if your computer is an ATARI Addition by GoodByte Using a different DOS capable of handling subdirectories will also require a pathname Please keep this in mind while studying this manual Creating a File an Example Suppose the name of your program is TRIAL enter PATHNAME TRIAL FILE NAME D1 TRIAL if your computer is an ATARI Because the program trial is new the editor will prompt FILE NOT FOUND PRESS ANY KEY When you press any key the screen sill become blank Notice that there is no prompt All entries that you make will become part of your program file TRIAL just as you see them on the screen Enter a string of six X XXXXXX Follow the instructions in the next section to save TRIAL 1 Trademark of Apple Inc 2 Trademark of ATARI Inc Scanned amp Re Edited by GoodByte in 2005 P 2006 9 Kyan PASCAL Version 1 0 End of Editing The first step in ending editing is to press the lt ESC gt key This will put you in a mode in which
111. ve the variable Continue can be either True or False Whether Continue is true or false is determined by the assignment statement where Continue is True when Answer is Y or y Subrange Types The subrange type is a form of the scalar type where only the first and last value or item within the range have to be specified For example if the variables Component IC and Resistance are to take on a range of values and each of the possible values is known from the beginning of the program then they might be declared as follows TYPE CompType Resis Cap Trans Diode OpAmp Rgltr Osc GateArray Trnfr Coil ResRange 1 100 ICrange OpAmp GateArray VAR Component CompType Resistance ResRange IC ICrange Both ResRange and ICrange in this example are subrange types CompType is a scalar type ResRange is a subrange of the Integer type ICrange is a subrange of CompType declared before it Although ResRange is an example of a subrange of the type Integer scalar types of the type Integer are not permitted This restriction precludes the inadvertent redefining of a predefined type CASE OF Sometimes especially in programs that use scalar type variables a series of IF THEN tests may need to be employed To take the place of these tests the CASE OF statement may be used The following are equivalent CASE Digit OF 0 Number 0 1 Number 1 END IF Digit 0 THEN Number 0 ELSE IF Digit 1 THEN
112. ware from Kyan If you have any questions or suggestions for improvement please let us know We are always striving to improve our software and we welcome comments both good and bad from our customers We hope to hear from you rs P O TEE sk Thomas E Eckmann President Kyan Software kyan software 1850 union street 183 san francisco california 94123 415 775 2923 Scanned amp Re Edited by GoodByte in 2005 P 2006 2 Kyan PASCAL Version 1 0 LICENSE AGREEMENT When you purchase and use Kyan PASCAL you acknowledge that A Kyan Software Inc has a valuable proprietary interest in this Program and documentation you are receiving a limited non exclusive license to use the Program and documentation and Kyan Software Inc retains title to the Program and documentation B You may not copy or reproduce the Program or documentation for any purpose other than to make backup copies as provided for under U S Federal Copyright Law C You your employee and or agents may not distribute or otherwise make the Program or documentation available to any third party D If the Runtime Library or any other portion of this Program is merged into or used in conjunction with another program it will continue to be the property of Kyan Software Inc However Kyan Software Inc hereby grants you a non exclusive license to merge or use portions of the Program in conjunction with your own programs provided that you acknowledge Kyan Software
113. wish the block to be inserted Type P and the block will be pasted in the new position These commands are sometimes called cut and paste As many copies as you wish may be pasted The block move commands are first O marks the start of block second O marks end of block and puts block into memory cut AP insert the block paste Editing HELLO an Example Enter ED PATHNAME HELLO or D1 ED FILE NAME HELLO ATARI Version Next enter the following program PROGRAM HELLO BEGIN WRITELN Hello world END Follow the instructions in the following two sections to run the program HELLO Scanned amp Re Edited by GoodByte in 2005 P 2006 12 Kyan PASCAL Version 1 0 Compiling a File Before a PASCAL program can be run it must be compiled and translated into machine language Compiling the file is the first part of this process The second part is called assembling The result of compiling your PASCAL source code file is called the assembly code file This must further be translated into numerical code by the assembler and its result is called the object code These terms will be used below To compile and assemble a program exit the editor using lt ESC gt X Enter the compiler assembler program by typing PC followed by lt RETURN gt gt PC lt RETURN gt gt D1 PC RETURN if your computer is an ATARI The disk drive light will go on and when the compiler assembler program has been loaded the PC gt prompt w
114. you can use the special editor functions A help menu will be displayed To leave this mode and resume normal editing press the lt ESC gt key again If you wish to save TRIAL the example program above type lt ESC gt S This is one of the three ways to end editing lt ESC gt S Save and Resume lt ESC gt Q Quit without Save lt ESC gt X Save and Exit If you typed lt ESC gt S you saved the program you were editing and have returned to the editor so that you could add more lines If you typed lt ESC gt Q none of the changes or entries you did were saved You just quit and left the file in the state it was before you started editing If you typed lt ESC gt X the prompt gt reappeared because you saved your changes left the editor to edit a different program or to compile Remember before creating or saving programs you should make backup copies of your KyanPASCAL disk If you own an ATARI you can re enter the editor by typing I and Return after the prompt Files Pathnames and File Names Programs such as the TRIAL program above are stored in separate files Each program added to the disk must have its own path or file name An Apple pathname consists of 64 or fewer letters and or characters An ATARI file name consists of DI followed by an 8 character name followed by a 3 character extension e g D1 XXXXXXXX YYY Spaces are not permitted within either pathnames or file names PASCAL names i e names of
Download Pdf Manuals
Related Search
Related Contents
MODE D`EMPLOI - Support User`s Manual 取扱説明書 (326.54 KB/PDF) 取扱説明書 - 大建工業 AURILLAC 2009 - Communauté d`Agglomération du Bassin d`Aurillac Standard Horizon Fan TL-31 User's Manual INSTALLATION INSTRUCTIONS Weider WEEVSY30810 User's Manual aplat - L`Harmattan here - Newcastle University Copyright © All rights reserved.
Failed to retrieve file