(*$A+,U+,L'COMPILER FOR PASCAL-6000.' *) COMP 2 COMP 3 COMP 4 (********************************************************************* COMP 5 * * COMP 6 * * COMP 7 * COMPILER FOR PASCAL-6000 * COMP 8 * ************************ * COMP 9 * * COMP 10 * * COMP 11 * (FOR CDC 6000/7000, CYBER 70,170,700,800 SERIES COMPUTER SYSTEMS) * COMP 12 * * COMP 13 * * COMP 14 * AUTHOR: URS AMMANN * COMP 15 * INSTITUT FUER INFORMATIK * COMP 16 * EIDG. TECHNISCHE HOCHSCHULE * COMP 17 * CH-8092 ZUERICH * COMP 18 * SWITZERLAND * COMP 19 * * COMP 20 * RELEASE 1 - URS AMMANN. * COMP 21 * 1974 MAY ORIGINAL RELEASE IMPLEMENTING THE REVISED PASCAL * COMP 22 * REPORT. KNOWN AS PASCAL 6000-3.4. GENERATE * COMP 23 * RELOCATABLE CODE; REMEMBER REGISTERS. * COMP 24 * UPDATES 1-10 - URS AMMANN. * COMP 25 * 1974-1975 CORRECT ERRORS. * COMP 26 * * COMP 27 * RELEASE 2 - URS AMMANN AND JOHN P. STRAIT. * COMP 28 * 1976 MAR IMPROVE PERFORMANCE; PROVIDE DIAGNOSTIC SUMMARY * COMP 29 * UPDATES 1-2 - URS AMMANN. * COMP 30 * 1976 CORRECT ERRORS. * COMP 31 * * COMP 32 * MAINTENANCE ASSUMED BY ANDY MICKEL AND JOHN P. STRAIT * COMP 33 * 1977 JAN UNIVERSITY COMPUTER CENTER * COMP 34 * UNIVERSITY OF MINNESOTA * COMP 35 * * COMP 36 * RELEASE 3 - JOHN P. STRAIT. * COMP 37 * 1979 JAN IMPLEMENT CHANGES WHICH WILL BECOME STANDARD: * COMP 38 * NEW TYPE-COMPATIBILITY RULES, ETC. IMPROVE * COMP 39 * RUN-TIME CHECKS, USABILITY; CORRECT ERRORS. * COMP 40 * UPDATES 1-4 - JOHN P. STRAIT, ANDY MICKEL, RICK L. MARCUS, * COMP 41 * AND DANIEL E. GERMANN. * COMP 42 * 1979-1982 CORRECT ERRORS. * COMP 43 * * COMP 44 * RELEASE 4 - DAVE BIANCHI, DANIEL E. GERMANN, * COMP 45 * ANDY MICKEL, AND JIM MINER. * COMP 46 * 1984 JUN IMPLEMENT CHANGES FOR ISO 7185 PASCAL STANDARD, * COMP 47 * DYNAMIC MEMORY MANAGEMENT, OPTIMIZATIONS, * COMP 48 * AND STANDARD CONTROL STATEMENT; CORRECT ERRORS. * COMP 49 * WORK SUPPORTED IN PART BY CONTROL DATA GRANTS. * COMP 50 * * COMP 51 * * COMP 52 * THIS COMPILER IS THE PROPERTY OF THE INSTITUT FUER INFORMATIK, * COMP 53 * E.T.H., ZUERICH, SWITZERLAND. CONTROL DATA CORPORATION HAS THE * COMP 54 * NON-EXCLUSIVE RIGHT TO DISTRIBUTE IT. * COMP 55 * * COMP 56 *********************************************************************) COMP 57 (*$L'MODIFICATION HISTORY.'*) COMP 58 COMP 59 HCOMP 1 (* PASCAL-6000 MODIFICATION HISTORY. HCOMP 2 * HCOMP 3 * CHANGE PREDECLARED FUNCTION "OFFSET" TO "RELVALUE". V410C01 6 * CORRECT MISTAKE IN FOR STATEMENT RANGE CHECKING FOR CONSTANTS. V41FC02 6 * FIX PROBLEM WITH COMPILER COMMAND PROCESSING. V41FC01 7 * FIX BUG WHERE "/L+" ON CONTROL STATEMENT TURNS OFF LISTING. V41EC08 5 * AVOID TRASHING FUNCTION RESULT. V41EC02 7 * CREATE PMD FILE AS "OUTPUT" IF OUTPUT NOT USED AND (PMD <> PMDNONE). V41DC06 10 * CHANGE CONTROL STATEMENT PROCESSING. V41DC05 191 * ADD NEW PREDECLARED ORDINAL FUNCTION OFFSET. V41CC21 8 * ADD RANGE CHECKS TO CHR, SUCC, AND PRED. V41CC21 9 * CHANGE CHECKS FOR FORWARD DECLARATIONS AND UNDECLARED PROG PARAMS. V41CC20 10 * ALLOW UNDERSCORE CHARACTERS IN IDENTIFIERS. V41CC18 10 * FIX BUG IN STRINGPARAM TO HANDLE PACKED STRINGS. V41CC15 6 * DETECT AND ABORT ON EMPTY INPUT FILE. V41CC12 5 * DISALLOW STRING-COMPARE PROCESSING OF CONFORMANT ARRAY PARAMS. V41CC11 7 * FIX PROBLEM WHERE MULTI-DIMENSIONAL ARRAYS ARE NOT HANDLED CORRECTLY. V41CC08 6 * 1. REWORK DATA STRUCTURE FOR RECORD TYPES. V41CC07 17 * 2. PROVIDE FOR OTHERWISE CLAUSE IN VARIANT-PART OF VARIANT RECORDS. V41CC07 18 * 3. PROVIDE FOR SUBRANGES IN CASE STATEMENTS AND VARIANT RECORDS. V41CC07 19 * USE SYMBOLIC EFET OFFSETS AND BIT POSITIONS IN COMPILER. V41CC04 7 * CALL "CLOSE" INSTEAD OF "CLOSEB" AND "CLOSET". V41BC01 7 * CORRECT ERROR IN ERROR-RECOVERY IN PROCEDURE PAGE. V41AC21 5 * ADD LANGUAGE DIALECT SELECTION PARAMETER. V41AC20 8 * SPLIT NONSTANDARD TYPE AND NAME DEFINITIONS INTO TWO PROCEDURES. V41AC19 5 * PREVENT INVALID USE OF FUNCTION IDENTIFIER IN ITS OWN BLOCK. V41AC18 6 * ENSURE THAT THE FIRST OPERAND OF THE IN OPERATOR HAS AN ORDINAL TYPE. V41AC17 6 * ALLOW CONFORMANT ARRAYS AS PARAMETERS TO PACK AND UNPACK. V41AC16 11 * ENFORCE CORRECT TYPE AND BOUNDS CHECK OF THIRD PARAMETER TO UNPACK. V41AC16 12 * INSTALL PREDECLARED PROCEDURES GETFILE AND PUTFILE, AND FUNCTION EOI. V41AC15 7 * FIX ERROR IN FIXFIELDALLOCATION -- ADJUST ADDRESS OF TAG FIELDS. V41AC13 6 * ENSURE PACKED ARRAY [1..N] OF CHAR IS A STRING TYPE ONLY IF N > 1. V41AC11 7 * CONVERT AN IF-STATEMENT TO AN ASSIGNMENT-STATEMENT. V41AC11 8 * ELIMINATE UNNECESSARY SPECIAL CASE IN GOTO STATEMENT. V41AC10 5 * ELIMINATE UNNECESSARY RUN-TIME TEST. V41AC09 5 * AVOID UNNECESSARY SHIFT DURING STORE INTO PACKED VARIABLE. V41AC08 9 * RENAME "ROTATEX" TO "UNROTATEX"; ADD "GENROTATE" AND "ROTATEX". V41AC08 10 * INTRODUCE CONSTANT FOR EXTERNAL LABEL COUNT LIMIT. V41AC03 5 * ENFORCE EXTERNAL FILE COUNT LIMIT. V41AC02 6 *) HCOMP 4 (*$L'COMPILER OPTION SETTINGS.'*) COMP 60 COMP 61 COMP 62 (*$B2 USE 401B WORD BUFFERS *) COMP 63 (*$E- COMPILE WITH DEFAULT ENTRY POINTS. *) COMP 64 (*$MB6000B ALLOW ENOUGH SPACE TO COMPILE SMALL PROGRAMS *) COMP 65 (*$MD+ ALLOW MEMORY DECREASE *) COMP 66 (*$MD5000B MINIMUM MEMORY DECREASE IS 5000B WORDS *) COMP 67 (*$MF377777B MAXIMUM ALLOWABLE FIELD LENGTH IS 377777B WORDS *) COMP 68 (*$MI+ ALLOW MEMORY INCREASE *) COMP 69 (*$MI2000B MINIMUM MEMORY INCREASE IS 2000B WORDS *) COMP 70 (*$MR+ PERFORM INITIAL REDUCE TO (LOAD FL + INITIAL SPACE) *) COMP 71 (*$MS2000B INITIAL STACK CHUNK IS 2000B WORDS. *) COMP 72 (*$MX1000B MINIMUM STACK EXTENSION IS 1000B WORDS. *) COMP 73 (*$P0 COMPILE WITH ABSOLUTELY NO PMD INFO *) COMP 74 (*$PL0 SET OUTPUT PRINT LIMIT TO MAXINT. *) COMP 75 (*$T- COMPILE WITHOUT RUNTIME TESTS *) COMP 76 (*$X5 PASS UP TO FIVE PARAMETERS IN X-REGISTERS *) COMP 77 COMP 78 COMP 79 PROGRAM PASCALCOMPILER; V41DC05 192 COMP 81 (* COMP 82 * COPYRIGHT (C) E.T.H. ZUERICH AND UNIV. OF MINNESOTA. COMP 83 * 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982. COMP 84 *) COMP 85 COMP 86 COMP 87 LABEL 13; (*EXIT IF EOF ENCOUNTERED*) COMP 88 (*$L'GLOBAL CONSTANT DECLARATIONS.' *) COMP 89 COMP 90 COMP 91 CONST COMP 92 COPYRIGHT = 'COPYRIGHT (C) E.T.H. ZUERICH AND UNIV. OF MINNESOTA.'; COMP 93 COPYRIGHT2 = '1974,1975,1976,1977,1978,1979,1980,1981,1982.'; COMP 94 ERRMAX = 360; (* MAXIMUM ERROR MESSAGE *) COMP 95 MAXERRPERLINE = 10; (* MAX ERRORS REPORTED PER LINE *) COMP 96 DISPLIMIT = 20; COMP 97 MAXLEVEL = 10; COMP 98 MAXADDR = 377777B; COMP 99 ICMAX = 32768; (* MAX WORDS IN CODE SEGMENT FOR A BLOCK. *) COMP 100 (* LIMITS: FIELDS IN BLOCK & PMD HEADER WORDS *) COMP 101 MAXLABEL = 9999; COMP 102 MAXEXTLABCNT = 36; (* LIMIT: EXTERNAL NAMES "PASCL.A".."PASCL.9" *) V41AC03 6 MAXFILES = 50; (* LIMIT: MAX EXTERNAL FILES ALLOWED *) V41AC02 7 MAXCSPNAME = 14; (* MAX CONTROL STATEMENT NAME LIST *) V41DC05 193 MAXPARAMS = 1023; (* LIMIT: PARAMS FIELD OF BLOCK HEADER WORD *) COMP 103 MAXPARAMSINREGS = 5; (* MAXIMUM X OPTION *) COMP 104 SCOPEMAX = MAXADDR; COMP 105 RESWORDS = 38; COMP 106 TWOTO17 = 400000B; COMP 107 CODEMAX = 150; COMP 108 RCODEMAX = 10 (* CODEMAX DIV 15 *); COMP 109 IDNAMEEXTLEN = 7; COMP 110 MAXLINELEN = 150; COMP 111 MAXTITLE = 40; COMP 112 OSNAME = '*OS*NAME* '; COMP 113 SITENAME = '*** SITE NAME *** '; COMP 114 (* LOCAL SITE NAME (MAXTITLE CHARACTERS LONG) *) COMP 115 BLANKTITLE = ' '; COMP 116 COMP 117 COMP 118 COMP 119 COMP 120 (* CTEXT COMSPAS - PASCAL-6000 RUN TIME EQUIVALENCES. COMSPAS 2 BASE DECIMAL COMSPAS 3 *COMMENT COPYRIGHT (C) UNIVERSITY OF MINNESOTA - 1978. COMSPAS 4 COMSPAS 5 COMSPAS 6 COMSPAS 7 COMSPAS 8 ** COMSPAS - PASCAL-6000 RUN TIME EQUIVALENCES. COMSPAS 9 * J. P. STRAIT. 77/08/24. COMSPAS 10 COMSPAS 11 COMSPAS 12 COMSPAS 13 HCOMSPA 1 ** PASCAL-6000 MODIFICATION HISTORY. HCOMSPA 2 * HCOMSPA 3 * PASCAL-6000 VERSION 4.1.0. V410C 1 * PASCAL-6000 VERSION 4.1.F. V41FC 1 * RENAME SYMBOL *ETERMINL* TO *ECONNECT*. V41EC01 1 * PASCAL-6000 VERSION 4.1.E. V41EC 1 * CHANGE VALUE OF CONSTANT *ERT*. V41DC09 1 * PASCAL-6000 VERSION 4.1.D. V41DC 1 * ADD ASCII AND DISPLAY CODE CHARACTER SET CONSTANTS. V41CC16 1 * RENAME EFET SYMBOLS: CHEFET -> TXTEFET; CHEFETSZ -> TXEFETSZ; V41CC02 1 * EFETSZ -> BNEFETSZ; CHEFITSZ -> TXEFITSZ; EFITSZ -> BNEFITSZ. V41CC02 2 * PASCAL-6000 VERSION 4.1.C. V41CC 1 * PASCAL-6000 VERSION 4.1.B. V41BC 1 * DEFINE SCOPE2 RECORD MANAGER ERROR ORDINALS. V41AC06 1 * KLUDGE: DEFINE SYMBOL *TXTEFET*. V41AC04 1 * INTRODUCE SYMBOLS *NOS1* AND *NOS2*; REMOVE SYMBOL *NOS*. V41AC01 1 * PASCAL-6000 VERSION 4.1.A. V41AC 1 * HCOMSPA 4 HCOMSPA 5 HCOMSPA 6 HCOMSPA 7 COMSPAS 14 ** COMSPAS DEFINES CONSTANTS USED THROUGHOUT THE COMSPAS 15 * PASCAL-6000 SYSTEM. THIS DECK IS CONSTRUCTED SO THAT IT COMSPAS 16 * MAY BE CALLED INTO EITHER A PASCAL OR COMPASS PROGRAM. COMSPAS 17 * *) COMSPAS 18 COMSPAS 19 COMSPAS 20 COMSPAS 21 (* COMSPAS 22 ** PASCAL-6000 RELEASE, VERSION, LEVEL. COMSPAS 23 * COMSPAS 24 * THE LEVEL NUMBER IS FOR USE BY LOCAL MAINTAINERS. COMSPAS 25 * *) COMSPAS 26 COMSPAS 27 COMSPAS 28 RELNUM = 37B ; (* RELEASE NUMBER = ORD('4') *) COMSPAS 29 VERNUM = 34B ; (* VERSION NUMBER = ORD('1') *) V41AC 2 LEVNUM = 33B ; (* VERSION NUMBER = ORD('F') *) V410C 2 ASCFLAG = 55B ; (* FULL-ASCII FLAG, OFF = ORD(' ') *) COMSPAS 32 LVERNUM = 33B ; (* LIBRARY VERSION NUMBER = ORD('0') *) COMSPAS 33 LLEVNUM = 33B ; (* LIBRARY LEVEL NUMBER = ORD('0') *) COMSPAS 34 COMSPAS 35 COMSPAS 36 COMSPAS 37 (* COMSPAS 38 ** DEFINE THE TARGET OPERATING SYSTEM. *) COMSPAS 39 COMSPAS 40 COMSPAS 41 KRONOS = 0 ; COMSPAS 42 NOS1 = 0 ; V41AC01 2 NOS2 = 0 ; V41AC01 3 NOSBE = 0 ; COMSPAS 44 SCOPE2 = 0 ; COMSPAS 45 SCOPE34 = 0 ; COMSPAS 46 COMSPAS 47 COMSPAS 48 COMSPAS 49 (* COMSPAS 50 ** DEFINE THE OPERATING SYSTEM ORDINALS. *) COMSPAS 51 COMSPAS 52 COMSPAS 53 XKRONOS = 1 ; COMSPAS 54 XNOS1 = 2 ; V41AC01 4 XNOS2 = 3 ; V41AC01 5 XNOSBE = 4 ; V41AC01 6 XSCOPE2 = 5 ; V41AC01 7 XSCOPE34 = 6 ; V41AC01 8 COMSPAS 59 COMSPAS 60 COMSPAS 61 (* COMSPAS 62 ** GENERAL CONSTANTS. *) COMSPAS 63 COMSPAS 64 COMSPAS 65 MARKLIM = 31 ; (* MAXIMUM MARK LEVEL *) COMSPAS 66 NILP = 377777B ; (* NIL POINTER *) COMSPAS 67 PFLC = 1 ; (* FIRST LOCATION IN ACTIVATION RECORDS *) COMSPAS 68 MPLC = PFLC ; (* FIRST LOCATION IN PROGRAM ACTIVATION *) COMSPAS 69 ARPS = 1 ; (* ACTIVATION-RECORD PREFIX SIZE *) COMSPAS 70 PMDSPACE = 120B ; (* SIZE OF STACK CHUNK FOR PMD *) COMSPAS 71 COMSPAS 72 COMSPAS 73 COMSPAS 74 (* COMSPAS 75 ** DATA SIZE CONSTANTS. *) COMSPAS 76 COMSPAS 77 COMSPAS 78 WORDSIZE = 60 ; (* NUMBER OF BITS IN ONE WORD *) COMSPAS 79 COMSPAS 82 (* V41CC16 2 * ASCII CHARACTER SET CONSTANTS. *) V41CC16 3 V41CC16 4 ASCHARSZ = 7 ; (* NUMBER OF BITS IN ASCII CHAR *) V41CC16 5 ASALFALN = 8 ; (* NUMBER OF ASCII CHARS IN WORD *) V41CC16 6 ASMINCH = 0 ; (* MINIMAL ORDINAL VALUE OF ASCII CHAR *) V41CC16 7 ASMAXCH = 127 ; (* MAXIMUM ORDINAL VALUE OF ASCII CHAR *) V41CC16 8 ASSPACE = 32 ; (* ASCII ORDINAL FOR ' ' *) V41CC16 9 ASONE = 49 ; (* ASCII ORDINAL FOR '1' *) V41CC16 10 V41CC16 11 (* V41CC16 12 * DISPLAY CODE CHARACTER SET CONSTANTS. *) V41CC16 13 V41CC16 14 DCCHARSZ = 6 ; (* NUMBER OF BITS IN DISPLAY CODE CHAR *) V41CC16 15 DCALFALN = 10 ; (* NUMBER OF DISPLAY CODE CHARS IN WORD *) V41CC16 16 DCMINCH = 0 ; (* MINIMUM VALUE OF DISPLAY CODE CHAR *) V41CC16 17 DCMAXCH = 63 ; (* MAXIMUM VALUE OF DISPLAY CODE CHAR *) V41CC16 18 DCSPACE = 45 ; (* DISPLAY CODE ORDINAL FOR ' ' *) V41CC16 19 DCONE = 28 ; (* DISPLAY CODE ORDINAL FOR '1' *) V41CC16 20 V41CC16 21 (* V41CC16 22 * CURRENT CHARACTER SET CONSTANTS. *) V41CC16 23 V41CC16 24 CHARSIZE = DCCHARSZ ; (* NUMBER OF BITS TO HOLD ONE CHAR *) V41CC16 25 ALFALENG = DCALFALN ; (* NUMBER OF CHARACTERS IN A WORD *) V41CC16 26 MINORDCH = DCMINCH ; (* MINIMUM ORDINAL VALUE OF A CHAR *) V41CC16 27 MAXORDCH = DCMAXCH ; (* MAXIMUM ORDINAL VALUE OF A CHAR *) V41CC16 28 CHSPACE = DCSPACE ; (* ORDINAL VALUE OF ' ' *) V41CC16 29 CHONE = DCONE ; (* ORDINAL VALUE OF '1' *) V41CC16 30 COMSPAS 85 COMSPAS 86 COMSPAS 87 (* COMSPAS 88 ** FET LENGTH CONSTANTS. *) COMSPAS 89 COMSPAS 90 COMSPAS 91 BINEFET = 1 ; (* RELATIVE ADDRESS OF WORD FILE EFET *) COMSPAS 92 TXTEFET = 13 ; (* RELATIVE ADDRESS OF TEXT FILE EFET *) V41CC02 3 TXEFETSZ = 28 ; (* TEXT EFET SIZE = TXTEFET + 1 + FETSZ *) V41CC02 4 BNEFETSZ = 16 ; (* WORD EFET SIZE = BINEFET + 1 + FETSZ *) V41CC02 5 FETSZ = 14 ; (* FET LENGTH *) COMSPAS 96 COMSPAS 97 COMSPAS 98 COMSPAS 99 (* COMSPAS 100 ** FIT LENGTH CONSTANTS. *) COMSPAS 101 COMSPAS 102 COMSPAS 103 TXEFITSZ = 32 ; (* TEXT EFET SIZE *) V41CC02 6 BNEFITSZ = 20 ; (* WORD EFET SIZE *) V41CC02 7 FITSZ = 16 ; (* FIT SIZE 7000 RM *) COMSPAS 106 COMSPAS 107 COMSPAS 108 COMSPAS 109 (* COMSPAS 110 ** EFET INDICES. COMSPAS 111 * COMSPAS 112 * THESE VALUES FORM OFFSETS FOR LOCATING THE VARIOUS COMSPAS 113 * FIELDS IN THE EFET. COMSPAS 114 * *) COMSPAS 115 COMSPAS 116 COMSPAS 117 EFETLCNT = -13 ; (* LINE COUNTER FOR TEXTFILES *) COMSPAS 118 EFETCBUF = -12 ; (* FWA OF 10-CHAR BUFFER *) COMSPAS 119 EFETSNTL = -2 ; (* END-OF-BUFFER SENTINEL *) COMSPAS 120 EFETPTR = -1 ; (* POINTER TO CURRENT ELEMENT *) COMSPAS 121 EFET = 0 ; (* ANCHOR FOR ALL OFFSETS *) COMSPAS 122 EFETFET = 1 ; (* FIRST WORD OF FET *) COMSPAS 123 EFETFRST = 2 ; (* FWA OF CIRCULAR BUFFER *) COMSPAS 124 EFETIN = 3 ; (* NEXT WORD TO PUT DATA INTO BUFFER *) COMSPAS 125 EFETOUT = 4 ; (* NEXT WORD TO GET DATA OUT OF BUFFER *) COMSPAS 126 EFETLIM = 5 ; (* LWA+1 OF CIRCULAR BUFFER *) COMSPAS 127 COMSPAS 128 COMSPAS 129 COMSPAS 130 (* COMSPAS 131 ** EFIT INDICES. *) COMSPAS 132 COMSPAS 133 COMSPAS 134 EFITBUF = 1 ; (* WSA BUFFER DESCRIPTOR *) COMSPAS 135 EFITOUT = 2 ; (* OUT POINTER *) COMSPAS 136 EFITIN = 2 ; (* IN POINTER *) COMSPAS 137 EFITFIT = 3 ; (* FIT *) COMSPAS 138 COMSPAS 139 COMSPAS 140 COMSPAS 141 (* COMSPAS 142 ** BIT-FIELD DEFINITIONS. COMSPAS 143 * COMSPAS 144 * THE VALUE OF EACH ENTRY IS THE BIT POSITION OF THAT FIELD COMSPAS 145 * IN THE WORD. FOR MULTIPLE-BIT FIELDS, THE COORDINATE OF COMSPAS 146 * THE RIGHTMOST BIT IS GIVEN. COMSPAS 147 * *) COMSPAS 148 COMSPAS 149 (* COMSPAS 150 * BIT-FIELDS IN EFET+EFETPTR. *) COMSPAS 151 COMSPAS 152 PEOLN = 59 ; (* EOLN FLAG FOR TEXTFILES *) COMSPAS 153 PREWRITE = 58 ; (* EQUIVALENT TO REWRITE IN EFET WORD *) COMSPAS 154 PPOINTER = 0 ; (* POINTER INTO CHARBUFF OR CIRC. BUFF *) COMSPAS 155 COMSPAS 156 (* COMSPAS 157 * BIT-FIELDS IN EFET. *) COMSPAS 158 COMSPAS 159 EEOSF = 59 ; (* EOS/EOF FLAG FOR SEG/NON-SEG. FILES *) COMSPAS 160 EEOF = 58 ; (* EOF FLAG *) COMSPAS 161 ESEGMENT = 57 ; (* SEGMENTED FILE *) COMSPAS 162 EREWRITE = 56 ; (* REWRITE FLAG FOR ALL FILES *) COMSPAS 163 ETEXT = 55 ; (* TEXT FILE *) COMSPAS 164 ETERMFIL = 54 ; (* TERMINAL FILE ('/' ON HEADER) *) COMSPAS 165 EPERSIST = 53 ; (* PERSISTENT FILE *) COMSPAS 166 ECONNECT = 52 ; (* FILE CONNECTED TO TERMINAL *) V41EC01 2 EPROGPAR = 51 ; (* PROGRAM PARAMETER *) COMSPAS 168 EDISPC = 51 ; (* DISPOSITION CODE (ALL OF ABOVE BITS) *) V41CC02 8 EDISPCW = 9 ; (* NUMBER OF BITS IN DISPOSITION CODE *) V41CC02 9 V41CC02 10 ELRL = 0 ; (* LOGICAL RECORD LENGTH *) COMSPAS 169 V41CC16 31 EDCCHS = 18 ; (* INDEX INTO DISPLAY CODE BUFFER (DCB) *) V41CC16 32 EDCCHSW = 18 ; (* WIDTH OF EDCCHS FIELD *) V41CC16 33 COMSPAS 170 EWSALEN = 18 ; (* ACTUAL LENGTH OF WSA *) COMSPAS 171 ERT = 36 ; (* RECORD TYPE *) V41DC09 2 ERTW = 6 ; (* NUMBER OF BITS IN RECORD TYPE *) V41CC02 11 COMSPAS 173 (* COMSPAS 174 * BIT-FIELDS IN EFET+EFITBUF. *) COMSPAS 175 COMSPAS 176 BUFEND = 0 ; (* LWA CURRENT RECORD *) COMSPAS 177 BUFADDR = 18 ; (* FWA WSA *) COMSPAS 178 BUFLEN = 36 ; (* USEABLE LENGTH OF WSA *) COMSPAS 179 COMSPAS 180 (* COMSPAS 181 * SCOPE2 RECORD MANAGER FIT VALUES. *) COMSPAS 182 COMSPAS 183 FPEOI = 64 ; (* END OF INFORMATION *) COMSPAS 184 FPEOP = 32 ; (* END OF PARTITION *) COMSPAS 185 FPEOS = 16 ; (* END OF SECTION *) COMSPAS 186 FPEOR = 8 ; (* END OF RECORD *) COMSPAS 187 FPBOI = 2 ; (* BEGIN OF INFORMATION *) COMSPAS 188 COMSPAS 189 (* COMSPAS 190 * SCOPE2 RECORD MANAGER RECORD TYPES. *) COMSPAS 191 COMSPAS 192 RTW = 0 ; (* CONTROL WORD *) COMSPAS 193 RTF = 1 ; (* FIXED LENGTH *) COMSPAS 194 RTZ = 3 ; (* ZERO BYTE TERMINATOR *) COMSPAS 195 RTU = 7 ; (* UNDEFINED RECORDS *) COMSPAS 196 RTS = 8 ; (* SYSTEM LOGICAL *) COMSPAS 197 COMSPAS 198 COMSPAS 199 COMSPAS 200 (* COMSPAS 201 ** P.GLOBL - TABLE OF GLOBAL VARIABLES. COMSPAS 202 * COMSPAS 203 * THIS TABLE INCLUDES RUN TIME SYSTEM VARIABLES THAT ARE COMSPAS 204 * MAINTAINED ACROSS THE ENTIRE EXECUTION OF A PASCAL PROGRAM. COMSPAS 205 * IN OTHER WORDS, THEY ARE GLOBAL WITH RESPECT TO THE USER COMSPAS 206 * PROGRAM. THESE VALUES ARE USED AS INDICES INTO THE COMSPAS 207 * TABLE NAMED *P.GLOBL*. COMSPAS 208 * *) COMSPAS 209 COMSPAS 210 COMSPAS 211 TGVRPMDS = 1 ; (* PMD STACK CHUNK; ZERO IF PMD DISABLED *) COMSPAS 212 (* 30/LWA+1, 30/FWA, IF PMD ENABLED *) COMSPAS 213 TGVRKEY = 2 ; (* KEY FOR POINTER CHECKS *) COMSPAS 214 TGVRFORT = 3 ; (* FORTRAN CALL FLAG *) COMSPAS 215 (* 1/FTNFLAG, 41/, 18/LINENUM *) COMSPAS 216 TGVRPTRS = 4 ; (* FOR SAVING GLOBAL POINTERS *) COMSPAS 217 (* 6/0, 18/B4, 18/B5, 18/B6 *) COMSPAS 218 COMSPAS 219 COMSPAS 220 COMSPAS 221 (* COMSPAS 222 ** P.PIT - PROGRAM INFORMATION TABLE. COMSPAS 223 * COMSPAS 224 * THIS TABLE, WHICH RESIDES IN THE CODE SPACE OF THE MAIN COMSPAS 225 * PROGRAM, IS USED TO PASS PARAMETERS FROM THE COMPILER TO THE COMSPAS 226 * RUN-TIME SYSTEM. THESE CONSTANTS ARE USED AS INDICES INTO COMSPAS 227 * THE TABLE NAMED "P.PIT". COMSPAS 228 * *) COMSPAS 229 COMSPAS 230 COMSPAS 231 PITVERS = 1 ; (* PASCAL-6000 VERSION INFORMATION *) COMSPAS 232 PITMAIN = 2 ; (* MAIN-PROGRAM BHW AND ACTIVATION *) COMSPAS 233 PITFLAG = 3 ; (* PROGRAM DESCRIPTION FLAGS *) COMSPAS 234 PITPMD = 4 ; (* ADDRESS OF PASCPMD *) COMSPAS 235 PITOUTP = 4 ; (* ADDRESS OF OUTPUT EFET *) COMSPAS 236 PITIDS = 5 ; (* INITIAL DYN. SPACE, INITIAL REDUCE *) COMSPAS 237 PITMFL = 5 ; (* MAXIMUM SIZE OF DYNAMIC MEMORY *) COMSPAS 238 PITSCS = 6 ; (* STACK-CHUNK CONTROLS *) COMSPAS 239 PITMCS = 7 ; (* MEMORY MANAGER CONTROLS *) COMSPAS 240 COMSPAS 241 COMSPAS 242 COMSPAS 243 (* COMSPAS 244 ** P.TERA - TABLE OF ERROR RECOVERY ADDRESSES. COMSPAS 245 * COMSPAS 246 * THESE VALUES ARE INDICES INTO P.TERA, THE TABLE OF ERROR COMSPAS 247 * RECOVERY ADDRESSES. COMSPAS 248 * *) COMSPAS 249 COMSPAS 250 COMSPAS 251 ASSERR = 0 ; (* VALUE OUT OF RANGE *) COMSPAS 252 INXERR = 1 ; (* INDEX OR CASE EXPR OUT OF RANGE *) COMSPAS 253 DIVERR = 2 ; (* DIVISION BY ZERO *) COMSPAS 254 ICNERR = 3 ; (* INCONSISTENT NODE REFERENCE *) COMSPAS 255 OVLERR = 4 ; (* INTEGER OVERFLOW *) COMSPAS 256 PTRERR = 5 ; (* INCORRECT POINTER REFERENCE *) COMSPAS 257 MODERR = 6 ; (* MOD BY NON-POSITIVE MODULO *) COMSPAS 258 EOLERR = 7 ; (* TRIED TO CHECK EOLN WHILE AT EOS/EOF *) COMSPAS 259 ISMERR = 8 ; (* MEMORY REQUIRED EXCEEDS SPECIFIED MFL *) COMSPAS 260 COMSPAS 261 COMSPAS 262 COMSPAS 263 (* COMSPAS 264 ** P.TMEM - TABLE OF MEMORY MANAGER VARIABLES. COMSPAS 265 * COMSPAS 266 * THIS TABLE CONTAINS THE VARIABLES USED BY THE PASCAL-6000 COMSPAS 267 * MEMORY MANAGER (PMM). THESE CONSTANTS ARE USED AS INDICES COMSPAS 268 * INTO THE TABLE NAMED "P.TMEM". COMSPAS 269 * *) COMSPAS 270 COMSPAS 271 COMSPAS 272 MEMFL = 1 ; (* CURRENT FIELD LENGTH *) COMSPAS 273 MEMFF = 2 ; (* ADDRESS OF FIRST FREE NODE *) COMSPAS 274 MEMLF = 3 ; (* ADDRESS OF LAST FREE NODE *) COMSPAS 275 MEMHLF = 4 ; (* HIGHEST ADDRESS OF LAST FREE NODE *) COMSPAS 276 MEMHFL = 5 ; (* HIGHEST FL USED BY MEMORY MANAGER *) COMSPAS 277 COMSPAS 278 COMSPAS 279 COMSPAS 280 (* COMSPAS 281 ** TIOE - TABLE OF INPUT/OUTPUT ERRORS. COMSPAS 282 * COMSPAS 283 * THESE VALUES ARE USED AS INDICES INTO THE TABLE NAMED COMSPAS 284 * *TIOE*. COMSPAS 285 * *) COMSPAS 286 COMSPAS 287 COMSPAS 288 IOEA = 0 ; (* LINELIMIT EXCEEDED ON XXXXXXX.*) COMSPAS 289 IOEB = 1 ; (* TRIED TO READ XXXXXXX PAST EOS/EOF.*) COMSPAS 290 IOEC = 2 ; (* TRIED TO WRITE XXXXXX WITHOUT REWRITE.*) COMSPAS 291 IOED = 3 ; (* BUFFER TOO SMALL ON XXXXXXX.*) COMSPAS 292 IOEE = 4 ; (* NON-DIGIT FOUND WHILE READING XXXXXXX.*) COMSPAS 293 IOEF = 5 ; (* VALUE TOO LARGE WHILE READING XXXXXXX.*) COMSPAS 294 IOEG = 6 ; (* TRIED TO READ XXXXXXX WITHOUT RESET.*) COMSPAS 295 IOEH = 7 ; (* UNDEFINED VALUE TO WRITE ON XXXXXXX. *) COMSPAS 296 V41AC06 2 (* V41AC06 3 ** SCOPE2 RECORD MANAGER ERRORS. *) V41AC06 4 V41AC06 5 RMIOEA = 0 ; (* RECORD MAN ERROR ON FILE XXXXXXX. *) V41AC06 6 RMIOEB = 1 ; (* BUFFER TOO SMALL ON XXXXXXX. *) V41AC06 7 RMIOEC = 2 ; (* FILE XXXXXXX MUST BE FO=SQ,RT=W,S,Z,U.*) V41AC06 8 RMIOED = 3 ; (* FILE CARD SPECIFIES MRL>PASCAL BUFFER.*) V41AC06 9 RMIOEE = 4 ; (* INVALID RT FOR SKIP ON XXXXXXX. *) V41AC06 10 RMIOEH = 5 ; (* ZERO SKIP COUNT ON XXXXXXX. *) V41AC06 11 COMSPAS 297 COMSPAS 298 COMSPAS 299 (* COMSPAS 300 ** TYPE CODES FOR POST-MORTEM DUMP. COMSPAS 301 *) COMSPAS 302 COMSPAS 303 PMDINT = 1 ; (* INTEGER *) COMSPAS 304 PMDREAL = 2 ; (* REAL *) COMSPAS 305 PMDCHAR = 3 ; (* CHAR *) COMSPAS 306 PMDBOOL = 4 ; (* BOOLEAN *) COMSPAS 307 PMDENUM = 5 ; (* ENUMERATED TYPE *) COMSPAS 308 PMDALFA = 6 ; (* ALFA *) COMSPAS 309 PMDUPTR = 7 ; (* UNCHECKED POINTER *) COMSPAS 310 PMDCPTR = 8 ; (* CHECKED POINTER *) COMSPAS 311 COMSPAS 312 COMSPAS 313 (* COMSPAS 314 BASE * COMSPAS 315 ENDX *) COMSPAS 316 (*$L'GLOBAL TYPE DECLARATIONS.' *) COMP 122 COMP 123 COMP 124 TYPE (*DESCRIBING:*) COMP 125 (*************) COMP 126 COMP 127 COMP 128 (*BASIC SYMBOLS*) COMP 129 (***************) COMP 130 COMP 131 SYMBOL = (IDENT,INTCONST,REALCONST,CHARCONST,STRINGCONST,NOTSY,NILSY, COMP 132 MULOP,ADDOP,RELOP,LPARENT,RPARENT,LBRACK,RBRACK,COMMA,SEMICOLON, COMP 133 PERIOD,ARROW,COLON,BECOMES,DOTDOT,LABELSY,CONSTSY,TYPESY,VARSY, COMP 134 FUNCTIONSY,PROCEDURESY,SETSY,PACKEDSY,ARRAYSY,RECORDSY,FILESY, COMP 135 BEGINSY,IFSY,CASESY,REPEATSY,WHILESY,FORSY,WITHSY, COMP 136 GOTOSY,ENDSY,ELSESY,UNTILSY,OFSY,DOSY,TOSY,DOWNTOSY, COMP 137 THENSY,PROGRAMSY,SEGMENTEDSY,OTHERWISESY,VALUESY,OTHERSY); COMP 138 OPERATOR = (MUL,RDIV,ANDOP,IDIV,IMOD,PLUS,MINUS,OROP,LTOP,LEOP,GEOP, COMP 139 GTOP,NEOP,EQOP,INOP,NOOP); COMP 140 SETOFSYS = SET OF SYMBOL; COMP 141 COMP 142 (*CONSTANTS*) COMP 143 (***********) COMP 144 COMP 145 CODERANGE = 0..CODEMAX; COMP 146 POSRANGE = 1..4; COMP 147 ADDRRANGE = 0..MAXADDR; COMP 148 ADDRFIELD = -377777B..777777B; COMP 149 SHRTINT = -377777B..377777B; COMP 150 CSTCLASS = (INT,BOOL,REEL,PSET,STRG); COMP 151 CSP = ^ CSTHEADREC; COMP 152 LOCOFREF = ^ LOCREC; COMP 153 CTAILP = ^ CSTTAILREC; COMP 154 CSTHEADREC = PACKED RECORD NXTCSP: CSP; COMP 155 CSTP: CTAILP; COMP 156 CREF: LOCOFREF COMP 157 END; COMP 158 CSTTAILREC = RECORD NXTCSP: CTAILP; CSVAL: INTEGER END; COMP 159 ERRINDEX = 1 .. ERRMAX; COMP 160 ERLISTT = PACKED ARRAY [ERRINDEX] OF BOOLEAN; COMP 161 COMP 162 VALU = RECORD CASE CSTCLASS OF COMP 163 INT: (IVAL: INTEGER); COMP 164 BOOL: (BVAL: BOOLEAN); COMP 165 REEL: (RVAL: REAL); COMP 166 PSET: (PVAL: SET OF 0..58); (*IMPL. DEPENDANT RANGE*) COMP 167 STRG: (VALP: CTAILP) COMP 168 END; COMP 169 COMP 170 (*DATA STRUCTURES*) COMP 171 (*****************) COMP 172 COMP 173 LEVRANGE = 0..MAXLEVEL; COMP 174 BITRANGE = 0..59 (*=WORDSIZE-1*); COMP 175 SHIFTRANGE = -59..59; V41AC08 11 EPWRANGE = 1..60 (*=WORDSIZE*); COMP 176 STRUCTFORM = (* BASIC STRUCTURE FORMS. ORDERING OF THESE CONSTANTS COMP 177 IS CRITICAL TO SEMANTIC ANALYSIS IN THE COMPILER. *) COMP 178 (SCALAR,SUBRANGE,REALS,POINTER,POWER,ARRAYS,RECORDS,FILES, COMP 179 FIELDLISTS,VARIANTPART,BOUNDDESC); V41CC07 20 DECLKIND = (PREDECLARED,USERDECLARED); COMP 181 WBSIZE = PACKED RECORD WORDS: ADDRRANGE; COMP 182 BITS: BITRANGE COMP 183 END; COMP 184 CCP = ^ CASECONSTREC; V41CC07 21 STP = ^ STRUCTREC; COMP 185 CTP = ^ IDENTREC; COMP 186 COMP 187 CASECONSTREC = PACKED RECORD V41CC07 22 CCMAX,CCMIN: INTEGER; V41CC07 23 NEXTCC,THREAD: CCP; V41CC07 24 CASE BOOLEAN OF V41CC07 25 TRUE: (CCVAR: STP); V41CC07 26 FALSE: (CCADDR: ADDRRANGE) V41CC07 27 END; V41CC07 28 V41CC07 29 STRUCTREC = PACKED RECORD COMP 188 FTYPE: BOOLEAN; COMP 189 SIZE: WBSIZE; COMP 190 CASE FORM: STRUCTFORM OF COMP 191 SCALAR: (CASE SCALKIND: DECLKIND OF COMP 192 PREDECLARED: (); COMP 193 USERDECLARED: (FCONST: CTP)); COMP 194 SUBRANGE: (RANGETYPE: STP; MIN,MAX: VALU); COMP 195 REALS: (); COMP 196 POINTER: (ELTYPE: STP; DBG: BOOLEAN); COMP 197 POWER: (PCKDSET: SET OF (UNPCKD, PCKD); ELSET: STP); COMP 198 ARRAYS: (AELTYPE,INXTYPE: STP; COMP 199 CONFORMANT: BOOLEAN; DESCADDR: ADDRRANGE; COMP 200 CASE PCKDARR: BOOLEAN OF COMP 201 FALSE: (); COMP 202 TRUE: (CASE PARTWORDELS: BOOLEAN OF COMP 203 FALSE: (); COMP 204 TRUE: (ELSPERWORD: 2..60))); COMP 205 RECORDS: (PCKDREC: BOOLEAN; FIELDIDTREE: CTP; V41CC07 30 FIELDLST: STP); V41CC07 31 FILES: (PCKDFIL,TEXTFILE,SEGFILE: BOOLEAN; COMP 208 BSIZE : ADDRRANGE; COMP 209 BASEFILE: STP; COMP 210 FILTYPE: STP); COMP 211 FIELDLISTS: (FIXEDPART: CTP; VARPART,NXTFLDLST: STP); V41CC07 32 VARIANTPART: (TAGFIELDID: CTP; TAGVALUELIST: CCP; V41CC07 33 TAGTYPE,VARIANTLIST,COMPLETER: STP); V41CC07 34 BOUNDDESC:(BOUNDTYPE: STP; LOWBOUND,HIGHBOUND: CTP) COMP 215 END; COMP 216 COMP 217 EXTIDP = ^ EXTID; COMP 218 EXTREFP = ^ EXTREF; COMP 219 EXTREF = PACKED RECORD LOC: 0..7777777777B; LINK: EXTREFP END; COMP 220 EXTID = PACKED RECORD COMP 221 EXID: ALFA; L,R: EXTIDP; REF: EXTREFP COMP 222 END; COMP 223 COMP 224 (*NAMES*) COMP 225 (*******) COMP 226 COMP 227 KEYWORD = (* STANDARD AND PRE-DEFINED IDENTIFIERS AND DIRECTIVES *) COMP 228 (* PROCEDURES: *) COMP 229 (GETKW,PUTKW,RESETKW,REWRITEKW,READKW,READLNKW,WRITEKW, COMP 230 WRITELNKW,PAGEKW,PACKKW,UNPACKKW,NEWKW,DISPOSEKW, COMP 231 (* FUNCTIONS: *) COMP 232 EOFKW,EOLNKW,ODDKW,ROUNDKW,TRUNCKW,ABSKW,SQRKW,ORDKW, COMP 233 CHRKW,PREDKW,SUCCKW,SINKW,COSKW,ARCTANKW,EXPKW,SQRTKW,LNKW, COMP 234 (* ADDITIONAL, PRE-DEFINED PROCEDURES: *) COMP 235 GETSEGKW,PUTSEGKW,GETFILEKW,PUTFILEKW, V41AC15 8 MNEWKW,MARKKW,RELEASEKW, COMP 237 MESSAGEKW,TIMEKW,DATEKW,HALTKW, COMP 238 (* ADDITIONAL, PRE-DEFINED FUNCTIONS: *) COMP 239 EOSKW,EOIKW, V41AC15 9 UNDEFINEDKW,EXPOKW,CARDKW,CLOCKKW, V41AC15 10 RELVALUEKW, V410C01 7 (* CONSTANTS: *) COMP 241 FALSEKW,TRUEKW,MAXINTKW, COMP 242 (* ADDITIONAL, PRE-DEFINED CONSTANTS: *) COMP 243 COLKW,PERKW, COMP 244 (* TYPES: *) COMP 245 INTEGERKW,REALKW,CHARKW,BOOLEANKW,TEXTKW, COMP 246 (* ADDITIONAL, PRE-DEFINED TYPES: *) COMP 247 ALFAKW,MARKERKW, COMP 248 (* VARIABLES: *) COMP 249 INPUTKW,OUTPUTKW, COMP 250 (* COMPILER DIRECTIVES: *) COMP 251 FORWARDKW,EXTERNALKW,FORTRANKW); COMP 252 IDCLASS = (TYPES,KONST,VARS,BOUNDID, COMP 253 FIELD,TAGFIELD,PROC,FUNC,UNKNOWNID); COMP 254 SETOFIDS = SET OF IDCLASS; COMP 255 IDKIND = (ACTUAL,FORMAL); COMP 256 ORDERING = (LESSTHAN,EQUALTO,GREATERTHAN); COMP 257 PFDECLCLASS = (DECL,FORWDECL,FORWDECLERR,EXTDECL,FTNDECL); V41CC20 11 ACCESSKIND = (DRCT,INDRCT,INXD); COMP 259 DRCTINDRCT = DRCT..INDRCT; COMP 260 SCOPERANGE = 0..SCOPEMAX; COMP 261 COMP 262 IDSEGMENT = ^ IDNAMEEXT; COMP 263 IDNAME = RECORD COMP 264 TEN: ALFA; COMP 265 EXT: IDSEGMENT COMP 266 END; COMP 267 IDNAMEEXT = PACKED RECORD COMP 268 SEVEN: PACKED ARRAY [1..IDNAMEEXTLEN] OF CHAR; COMP 269 EXTRA: IDSEGMENT COMP 270 END; COMP 271 IDENTREC = PACKED RECORD COMP 272 NAME: IDNAME; LLINK: CTP; RLINK: CTP; COMP 273 IDTYPE: STP; NEXT: CTP; COMP 274 LASTUSESCOPE: SCOPERANGE; COMP 275 CASE KLASS: IDCLASS OF COMP 276 KONST: (VALUES: VALU); COMP 277 TYPES: (); COMP 278 VARS: (VKIND: IDKIND; VARPARAM: BOOLEAN; COMP 279 VACCESS: DRCTINDRCT; VLEV: LEVRANGE; COMP 280 VADDR: ADDRRANGE; VINIT: BOOLEAN; COMP 281 FIRSTINPARMGROUP,CONFORMNT, COMP 282 THREAT,CONTROLVAR: BOOLEAN); COMP 283 BOUNDID:(BLEV: LEVRANGE; BADDR: ADDRRANGE); COMP 284 TAGFIELD, COMP 285 FIELD: (FLDADDR: ADDRRANGE; COMP 286 CASE PCKDFLD: BOOLEAN OF COMP 287 FALSE: (); COMP 288 TRUE: (BITADDR: BITRANGE)); COMP 289 PROC, COMP 290 FUNC: (CASE PFDECKIND: DECLKIND OF COMP 291 PREDECLARED: (KEY: KEYWORD); COMP 292 USERDECLARED: (PFLEV: LEVRANGE; COMP 293 PFXOPT: 0..MAXPARAMSINREGS; COMP 294 PARAMLIST: CTP; COMP 295 CASE PFKIND: IDKIND OF COMP 296 ACTUAL: (PFDECL: PFDECLCLASS; COMP 297 FIRSTVAR: ADDRRANGE; COMP 298 EPT: ALFA); COMP 299 FORMAL: (PFADDR: ADDRRANGE))); COMP 300 UNKNOWNID: () COMP 301 END; COMP 302 COMP 303 EXTFILEP = ^ FILEREC; COMP 304 FILEREC = PACKED RECORD COMP 305 FILENAME: ALFA; COMP 306 FILECP: CTP; COMP 307 NXTP: EXTFILEP; COMP 308 TERMINAL: BOOLEAN; COMP 309 SYSLOC: 1..63B V41DC06 11 END; COMP 311 COMP 312 DISPRANGE = -1 .. DISPLIMIT; COMP 313 WHERE = (BLCK,DREC,PFPAR,WREC); COMP 314 COMP 315 COMP 316 (*LABELS*) COMP 317 (********) COMP 318 COMP 319 LBP = ^LABREC; COMP 320 LABREC = PACKED RECORD COMP 321 LABVAL: INTEGER; EPT: ALFA; COMP 322 NEXTLAB: LBP; LABLEV: LEVRANGE; COMP 323 ACCESSIBLE: BOOLEAN; LABSTMTLEVEL: ADDRRANGE; COMP 324 CASE DEFINED: BOOLEAN OF COMP 325 TRUE: (LABADDR: ADDRRANGE); COMP 326 FALSE: (FSTOCC: LOCOFREF) COMP 327 END; COMP 328 COMP 329 COMP 330 (*FILES:*) COMP 331 (********) COMP 332 COMP 333 SEGTEXT = SEGMENTED TEXT; COMP 334 LGOFILE = SEGMENTED FILE OF INTEGER; COMP 335 COMP 336 COMP 337 (*FOR CODE GENERATION*) COMP 338 (*********************) COMP 339 COMP 340 OPCODE = (PS,RJ,JP,TESTX,EQ,NE,GE,LT,BXX,BXXTX,BXXPX,BXXMX,BXCX, COMP 341 BXXTCX,BXXPCX,BXXMCX,LXJK,AXJK,LXBX,AXBX,NXBX,ZXBX,UXBX,PXBX, COMP 342 FXXPX,FXXMX,DXXPX,DXXMX,RXXPX,RXXMX,IXXPX,IXXMX,FXXTX,RXXTX, COMP 343 DXXTX,MXJK,FXXDX,RXXDX,NO,CXX,SAAPK,SABPK,SAXPK,SAXPB,SAAPB, COMP 344 SAAMB,SABPB,SABMB,SBAPK,SBBPK,SBXPK,SBXPB,SBAPB,SBAMB,SBBPB, COMP 345 SBBMB,SXAPK,SXBPK,SXXPK,SXXPB,SXAPB,SXAMB,SXBPB,SXBMB); COMP 346 CONDITION = (ZR,NZ,PL,NG,XIR,XOR,XDF,XID); COMP 347 RELOCATION = (ABSR,UNUSEDR,PROGR,NEGPROGR,VARR,GLOBLR,TERAR,TMEMR); COMP 348 EXTERNALNAME = (* RUNTIME-SYSTEM PROCEDURE/FUNCTION EXTERNAL NAMES *) COMP 349 (GETBEX,PUTBEX,GETCEX,PUTCEX,GETCHEX,PUTCHEX,GETLNEX,PUTLNEX, COMP 350 RDIEX,RDREX,WRFEX,WRIEX,WREEX,WRCEX,WRCDEX,WRBEX,WRSEX,PAGEEX, COMP 351 RESETEX,REWRTEX,RWRTSEX,GETSEX,PUTSEX, COMP 352 GETFEX,PUTFEX,EOIEX, V41AC15 11 NEWEX,NEWDEX,DISPEX,DISPDEX,MNEWEX,MNEWDEX,MARKEX,RELEASEEX, COMP 353 CLOCKEX,TIMEEX,DATEEX,MSGEX,HALTEX, COMP 354 SINCOEX,EXPEX,SQRTEX,LNEX,ATANEX, COMP 355 (* OTHER RUNTIME-SYSTEM ENTRY POINTS *) COMP 356 PITEX, COMP 357 ACVEX,CPVEX,PEGEX,PENEX,PEXEX,SCOEX,VPEEX, COMP 358 CFVEX,DFVEX, COMP 359 ENDEX,GTOEX,INITEX,INVEX, COMP 360 EEREX, COMP 361 RPEEX,SPEEX, COMP 362 (* MEMORY MANAGER ENTRY POINTS *) COMP 363 ALMEX,LIMEX, COMP 364 (* PASCAL LIBRARY ENTRY POINTS *) COMP 365 PMDEX,MVEEX); COMP 366 COMP 367 BOOLCOL = ARRAY[BOOLEAN] OF OPCODE; COMP 368 BOOLROW = ARRAY[BOOLEAN] OF BOOLCOL; COMP 369 BOOLARRAY = ARRAY[BOOLEAN] OF BOOLROW; COMP 370 REGTYPE = (REGA,REGX); COMP 371 SETTYPE = (APK,BPK,XPK,XPB,APB,AMB,BPB,BMB); COMP 372 SETTABL = ARRAY[SETTYPE,REGTYPE] OF OPCODE; COMP 373 INCOPRANGE = SAAPK..SXBMB; COMP 374 COMP 375 COMP 376 (*TO DESCRIBE EXPRESSION CURRENTLY COMPILED*) COMP 377 (*******************************************) COMP 378 COMP 379 ATTRKIND = (CST,VARBL,COND,EXPR); COMP 380 REGKIND = (NONE,XREG); COMP 381 REGNR = 0..7; COMP 382 COMP 383 ATTR = RECORD TYPTR: STP; COMP 384 CASE KIND: ATTRKIND OF COMP 385 CST: (CVAL: VALU); COMP 386 VARBL: (WORDACC: ACCESSKIND; TAGF: BOOLEAN; COMP 387 VLEVEL: LEVRANGE; CWDISPL: SHRTINT; COMP 388 VWDISPL: REGNR; COMP 389 DCLPCKD: BOOLEAN; COMP 390 CASE PCKD: BOOLEAN OF COMP 391 FALSE: (); COMP 392 TRUE: (CBDISPL: SHRTINT; COMP 393 BITREG: REGKIND; VBDISPL: REGNR)); COMP 394 COND: (CDR: REGNR; CONDCD: ZR..NG); COMP 395 EXPR: (EXPREG: REGNR) COMP 396 END; COMP 397 COMP 398 COMP 399 (*TO DESCRIBE REGISTER STATUS*) COMP 400 (*****************************) COMP 401 COMP 402 ARGSTR = (SIMPADDR,INDADDR,UNSPECADDR); COMP 403 XRGSTR = (AVAIL,SHRTCST,LONGCST,SIMPVAR,INDVAR,OTHER); COMP 404 REMXRG = SHRTCST..INDVAR; COMP 405 COMP 406 ARGSTAT = COMP 407 PACKED RECORD CASE ACONT: ARGSTR OF COMP 408 UNSPECADDR: (); COMP 409 SIMPADDR, COMP 410 INDADDR: (ADISPL: ADDRRANGE; COMP 411 CASE ARGSTR OF COMP 412 UNSPECADDR: (); COMP 413 SIMPADDR: (ALEV: LEVRANGE); COMP 414 INDADDR: (AREG: REGNR)) COMP 415 END; COMP 416 COMP 417 XRGSTAT = COMP 418 PACKED RECORD COMP 419 CASE XCONT: XRGSTR OF COMP 420 AVAIL: (); COMP 421 SHRTCST,LONGCST, COMP 422 SIMPVAR,INDVAR, COMP 423 OTHER: COMP 424 (REFNR: 0..100; LASTREF: ADDRRANGE; COMP 425 CASE REMXRG OF COMP 426 SHRTCST: COMP 427 (CSTVAL: SHRTINT); COMP 428 LONGCST: COMP 429 (CPTR: CTAILP); COMP 430 SIMPVAR, COMP 431 INDVAR: COMP 432 (SHFTCNT: BITRANGE; COMP 433 CASE DRCTINDRCT OF COMP 434 DRCT: COMP 435 (XLEV: LEVRANGE; XADDR: ADDRRANGE; COMP 436 VPADDR: BOOLEAN); COMP 437 INDRCT: COMP 438 (XREG: REGNR; XDISPL: ADDRRANGE))) COMP 439 END; COMP 440 COMP 441 ARGSTATUS = ARRAY [REGNR] OF ARGSTAT; COMP 442 XRGSTATUS = ARRAY [REGNR] OF XRGSTAT; COMP 443 BRGSTATUS = SET OF REGNR; (* SET OF FREE B-REGISTERS *) COMP 444 COMP 445 REGMAP = RECORD COMP 446 XMAP: XRGSTATUS; AMAP: ARGSTATUS COMP 447 END; COMP 448 COMP 449 BASREGS = ARRAY [LEVRANGE] OF REGNR; COMP 450 COMP 451 COMP 452 PLACE = PACKED RECORD SIX: ADDRRANGE; COMP 453 CIX: CODERANGE; CP: POSRANGE COMP 454 END; COMP 455 COMP 456 LOCREC = PACKED RECORD NXTREF: LOCOFREF; LOC: PLACE END; COMP 457 V41DC05 194 V41DC05 195 (*CONTROL STATEMENT PROCESSING*) V41DC05 196 (******************************) V41DC05 197 V41DC05 198 DSKIND = (P6000,ANSI,ISO0,ISO1); V41DC05 199 SETOFA2Z = SET OF 'A'..'Z'; V41DC05 200 CH7 = PACKED ARRAY [1..7] OF CHAR; V41DC05 201 ARGUMENT = (* CONTROL STATEMENT ARGUMENT *) V41DC05 202 PACKED RECORD V41DC05 203 N : CH7; (* NAME *) V41DC05 204 D : 0..777777B; (* DELIMITER *) V41DC05 205 END; V41DC05 206 ARGLIST = ARRAY [1..MAXFILES] OF ARGUMENT; V41DC05 207 V41DC05 208 CSPARAMS = (IPM, LPM, BPM, EPM, DSPM, GOPM, V41DC05 209 PDPM, PSPM, PLPM, REWPM, NOPM); V41DC05 210 CSPINDEX = 0..MAXCSPNAME; V41DC05 211 CSPARAMREC = (* CONTROL STATEMENT PARAMETER RECORD *) V41DC05 212 PACKED RECORD V41DC05 213 PNAME : CH7; V41DC05 214 SETTING : CSPINDEX; (* PARAM DEFAULT AND SETTING *) V41DC05 215 ALTDEF : CSPINDEX; (* ALTERNATE DEFAULT *) V41DC05 216 ALLOWEQ : BOOLEAN; (* ALLOW EQUIVALENCED PARAM *) V41DC05 217 ALLOWNE : BOOLEAN; (* ALLOW KEYWORD ALONE *) V41DC05 218 USED : BOOLEAN; (* PARAMETER USAGE FLAG *) V41DC05 219 END; V41DC05 220 V41DC05 221 OPTIONBLOCK = V41DC05 222 RECORD V41DC05 223 SOURCEFN : CH7; (* SOURCE FILE NAME *) V41DC05 224 OUTPUTFN : CH7; (* OUTPUT (LISTING) FILE NAME *) V41DC05 225 BINARYFN : CH7; (* LGO (BINARY) FILE NAME *) V41DC05 226 ERRORFN : CH7; (* ERROR OUTPUT FILE NAME *) V41DC05 227 REWINDF : SETOFA2Z; (* FILES (ILBE) TO REWIND *) V41DC05 228 LOADANDGO : BOOLEAN; (* LOAD AND EXECUTE BINARY *) V41DC05 229 EIGHTLPI : BOOLEAN; (* EIGHT LPI PAGE DENSITY *) V41DC05 230 PAGESIZE : INTEGER; (* LISTING PAGE SIZE *) V41DC05 231 LINELIMIT : INTEGER; (* OUTPUT FILE LINE LIMIT *) V41DC05 232 DIALECT : DSKIND; (* DIALECT SELECTION *) V41DC05 233 END; V41DC05 234 V41DC05 235 PAGESIZEREC = V41DC05 236 RECORD V41DC05 237 PD : INTEGER; (* PAGE DENSITY *) V41DC05 238 PS : INTEGER; (* PAGE LENGTH *) V41DC05 239 PW : INTEGER; (* PAGE WIDTH *) V41DC05 240 END; V41DC05 241 COMP 458 COMP 459 (*MISCELLANEOUS*) COMP 460 (***************) COMP 461 COMP 462 DOUBLE = RECORD UPPER: REAL; LOWER: REAL END; COMP 463 PMDKIND = (PMDON,PMDOFF,PMDSUPPRESS,PMDNONE); COMP 464 LINEBUFFER = ARRAY[1..MAXLINELEN] OF CHAR; COMP 465 COMP 466 TITLEBUFFER = PACKED ARRAY[1..MAXTITLE] OF CHAR; COMP 467 COMP 468 LANGUAGEKIND = (ENGLISH, FRENCH, GERMAN, USERDL); COMP 469 (*$L'GLOBAL VARIABLE DECLARATIONS.' *) COMP 484 COMP 485 COMP 486 VAR COMP 487 (*RETURNED BY SOURCE PROGRAM SCANNER COMP 488 INSYMBOL: COMP 489 **********) COMP 490 COMP 491 SOURCE: SEGTEXT; (*SOURCE PROGRAM FILE*) COMP 492 SY: SYMBOL; (*LAST SYMBOL*) COMP 493 OP: OPERATOR; (*CLASSIFICATION OF LAST SYMBOL*) COMP 494 IVAL: INTEGER; (*VALUE OF LAST INTEGER CONSTANT*) COMP 495 RVAL: REAL; (*VALUE OF LAST REAL CONSTANT*) COMP 496 CONSTP: CTAILP; (*POINTER TO LAST STRING*) COMP 497 LGTH: INTEGER; (*LENGTH OF LAST STRING CONSTANT*) COMP 498 ID: IDNAME; (*LAST IDENTIFIER*) COMP 499 IDSTART,IDEND, COMP 500 IDBREAK: IDSEGMENT; (*POINTERS TO ID EXTENSION*) COMP 501 EMPTYID: IDNAME; (*USED TO INITIALIZE IDS*) COMP 502 CH: CHAR; (*LAST CHARACTER*) COMP 503 COMP 504 COMP 505 (*COUNTERS:*) COMP 506 (***********) COMP 507 COMP 508 LC,IC: INTEGER; (*DATA LOCATION AND INSTR CNTER*) COMP 509 LABCNT: 0..MAXEXTLABCNT; (*NUMBER OF EXTERNAL LABELS*) V41AC03 7 EXTFILS: 0..MAXFILES; (*NUMBER OF EXTERNAL FILES*) V41AC02 8 PCNT: INTEGER; (*NUMBER OF PROCEDURES/FUNCTIONS*) COMP 512 COMP 513 COMP 514 (*SWITCHES:*) COMP 515 (***********) COMP 516 COMP 517 DP, (*DECLARATION PART*) COMP 518 TOPEXPR: BOOLEAN; (*TOP LEVEL EXPRESSION FLAG*) COMP 519 INTYPEDEFINITION: BOOLEAN; (*PARSING A TYPE DEFINTION*) COMP 520 LINENUMBERS: BOOLEAN; COMP 521 COMP 522 COMP 523 (*POINTERS:*) COMP 524 (***********) COMP 525 COMP 526 MARKERPTR, COMP 527 INTPTR,REALPTR,CHARPTR,ALFAPTR,STEXTPTR, COMP 528 BOOLPTR,NILPTR,TEXTPTR: STP; (*POINTERS TO PREDECLARED TYPES*) COMP 529 UTYPPTR,UCSTPTR,UVARPTR, COMP 530 UFLDPTR,UPRCPTR,UFCTPTR, (*POINTERS TO ENTRIES FOR UNDECL IDS*) COMP 531 INPUTPTR,OUTPUTPTR, (*ENTRIES FOR INPUT AND OUTPUT*) COMP 532 PMDFILEPTR, (*ENTRY FOR ALTERNATE PMD FILE*) V41DC06 12 FWPTR: CTP; (*HEAD OF CHAIN OF FORW TYPE IDS*) COMP 533 FSTLABP: LBP; (*HEAD OF LABEL CHAIN*) COMP 534 FEXFILP: EXTFILEP; (*HEAD OF LIST OF EXTERNAL FILES*) COMP 535 FSTCSP: CSP; (*HEAD OF CONSTANT CHAIN*) COMP 536 COMP 537 COMP 538 (*BOOKKEEPING OF DECLARATION LEVELS:*) COMP 539 (************************************) COMP 540 COMP 541 LEVEL: LEVRANGE; (*CURRENT STATIC LEVEL*) COMP 542 DISX, (*LEVEL OF LAST ID SRCHD BY SEARCHID*) COMP 543 TOP: DISPRANGE; (*TOP OF DISPLAY*) COMP 544 COMP 545 THISSCOPE, (*CURRENT SCOPE FOR ENTERID*) COMP 546 HIGHSCOPE: SCOPERANGE; (*HIGHEST SCOPE NUMBER USED*) COMP 547 COMP 548 DISPLAY: (*WHERE: MEANS:*) COMP 549 ARRAY [DISPRANGE] OF COMP 550 PACKED RECORD COMP 551 FNAME: CTP; COMP 552 CASE REGION: WHERE OF (*=BLCK: VARIABLE ID*) COMP 553 BLCK: (ASSIGNED: BOOLEAN; COMP 554 PFCP: CTP (* PROC/FUNC NAME *) ); COMP 555 DREC: (FFWPTR: CTP); (*=DREC: RECORD TYPE*) COMP 556 PFPAR: (); (*=PFPAR: PARAMETER LIST*) COMP 557 WREC: (WACC: DRCTINDRCT; (*=WREC: FIELD ID IN WITH-REC*) COMP 558 LEV: LEVRANGE; CWDSPL: ADDRRANGE; COMP 559 DCLPKD: BOOLEAN; COMP 560 CASE PKD: BOOLEAN OF COMP 561 FALSE: (); COMP 562 TRUE: (BACC: DRCTINDRCT; BDSPL: SHRTINT)) COMP 563 END; COMP 564 COMP 565 COMP 566 (*ERROR MESSAGES:*) COMP 567 (*****************) COMP 568 COMP 569 ERRINX: 0..MAXERRPERLINE; (* NR OF ACTIVE ENTRIES IN ERRLIST *) COMP 570 ERRORS: BOOLEAN; COMP 571 ERRLIST: COMP 572 ARRAY [1..MAXERRPERLINE] OF COMP 573 PACKED RECORD POS: 1..1000000; COMP 574 NMR: ERRINDEX COMP 575 END; COMP 576 ERLIST : ERLISTT; COMP 577 LANGUAGE: LANGUAGEKIND; (* D - DIAGNOSTIC LANGUAGE *) COMP 578 LANG: ARRAY [LANGUAGEKIND] OF ALFA; COMP 579 COMP 580 COMP 581 (*LISTING:*) COMP 582 (**********) COMP 583 COMP 584 LISTING: SEGTEXT; (* LISTING FILE *) V41DC05 242 LISTINGOPEN: BOOLEAN; (* TRUE IF LISTING FILE OPEN *) V41DC05 243 ERRFILE: SEGTEXT; (* ERROR FILE *) V41DC05 244 ERRFILEOPEN: BOOLEAN; (* TRUE IF ERROR FILE OPEN *) V41DC05 245 LINELENGTH,SOURCELENGTH,CHCNT: INTEGER; COMP 585 LINELC: INTEGER; COMP 586 LINENUM,LINESZ : INTEGER; COMP 587 NEXTNUM : INTEGER; COMP 588 SETLINENUM : BOOLEAN; COMP 589 TITLE,SUBTITLE: TITLEBUFFER; COMP 590 PAGE,LINESLEFT: INTEGER; COMP 591 SETTITLE,FIRSTHEADING: BOOLEAN; COMP 592 LINE: LINEBUFFER; COMP 593 V41DC05 246 V41DC05 247 (*CONTROL STATEMENT PROCESSING:*) V41DC05 248 (*******************************) V41DC05 249 V41DC05 250 OPTS: OPTIONBLOCK; V41DC05 251 CSPL: ARRAY [CSPARAMS] OF CSPARAMREC; V41DC05 252 CSPN: ARRAY [1..MAXCSPNAME] OF CH7; V41DC05 253 COMP 595 COMP 596 (*CODE GENERATION:*) COMP 597 (******************) COMP 598 COMP 599 GATTR: ATTR; COMP 600 CATTR: ATTR; COMP 601 ARGS: ARGSTATUS; XRGS: XRGSTATUS; BRGS: BRGSTATUS; COMP 602 BRG: BASREGS; COMP 603 LEVELS: SET OF LEVRANGE; COMP 604 BONUS: ARRAY [SHRTCST..INDVAR] OF INTEGER; COMP 605 EXTNAMES: ARRAY[VARR..TMEMR] OF ALFA; (* SPECIAL ENTRY POINTS *) COMP 606 PC: PLACE; RBUF,CBUF: INTEGER; COMP 607 BOOLOPCD: BOOLARRAY; COMP 608 SETINST: SETTABL; COMP 609 GENINCOPS: PACKED ARRAY [INCOPRANGE] OF OPCODE; COMP 610 EX: ARRAY[EXTERNALNAME] OF ALFA; (* PROC/FUNC EXTERNAL NAMES *) COMP 611 NOI: ARRAY[BOOLEAN] OF INTEGER; (* TABLE OF NO-OP INSTRUCTIONS *) COMP 612 PARAMREGS: ARRAY [1..MAXPARAMSINREGS] OF REGNR; COMP 613 LOADROTATEFLAG: BOOLEAN; V41AC08 12 COMP 614 COMP 615 (*CODEFILE AND TABLES FOR EXT. REFERENCES*) COMP 616 (*****************************************) COMP 617 COMP 618 LGO : LGOFILE; (* BINARY FILE *) V41DC05 254 BINARYOPEN : BOOLEAN; (* TRUE IF BINARY FILE OPEN *) V41DC05 255 COMPILERNAME : ALFA; (* 'PASCAL R.V' *) COMP 620 VALUES : ^LGOFILE; COMP 621 PROGNAME: ALFA; COMP 622 PROGBLOCK: ALFA; COMP 623 EXT, EXTROOT: EXTIDP; EXTIDX, EXTRX: INTEGER; COMP 624 ALFINT: RECORD CASE BOOLEAN OF COMP 625 FALSE: (A: ALFA); COMP 626 TRUE: (I: INTEGER) COMP 627 END; COMP 628 COMP 629 COMP 630 (*COMPILER OPTIONS*) COMP 631 (******************) COMP 632 COMP 633 ASCII,OLDASCII : BOOLEAN; (* A - ASCII CHARACTER SET *) COMP 634 BUFFSZ,OLDBUFFSZ: INTEGER; (* B - BUFFER SIZE *) COMP 635 EXTON,OLDEXTON: BOOLEAN; (* E - ENTRY POINT NAME CONTROL *) COMP 636 EPT1,EPT2: ALFA; COMP 637 (* SEE *ALTERNATE INPUT FILE* I - ALTERNATE INPUT FILE *) COMP 638 LISTON,OLDLISTON: BOOLEAN; (* L - LISTING CONTROL *) COMP 639 LCHANGED: BOOLEAN; COMP 640 (* M - MEMORY CONTROL OPTIONS *) COMP 641 INITIALSPACE,OLDINITIALSPACE: INTEGER; (* MB *) COMP 642 ALLOWDECREASE,OLDALLOWDECREASE: BOOLEAN; (* MD *) COMP 643 MINDECREASE,OLDMINDECREASE: INTEGER; (* MD *) COMP 644 MAXFL,OLDMAXFL: INTEGER; (* MF *) COMP 645 ALLOWINCREASE,OLDALLOWINCREASE: BOOLEAN; (* MI *) COMP 646 MININCREASE,OLDMININCREASE: INTEGER; (* MI *) COMP 647 INITIALREDUCE,OLDINITIALREDUCE: BOOLEAN; (* MR *) COMP 648 MSOPTION,OLDMSOPTION: INTEGER; (* MS *) COMP 649 MVOPTION,OLDMVOPTION: INTEGER; (* MV *) COMP 650 MXOPTION,OLDMXOPTION: INTEGER; (* MX *) COMP 651 MZOPTION,OLDMZOPTION: BOOLEAN; (* MZ *) COMP 652 OPTALLOWED,OLDOPTALWD: BOOLEAN; (* O - OPTIONS ALLOWED *) COMP 653 PMDOPT,OLDPMDOPT: PMDKIND; (* P - POST-MORTEM DUMP *) COMP 654 PRNTLIMIT,OLDPRNTLIMIT: INTEGER;(* PL- SET OUTPUT PRINT LIMIT *) COMP 655 QUICKMODE,OLDQUICKMODE: BOOLEAN;(* Q - QUICK GENERATED CODE *) COMP 656 STDFLAG,OLDSTDFLAG: BOOLEAN; (* S - STANDARD USAGE *) COMP 657 DEBUG,OLDDEBUG: BOOLEAN; (* T - RUN TIME TESTS *) COMP 658 MAXSRCLEN,OLDMAXSL: INTEGER; (* U - LINE WIDTH *) COMP 659 XPARMAX,OLDXPARMAX: INTEGER; (* X - PARAMETER PASSING *) COMP 660 ISSUESTAT,OLDISSUSTAT: BOOLEAN; (* Z - ISSUE STATISTICS MESSAGE *) COMP 661 COMP 662 COMP 663 (*ALTERNATE INPUT FILE*) COMP 664 (**********************) COMP 665 COMP 666 ALTFILE : TEXT; COMP 667 ALTLINENUMBERS,ALTERNATEINPUT,ALTERINGINPUT : BOOLEAN; COMP 668 COMP 669 COMP 670 (*STRUCTURED CONSTANTS:*) COMP 671 (***********************) COMP 672 COMP 673 DIGITS: SET OF '0'..'9'; COMP 674 CONSTBEGSYS,SIMPTYPEBEGSYS,TYPEBEGSYS,BLOCKBEGSYS,SELECTSYS,FACBEGSYS, COMP 675 STATBEGSYS,TYPEDELS,VALSPECBEGSYS,NONSTANDSYS: SETOFSYS; V41AC20 12 TENBLANKS: ALFA; COMP 677 RW: ARRAY [1..RESWORDS] OF ALFA; COMP 678 LRW: ARRAY [0..ALFALENG] OF 0..RESWORDS; COMP 679 FLRW : ARRAY[1..ALFALENG] OF SET OF 'A'..'Z'; COMP 680 RSY: ARRAY [1..RESWORDS] OF SYMBOL; COMP 681 ROP: ARRAY [1..RESWORDS] OF OPERATOR; COMP 682 SSY: ARRAY [BOOLEAN,'+'..';'] OF SYMBOL; COMP 683 SOP: ARRAY ['+'..';'] OF OPERATOR; COMP 684 KW: ARRAY[KEYWORD] OF ALFA; COMP 685 PASCL,PNAME: ALFA; COMP 686 TODAY,NOW,COMPILEDATE: ALFA; COMP 687 EFETOFFSET: ARRAY [BOOLEAN] OF ADDRRANGE; V41CC04 8 (*$L'GLOBAL VARIABLE INITIALIZATIONS.' *) COMP 688 COMP 689 COMP 690 VALUE COMP 691 (* INITIALIZE TABLES *) COMP 692 (*********************) COMP 693 COMP 694 KW=('GET ','PUT ','RESET ','REWRITE ','READ ', COMP 695 'READLN ','WRITE ','WRITELN ','PAGE ','PACK ', COMP 696 'UNPACK ','NEW ','DISPOSE ', COMP 697 'EOF ','EOLN ','ODD ','ROUND ','TRUNC ', COMP 698 'ABS ','SQR ','ORD ','CHR ','PRED ', COMP 699 'SUCC ','SIN ','COS ','ARCTAN ','EXP ', COMP 700 'SQRT ','LN ', COMP 701 'GETSEG ','PUTSEG ','GETFILE ','PUTFILE ', V41AC15 12 'MNEW ','MARK ','RELEASE ', COMP 703 'MESSAGE ','TIME ','DATE ','HALT ', COMP 704 'EOS ','EOI ', V41AC15 13 'UNDEFINED ','EXPO ','CARD ','CLOCK ', V41AC15 14 'RELVALUE ', V410C01 8 'FALSE ','TRUE ','MAXINT ', COMP 706 'COL ','PER ', COMP 707 'INTEGER ','REAL ','CHAR ','BOOLEAN ','TEXT ', COMP 708 'ALFA ','MARKER ', COMP 709 'INPUT ','OUTPUT ', COMP 710 'FORWARD ','EXTERN ','FORTRAN '); COMP 711 COMP 712 RW=('IF ','DO ','OF ','TO ','IN ', COMP 713 'OR ','END ','FOR ','VAR ','DIV ', COMP 714 'MOD ','SET ','AND ','NOT ','NIL ', COMP 715 'THEN ','ELSE ','WITH ','GOTO ','CASE ', COMP 716 'TYPE ','FILE ','BEGIN ','UNTIL ','WHILE ', COMP 717 'ARRAY ','CONST ','LABEL ','VALUE ','REPEAT ', COMP 718 'RECORD ','DOWNTO ','PACKED ','PROGRAM ','FUNCTION ', COMP 719 'PROCEDURE ','OTHERWISE ','SEGMENTED '); COMP 720 COMP 721 LRW=(0,0,6,15,22,29,33,34,35,38,38); COMP 722 COMP 723 FLRW=([], COMP 724 ['D','I','O','T'], COMP 725 ['A','D','E','F','M','N','S','V'], COMP 726 ['C','E','F','G','T','W'], COMP 727 ['A','B','C','L','U','V','W'], COMP 728 ['D','P','R'], COMP 729 ['P'], COMP 730 ['F'], COMP 731 ['O','P','S'], COMP 732 []); COMP 733 COMP 734 RSY=(IFSY,DOSY,OFSY,TOSY,RELOP,ADDOP,ENDSY,FORSY,VARSY,MULOP,MULOP, COMP 735 SETSY,MULOP,NOTSY,NILSY,THENSY,ELSESY,WITHSY,GOTOSY,CASESY, COMP 736 TYPESY,FILESY,BEGINSY,UNTILSY,WHILESY,ARRAYSY,CONSTSY,LABELSY, COMP 737 VALUESY,REPEATSY,RECORDSY,DOWNTOSY,PACKEDSY,PROGRAMSY, COMP 738 FUNCTIONSY,PROCEDURESY,OTHERWISESY,SEGMENTEDSY); COMP 739 COMP 740 ROP=(4 OF NOOP,INOP,OROP,3 OF NOOP,IDIV,IMOD,NOOP,ANDOP,25 OF NOOP); COMP 741 COMP 742 SSY=((ADDOP,ADDOP,MULOP,MULOP,LPARENT,RPARENT,OTHERSY,RELOP,OTHERSY, COMP 743 COMMA,PERIOD,OTHERSY,LBRACK,RBRACK,COLON,4 OF OTHERSY,ARROW, COMP 744 OTHERSY,RELOP,RELOP,3 OF OTHERSY,SEMICOLON), COMP 745 (ADDOP,ADDOP,MULOP,MULOP,LPARENT,RPARENT,OTHERSY,RELOP,OTHERSY, COMP 746 COMMA,PERIOD,OTHERSY,LBRACK,RBRACK,COLON,6 OF OTHERSY,RELOP, COMP 747 RELOP,ARROW,OTHERSY,ARROW,SEMICOLON)); COMP 748 COMP 749 SOP=(PLUS,MINUS,MUL,RDIV,3 OF NOOP,EQOP,13 OF NOOP,LTOP,GTOP, COMP 750 4 OF NOOP); COMP 751 COMP 752 ERLIST=(ERRMAX OF FALSE); COMP 753 COMP 754 LANG = ('ENGLISH ','FRENCH ','GERMAN ',' '); COMP 755 V41DC05 256 CSPL = ( (* CONTROL STATEMENT PARAMETERS *) V41DC05 257 (* NAME DF AD EQ NE USED *) V41DC05 258 ('I ', 1,10,TRUE, TRUE, FALSE), V41DC05 259 ('L ', 2,11,TRUE, TRUE, FALSE), V41DC05 260 ('B ', 3, 0,TRUE, TRUE, FALSE), V41DC05 261 ('E ', 4,12,TRUE, TRUE, FALSE), V41DC05 262 ('DS ', 5, 0,TRUE, FALSE,FALSE), V41DC05 263 ('GO ', 0, 0,FALSE,TRUE, FALSE), V41DC05 264 ('PD ', 6, 0,TRUE, TRUE, FALSE), V41DC05 265 ('PS ', 7, 0,TRUE, FALSE,FALSE), V41DC05 266 ('PL ', 8,13,TRUE, TRUE, FALSE), V41DC05 267 ('REW ', 9,14,TRUE, TRUE, FALSE), V41DC05 268 (' ', 0, 0,FALSE,FALSE,TRUE )); V41DC05 269 CSPN = (* CONTROL STATEMENT PARAMETER NAMES *) V41DC05 270 ('INPUT ','OUTPUT ','LGO ','OUTPUT ','P6000 ', V41DC05 271 ' ',' ','2000 ',' ','COMPILE', V41DC05 272 'LIST ','ERRS ','0 ','IB '); V41DC05 273 COMP 756 BOOLOPCD=(((BXXPX,BXXPCX),(BXXPX,BXXTX)), COMP 757 ((BXXTX,BXXTCX),(BXXTX,BXXPX))); COMP 758 COMP 759 SETINST=((SAAPK,SXAPK),(SABPK,SXBPK),(SAXPK,SXXPK),(SAXPB,SXXPB), COMP 760 (SAAPB,SXAPB),(SAAMB,SXAMB),(SABPB,SXBPB),(SABMB,SXBMB)); COMP 761 COMP 762 GENINCOPS = (SAAPB,SABPB,SAXPB,5 OF PS, COMP 763 SBAPB,SBBPB,SBXPB,5 OF PS, COMP 764 SXAPB,SXBPB,SXXPB,5 OF PS); COMP 765 COMP 766 EXTNAMES=('P.MAIN; ','P.GLOBL ','P.TERA ','P.TMEM '); COMP 767 COMP 768 EX=('P.GETB ','P.PUTB ','P.GETC ','P.PUTC ','P.GETCH ', COMP 769 'P.PUTCH ','P.GETLN ','P.PUTLN ', COMP 770 'P.RDI ','P.RDR ','P.WRF ','P.WRI ','P.WRE ', COMP 771 'P.WRC ','P.WRCD ','P.WRB ','P.WRS ','P.PAGE ', COMP 772 'P.RESET ','P.REWRT ','P.RWRTS ','P.GETS ','P.PUTS ', COMP 773 'P.GETF ','P.PUTF ','P.EOI ', V41AC15 15 'P.ALM ','P.NEWD ','P.LIM ','P.DISPD ', COMP 774 'P.MNW ','P.MND ','P.MRK ','P.RLS ', COMP 775 'P.CLOCK ','P.TIME ','P.DATE ','P.MSG ','P.HALT ', COMP 776 'P.SINCO ','P.EXP ','P.SQRT ','P.LN ','P.ATAN ', COMP 777 'P.PIT ', COMP 778 'P.ACV ','P.CPV ','P.PEG ','P.PEN ','P.PEX ', COMP 779 'P.SCO ','P.VPE ', COMP 780 'P.CFV ','P.DFV ', COMP 781 'P.END ','P.GTO ','P.INIT ','P.INV ', COMP 782 'P.EER ', COMP 783 'P.RPE ','P.SPE ', COMP 784 'P.ALM ','P.LIM ', COMP 785 'P.PMD ','P.MVE '); COMP 786 COMP 787 NOI=(61000B,46000B); (* SB0 B0+K / NO *) COMP 788 COMP 789 BONUS = (20,10,4,3); COMP 790 COMP 791 PARAMREGS = (0,1,2,3,4); COMP 792 V41AC08 13 LOADROTATEFLAG = TRUE; V41AC08 14 COMP 793 COMP 794 (* INITIALIZE STRINGS *) COMP 795 (**********************) COMP 796 COMP 797 PASCL = ALFA('P','A','S','C','L','.',4 OF COL); COMP 798 PNAME = ALFA('P','R','C',7 OF COL); COMP 799 PROGNAME = 'P.MAIN '; COMP 800 PROGBLOCK = 'P.MAIN '; COMP 801 COMPILERNAME = 'PASCAL R.V'; COMP 802 LANGUAGE = ENGLISH; COMP 803 TENBLANKS = ' '; COMP 804 TITLE = SITENAME; COMP 805 SUBTITLE = BLANKTITLE; COMP 806 COMP 807 COMP 808 (* INITIALIZE MISCELLANEOUS *) COMP 809 (****************************) COMP 810 COMP 811 FWPTR = NIL; COMP 812 FSTLABP = NIL; COMP 813 FSTCSP = NIL; COMP 814 INPUTPTR = NIL; COMP 815 OUTPUTPTR = NIL; COMP 816 PMDFILEPTR = NIL; V41DC06 13 LABCNT = 0; COMP 817 ERRORS = FALSE; COMP 818 DP = TRUE; COMP 819 TOPEXPR = TRUE; COMP 820 INTYPEDEFINITION = FALSE; COMP 821 ERRINX = 0; COMP 822 IC = 0; COMP 823 PCNT = 0; COMP 824 LC = MPLC; COMP 825 CHCNT = 0; COMP 826 LINENUM = 0; COMP 827 NEXTNUM = 0; COMP 828 VALUES = NIL; COMP 829 LISTINGOPEN = TRUE; V41EC08 6 ERRFILEOPEN = FALSE; V41DC05 275 BINARYOPEN = FALSE; V41DC05 276 PAGE = 0; COMP 830 LINESLEFT = 0; COMP 831 SETTITLE = TRUE; COMP 832 FIRSTHEADING = TRUE; COMP 833 CATTR = ATTR(NIL,CST,VALU(INT,0)); COMP 834 DISPLAY = (22 OF (NIL,BLCK,FALSE,NIL)); COMP 835 EMPTYID = (' ',NIL); COMP 836 THISSCOPE = 1; COMP 837 HIGHSCOPE = 1; COMP 838 EFETOFFSET = (BINEFET,TXTEFET); V41CC04 9 COMP 839 COMP 840 (* DEFAULT COMPILER OPTIONS *) COMP 841 (****************************) COMP 842 COMP 843 ASCII = TRUE; OLDASCII = TRUE; (* A+ *) COMP 844 BUFFSZ = 400B; OLDBUFFSZ = 400B; (* B2 *) COMP 845 EXTON = FALSE; OLDEXTON = FALSE; (* E- *) COMP 846 ALTERNATEINPUT = FALSE; ALTERINGINPUT = FALSE; (* I *) COMP 847 LISTON = TRUE; OLDLISTON = TRUE; (* L+ *) COMP 848 LCHANGED = FALSE; COMP 849 OPTALLOWED = TRUE; OLDOPTALWD = TRUE; (* O+ *) COMP 850 PMDOPT = PMDON; OLDPMDOPT = PMDON; (* P+ *) COMP 851 QUICKMODE = FALSE; OLDQUICKMODE = FALSE; (* Q- *) COMP 852 STDFLAG = FALSE; OLDSTDFLAG = FALSE; (* S- *) COMP 853 DEBUG = TRUE; OLDDEBUG = TRUE; (* T+ *) COMP 854 MAXSRCLEN = MAXLINELEN; OLDMAXSL = MAXLINELEN; (* U- *) COMP 855 XPARMAX = 4; OLDXPARMAX = 4; (* X4 *) COMP 856 ISSUESTAT = TRUE; OLDISSUSTAT = TRUE; (* Z+ *) COMP 857 COMP 858 COMP 859 (* DEFAULT MEMORY CONTROL OPTIONS *) COMP 860 (**********************************) COMP 861 COMP 862 INITIALSPACE = 0; OLDINITIALSPACE = 0; (* MB0 *) COMP 863 ALLOWDECREASE = FALSE; OLDALLOWDECREASE = FALSE; (* MD- *) COMP 864 MINDECREASE = 3000B; OLDMINDECREASE = 3000B; (* MD3000B *) COMP 865 MAXFL = MAXADDR; OLDMAXFL = MAXADDR; (* MF377777B *) COMP 866 ALLOWINCREASE = TRUE; OLDALLOWINCREASE = TRUE; (* MI+ *) COMP 867 MININCREASE = 2000B; OLDMININCREASE = 2000B; (* MI2000B *) COMP 868 INITIALREDUCE = TRUE; OLDINITIALREDUCE = TRUE; (* MR+ *) COMP 869 MSOPTION = 1000B; OLDMSOPTION = 1000B; (* MS1000B *) COMP 870 MVOPTION = 100B; OLDMVOPTION = 100B; (* MV100B *) COMP 871 MXOPTION = 400B; OLDMXOPTION = 400B; (* MX400B *) COMP 872 MZOPTION = FALSE; OLDMZOPTION = FALSE; (* MZ- *) COMP 873 COMP 874 COMP 875 (* INITIALIZE SETS *) COMP 876 (*******************) COMP 877 COMP 878 DIGITS = ['0'..'9']; COMP 879 CONSTBEGSYS = [ADDOP,INTCONST,REALCONST,CHARCONST,STRINGCONST,IDENT]; COMP 880 SIMPTYPEBEGSYS = [LPARENT,ADDOP,INTCONST,REALCONST,CHARCONST, COMP 881 STRINGCONST,IDENT]; COMP 882 TYPEBEGSYS = [ARROW,PACKEDSY,SEGMENTEDSY,ARRAYSY,RECORDSY,SETSY, COMP 883 FILESY,LPARENT,ADDOP,INTCONST,REALCONST,CHARCONST, COMP 884 STRINGCONST,IDENT]; COMP 885 TYPEDELS = [ARRAYSY,RECORDSY,SETSY,FILESY]; COMP 886 BLOCKBEGSYS = [LABELSY,CONSTSY,TYPESY,VARSY,VALUESY,PROCEDURESY, COMP 887 FUNCTIONSY,BEGINSY]; COMP 888 VALSPECBEGSYS = [ADDOP,INTCONST,REALCONST,CHARCONST,STRINGCONST,IDENT, COMP 889 NILSY,LPARENT,LBRACK]; COMP 890 SELECTSYS = [ARROW,PERIOD,LBRACK]; COMP 891 FACBEGSYS = [INTCONST,REALCONST,CHARCONST,STRINGCONST,IDENT,LPARENT, COMP 892 LBRACK,NOTSY,NILSY]; COMP 893 STATBEGSYS = [BEGINSY,GOTOSY,IFSY,WHILESY,REPEATSY,FORSY,WITHSY, COMP 894 CASESY]; COMP 895 NONSTANDSYS = [VALUESY,OTHERWISESY,SEGMENTEDSY]; V41AC20 14 (*$L'EXTERNAL ROUTINES.' *) COMP 896 COMP 897 COMP 898 PROCEDURE BMSG(NAME : ALFA); EXTERN; V41DC05 277 PROCEDURE CDATE(VAR COMPILEDATE : ALFA); EXTERN; V41DC05 278 PROCEDURE (*$E'CLOSE'*) CLOSEB(VAR F : LGOFILE); EXTERN; V41DC05 279 PROCEDURE (*$E'CLOSE'*) CLOSET(VAR F : TEXT); EXTERN; V41DC05 280 PROCEDURE CSARG(VAR ARGL : ARGLIST; VAR ARGC : INTEGER); EXTERN; V41DC05 281 PROCEDURE CSABORT(ERR : INTEGER; KEY, VAL : CH7); EXTERN; V41DC05 282 PROCEDURE (*$E'P.DADD'*) DADD(VAR R : DOUBLE; A, B : DOUBLE); EXTERN; V41DC05 283 PROCEDURE (*$E'P.DDIV'*) DDIV(VAR R : DOUBLE; A, B : DOUBLE); EXTERN; V41DC05 284 PROCEDURE (*$E'P.DMUL'*) DMUL(VAR R : DOUBLE; A, B : DOUBLE); EXTERN; V41DC05 285 FUNCTION (*$E'P.EFD'*) EFD : INTEGER; EXTERN; V41DC05 286 PROCEDURE FIND(VAR F : TEXT; FN, RN : ALFA); EXTERN; V41DC05 287 PROCEDURE GETPAGE(VAR P : PAGESIZEREC); EXTERN; V41DC05 288 PROCEDURE LOADGO(VAR F : LGOFILE); EXTERN; V41DC05 289 PROCEDURE MAKESET(N : CH7; VAR S : SETOFA2Z); EXTERN; V41DC05 290 FUNCTION MASK(C : BITRANGE) : INTEGER; EXTERN; V41DC05 291 FUNCTION MERGE(A, B : VALU) : INTEGER; EXTERN; V41DC05 292 PROCEDURE NEXTCH; EXTERN; V41DC05 293 PROCEDURE NEXTCHSETUP(VAR LINE : LINEBUFFER; V41DC05 294 VAR CH : CHAR; VAR CHCNT, SOURCELENGTH : INTEGER); EXTERN; V41DC05 295 PROCEDURE (*$E'OPEN'*) OPENB(VAR F : LGOFILE; V41DC05 296 FN : CH7; OPENWRITE : BOOLEAN); EXTERN; V41DC05 297 PROCEDURE (*$E'OPEN'*) OPENT(VAR F : TEXT; V41DC05 298 FN : CH7; OPENWRITE : BOOLEAN); EXTERN; V41DC05 299 FUNCTION (*$E'P.OS'*) OS : INTEGER; EXTERN; V41DC05 300 FUNCTION PORTION(W : INTEGER; SB,EB : BITRANGE) : INTEGER; EXTERN; V41DC05 301 PROCEDURE RLIBNAME(VAR FN : ALFA); EXTERN; V41DC05 302 FUNCTION ROTATE(W : INTEGER; C : BITRANGE) : INTEGER; EXTERN; V41DC05 303 PROCEDURE (*$E'P.TEN'*) TEN(VAR R : DOUBLE; X : INTEGER); EXTERN; V41DC05 304 PROCEDURE UNPACKCS(VAR LINE : LINEBUFFER); EXTERN; V41DC05 305 PROCEDURE WRITEOCT(VAR F : TEXT; N, W : INTEGER); EXTERN; V41DC05 306 (*$L'INPUT/OUTPUT PROCESSORS.' *) COMP 922 COMP 923 V41DC05 307 PROCEDURE CLOSEFILES; V41DC05 308 BEGIN (* CLOSEFILES *) V41DC05 309 CLOSET(ALTFILE); V41DC05 310 IF VALUES <> NIL THEN CLOSEB(VALUES^); V41DC05 311 CLOSET(SOURCE); CLOSET(LISTING); V41DC05 312 CLOSEB(LGO); CLOSET(ERRFILE) V41DC05 313 END (* CLOSEFILES *); V41DC05 314 V41DC05 315 PROCEDURE ABORT(MSG: PACKED ARRAY [LO..HI:INTEGER] OF CHAR); V41DC05 316 BEGIN (* ABORT *) V41DC05 317 CLOSEFILES; HALT(MSG) V41DC05 318 END (* ABORT *); V41DC05 319 COMP 924 PROCEDURE HEADING; COMP 925 CONST T1 = 'PASCAL COMPILER - E.T.H. ZUERICH / UNIVERSITY OF '; V41DC05 320 T2 = 'MINNESOTA. PASCAL-6000 V'; V41DC05 321 VAR CH : CHAR; V41DC05 322 BEGIN (* HEADING *) COMP 926 PAGE := PAGE + 1; COMP 927 IF FIRSTHEADING THEN COMP 928 BEGIN FIRSTHEADING := FALSE; COMP 929 WRITELN(LISTING,'Q'); (* CLEAR AUTO-EJECT *) V41DC05 323 IF OPTS.EIGHTLPI THEN CH := 'T' ELSE CH := 'S'; V41DC05 324 WRITELN(LISTING,CH) V41DC05 325 END; COMP 932 WRITE(LISTING,'1'); V41DC05 326 IF OPTS.EIGHTLPI THEN V41DC05 327 BEGIN WRITELN(LISTING); WRITE(LISTING,' ') END; V41DC05 328 WRITE(LISTING,T1,T2,CHR(RELNUM),'.',CHR(VERNUM),'.',CHR(LEVNUM),'.'); V41DC05 329 WRITELN(LISTING,CHR(ASCFLAG),TODAY,NOW); V41DC05 330 WRITE(LISTING,TITLE:41,SUBTITLE:44,OSNAME:15,' ':10,COMPILEDATE); V41DC05 331 IF OPTS.PAGESIZE < MAXINT THEN WRITE(LISTING,' PAGE ',PAGE:1); V41DC05 332 WRITELN(LISTING); WRITELN(LISTING); V41DC05 333 LINESLEFT := OPTS.PAGESIZE - 3; COMP 942 IF OPTS.EIGHTLPI THEN COMP 943 BEGIN WRITELN(LISTING); LINESLEFT := LINESLEFT - 2 END V41DC05 334 END (* HEADING *); COMP 945 COMP 946 PROCEDURE FLAGERROR; COMP 947 V41DC05 335 PROCEDURE WRITEFLAG(VAR F : SEGTEXT); V41DC05 336 VAR K, S : INTEGER;