PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 1 ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE SCANM OBJECT MODULE PLACED IN SCAN.OBJ COMPILER INVOKED BY: :F0: SCAN.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF $title ('SCANNER MODULE') 1 scanm: do; /* modified 3/26/81 R. Silberstein modified 3/30/81 R. Silberstein modified 4/10/81 R. Silberstein modified 9/2/81 R. Silberstein */ $include (:f1:macro.lit) = $nolist $include (:f1:struc.lit) = $nolist $include (:f1:equals.lit) = $nolist $include (:f1:files.ext) = $nolist $include (:f1:predef.ext) = $nolist $include (:f1:subr2.ext) = $nolist $include (:f1:print.ext) = $nolist $include (:f1:global.ext) = $nolist /* Variables : */ 107 1 dcl eoffound byte, /* true if end-of-file is found */ lowercase byte, /* false if stringinput, otherwise true */ crfound byte, /* true if previous input was CR */ printready byte, /* true if output line to be printed */ stacksave addr; /* save of stack pointer */ /* Routine to perform unnormal exit from module */ 108 1 exit: proc; 109 2 stackptr=stacksave; /* restore input stack */ 110 2 end exit; /* Put printcharacter into printfile output buffer */ 111 1 putprintchar: proc(ch); 112 2 dcl ch byte; 113 2 sourcebuf(sourceptr)=ch; PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 2 114 2 if sourceptr < last(sourcebuf) then$do 116 3 sourceptr=sourceptr+1; 117 3 end$if; 118 2 end putprintchar; /* Read single character from input file. Put characters except CR-LF to printbuffer. Convert to uppercase letters */ 119 1 read$input: proc byte; 120 2 dcl ch byte; 121 2 if eoffound then call exit; /* unnormal exit */ /* read byte from file */ 123 2 if include$on then ch=inincludebyte; else ch=insourcebyte; 126 2 if ch=end$of$file then$do /* test for end-of-file */ 128 3 eoffound=true; 129 3 else$do 131 3 if crfound and ch=lf then$do /* ignore LF after CR */ 133 4 ch=space; 134 4 else$do; 137 4 if ch=cr then$do /* test for CR */ 139 5 crfound=true; 140 5 else$do; 143 5 crfound=false; 144 5 call putprintchar(ch); 145 5 if ch=lf then ch=space; /* interpret LF within line as space */ end$if; 148 4 end$if; 149 3 end$if; 150 2 if not lowercase then$do /* convert to uppercase */ 152 3 ch=upper(ch); 153 3 end$if; 154 2 return ch; 155 2 end read$input; /* skip blanks and tab's in input */ 156 1 skip$blanks: proc; 157 2 do while nextch=space or nextch=tab; 158 3 nextch=read$input; 159 3 end$while; 160 2 end skip$blanks; /* Put character into accumulator */ 161 1 putaccum: proc(ch); 162 2 dcl ch byte; 163 2 accum(acclen)=ch; 164 2 if acclen < last(accum) then$do 166 3 acclen=acclen+1; 167 3 end$if; 168 2 end put$accum; /* Routine to scan remainder of token until a non- PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 3 alphanumeric character is found. Skip blanks behind token */ 169 1 get$remainder: proc(numb); 170 2 dcl (cont,numb) byte; 171 2 cont=true; 172 2 do while cont; 173 3 do while alphanumeric(nextch:=read$input); 174 4 call putaccum(nextch); 175 4 end$while; 176 3 cont=false; 177 3 if nextch = '@' or nextch = '_' then$do 179 4 cont=true; 180 4 if numb then call putaccum(nextch); end$if; end$while; 184 2 call skipblanks; 185 2 end get$remainder; /* Routine to scan a text string. Called from SCAN */ 186 1 stringr: proc; 187 2 dcl cont byte; 188 2 lowercase=true; 189 2 acclen=0; 190 2 cont=true; 191 2 do while cont; 192 3 nextch=readinput; 193 3 do while nextch <> '''' and nextch <> cr; 194 4 call putaccum(nextch); 195 4 nextch=read$input; 196 4 end$while; 197 3 if nextch='''' then$do 199 4 if (nextch:=readinput) = '''' then$do /* interpret '' as ' */ 201 5 call putaccum(nextch); 202 5 else$do 204 5 lowercase=false; 205 5 call skipblanks; 206 5 token.type=string; 207 5 cont=false; 208 5 end$if; 209 4 else$do 211 4 lowercase=false; 212 4 token.type=error; 213 4 cont=false; 214 4 end$if; 215 3 end$while; 216 2 end stringr; /* Routine to scan a number. Called from SCAN. Test syntax of number, compute binary value. */ 217 1 numbr: proc; 218 2 dcl nobase byte, /* number system, 2,8,10 or 16 */ maxlgth byte, /* max legal no of digits */ PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 4 (i,j) byte, /* counters */ ch byte, value addr, /* 16 bit binary value */ errorflag byte; /* syntax error flag */ 219 2 errorflag=false; 220 2 call getremainder(true); /* get rest of token */ 221 2 ch=accum(acclen-1); /* pick up last character of token */ 222 2 j=acclen-2; /* B (binary) */ 223 2 IF CH = 'B' THEN 224 2 do; nobase=2; maxlgth=16; end; /* O or Q (octal) */ 228 2 ELSE IF CH = 'O' OR CH = 'Q' THEN 229 2 do; nobase=8; maxlgth=6; end; /* H (hexadecimal) */ 233 2 ELSE IF CH = 'H' THEN 234 2 do; nobase=16; maxlgth=4; end; /* D (decimal) */ 238 2 ELSE IF CH = 'D' THEN 239 2 do; nobase=10; maxlgth=5; end; /* no subscript, default=decimal */ ELSE 243 2 do; nobase=10; maxlgth=5; j=j+1; end; 248 2 i=0ffh; /* skip leading zeros */ 249 2 do while accum(i:=i+1) = '0'; end; 251 2 if j < maxlgth+i then$do 253 3 value=0; /* syntax check number, compute binary value */ 254 3 do while i <= j; 255 4 ch=accum(i); 256 4 ch=ch-'0'; 257 4 if ch > 9 then ch=ch-7; 259 4 if ch >= nobase then$do 261 5 errorflag=true; 262 5 end$if; 263 4 value=value*nobase+ch; 264 4 i=i+1; 265 4 end$while; 266 3 else$do 268 3 errorflag=true; 269 3 end$if; 270 2 if errorflag then$do 272 3 token.type=error; 273 3 else$do 275 3 token.type=number; 276 3 token.descr=0; 277 3 token.value=value; 278 3 end$if; 279 2 end numbr; PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 5 /* Routine to scan an identifier. Lookup identifier in table for predefined symbols */ 280 1 identr: proc; 281 2 call get$remainder(false); /* get rest of token into accumulator */ /* look up identifier */ 282 2 if not pfind(acclen,.accum(0),.token) then$do 284 3 token.type=ident; 285 3 end$if; 286 2 end identr; /* PUBLIC subroutines : */ 287 1 scaninit: proc public; 288 2 eofset,eoffound,crfound,lowercase,printready=false; 289 2 CALL FILL (SPACE, SIZE (PREFIX), .PREFIX); 290 2 CALL FILL (SPACE, LENGTH (ABSADDR), .ABSADDR); 291 2 sourceptr,prefixptr=0; 292 2 call printinit; /* initiate print module */ 293 2 call rewindsource; 294 2 nextch=space; 295 2 end scaninit; 296 1 scan: proc public; 297 2 stacksave=stackptr; 298 2 if printready then$do 300 3 call print$source$line; 301 3 print$ready=false; 302 3 end$if; 303 2 call skipblanks; 304 2 if eoffound then$do 306 3 token.type=spec; 307 3 if crfound then$do 309 4 eoffound=false; 310 4 eofset=true; 311 4 else$do 313 4 printready=true; /* terminate line before EOF */ 314 4 crfound=true; 315 4 accum(0)=cr; 316 4 end$if; 317 3 else$do 319 3 acclen=1; 320 3 accum(0)=nextch; /* identifier */ 321 3 IF LETTER (NEXTCH) THEN call identr; /* number */ 323 3 ELSE IF DIGIT (NEXTCH) THEN call numbr; /* string */ 325 3 ELSE IF NEXTCH = '''' THEN call stringr; /* special letter */ PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 6 ELSE 327 3 do; 328 4 token.type=spec; 329 4 if nextch='!' then accum(0) = cr; 331 4 IF NEXTCH = ';' THEN$DO 333 5 DO WHILE ACCUM (0) <> CR; 334 6 ACCUM (0) = READINPUT; 335 6 END$WHILE; 336 5 END$IF; 337 4 nextch=space; 338 4 if crfound then$do 340 5 print$ready=true; 341 5 else$do 343 5 call skipblanks; 344 5 end$if; 345 4 end; 346 3 end$if; 347 2 end scan; 348 1 skip$rest$of$line: proc public; 349 2 do while accum(0) <> cr; 350 3 call scan; 351 3 end$while; 352 2 end skip$rest$of$line; 353 1 specialtoken: proc(tok) byte public; 354 2 dcl tok byte; 355 2 if (token.type=spec) and (accum(0)=tok) then return true; 357 2 return false; 358 2 end specialtoken; 359 1 skip$until: proc(tok) byte public; 360 2 dcl tok byte; 361 2 do forever; 362 3 if token.type=spec then$do 364 4 if accum(0)=tok then$do 366 5 call scan; 367 5 return true; 368 5 end$if; 369 4 if accum(0)=cr then return false; end$if; 372 3 call scan; 373 3 end$forever; 374 2 end skip$until; 375 1 emptyline: proc byte public; 376 2 return specialtoken(cr); 377 2 end emptyline; 378 1 end$module scanm; PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 7 CROSS-REFERENCE LISTING ----------------------- DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES ----- ------ ----- -------------------------------- 49 0000H 2 A. . . . . . . . . WORD PARAMETER 50 104 0000H 4 ABSADDR. . . . . . BYTE ARRAY(4) EXTERNAL(70) 290 104 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(74) 163 164 166 189 221 222 282 319 104 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(77) 104 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(75) 163 164 221 249 255 282 315 320 330 333 334 349 355 364 369 104 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(76) 2 ADDR . . . . . . . LITERALLY 45 53 59 77 80 83 86 104 107 218 67 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(24) STACK=0000H 173 70 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(25) STACK=0000H 104 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS) 104 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL) 3 BASEREGBIT . . . . LITERALLY 3 BASEREGCOUNT . . . LITERALLY 3 BREGBIT. . . . . . LITERALLY 3 BREGCOUNT. . . . . LITERALLY 5 BYT. . . . . . . . LITERALLY 9 0000H 1 CH . . . . . . . . BYTE PARAMETER 10 218 000FH 1 CH . . . . . . . . BYTE 221 223 228 233 238 255 256 257 258 259 263 120 0008H 1 CH . . . . . . . . BYTE 124 125 126 131 133 137 144 145 146 152 154 88 0000H 1 CH . . . . . . . . BYTE PARAMETER 89 111 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 112 113 70 0000H 1 CH . . . . . . . . BYTE PARAMETER 71 73 0000H 1 CH . . . . . . . . BYTE PARAMETER 74 161 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 162 163 67 0000H 1 CH . . . . . . . . BYTE PARAMETER 68 64 0000H 1 CH . . . . . . . . BYTE PARAMETER 65 61 0000H 1 CH . . . . . . . . BYTE PARAMETER 62 15 0000H 1 CH . . . . . . . . BYTE PARAMETER 16 58 0000H 1 CH . . . . . . . . BYTE PARAMETER 59 12 0000H 1 CH . . . . . . . . BYTE PARAMETER 13 104 0000H 2 CIP. . . . . . . . WORD EXTERNAL(39) 38 0000H CLOSEHEX . . . . . PROCEDURE EXTERNAL(13) STACK=0000H 36 0000H CLOSEINCLUDE . . . PROCEDURE EXTERNAL(12) STACK=0000H 40 0000H CLOSEPRINT . . . . PROCEDURE EXTERNAL(14) STACK=0000H 32 0000H CLOSESOURCE. . . . PROCEDURE EXTERNAL(10) STACK=0000H 42 0000H CLOSESYMBOL. . . . PROCEDURE EXTERNAL(15) STACK=0000H 4 CODE . . . . . . . LITERALLY 104 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(96) 3 CODEMACROHEAD. . . LITERALLY 104 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(91) 170 0009H 1 CONT . . . . . . . BYTE 171 172 176 179 187 000AH 1 CONT . . . . . . . BYTE 190 191 207 213 2 CR . . . . . . . . LITERALLY 137 193 315 330 333 349 369 PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 8 376 107 0006H 1 CRFOUND. . . . . . BYTE 131 139 143 288 307 314 338 104 0000H 2 CSCIP. . . . . . . WORD EXTERNAL(44) 104 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(42) 104 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(40) 104 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(41) 104 0000H 1 CSPEC. . . . . . . BYTE EXTERNAL(51) 104 0000H 2 CURCSEG. . . . . . WORD EXTERNAL(47) 104 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(48) 104 0000H 2 CURESEG. . . . . . WORD EXTERNAL(50) 104 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(87) 104 0000H 2 CURSSEG. . . . . . WORD EXTERNAL(49) 76 0000H 2 D. . . . . . . . . WORD PARAMETER 77 79 0000H 2 D. . . . . . . . . WORD PARAMETER 80 85 0000H 2 D. . . . . . . . . WORD PARAMETER 86 82 0000H 2 D. . . . . . . . . WORD PARAMETER 83 2 DCL. . . . . . . . LITERALLY 85 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(30) STACK=0000H 104 0000H 1 DEFAULTDRIVE . . . BYTE EXTERNAL(94) 4 DELETEDSYMB. . . . LITERALLY 104 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN) 276 44 0000H 1 DEV. . . . . . . . BYTE PARAMETER 45 61 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(22) STACK=0000H 323 4 DOUBLEDEFINED. . . LITERALLY 104 0000H 2 DSCIP. . . . . . . WORD EXTERNAL(46) 104 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(52) 5 DWRD . . . . . . . LITERALLY 102 0000H EJECT. . . . . . . PROCEDURE EXTERNAL(37) STACK=0000H 2 ELSEDO . . . . . . LITERALLY 375 045FH 11 EMPTYLINE. . . . . PROCEDURE BYTE PUBLIC STACK=0008H 2 ENDCASE. . . . . . LITERALLY 2 ENDDO. . . . . . . LITERALLY 2 ENDFOREVER . . . . LITERALLY 2 ENDIF. . . . . . . LITERALLY 146 181 370 2 ENDMODULE. . . . . LITERALLY 2 ENDOFFILE. . . . . LITERALLY 126 2 ENDPROC. . . . . . LITERALLY 2 ENDWHILE . . . . . LITERALLY 182 107 0004H 1 EOFFOUND . . . . . BYTE 121 128 288 304 309 104 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(78) 288 310 76 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(27) STACK=0000H 4 ERROR. . . . . . . LITERALLY 212 272 218 0010H 1 ERRORFLAG. . . . . BYTE 219 261 268 270 104 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(81) 104 0000H 2 ERRORS . . . . . . WORD EXTERNAL(71) 104 0000H 2 ESCIP. . . . . . . WORD EXTERNAL(43) 104 0000H 1 ESPEC. . . . . . . BYTE EXTERNAL(54) 108 0000H 10 EXIT . . . . . . . PROCEDURE STACK=0002H 122 2 FALSE. . . . . . . LITERALLY 143 176 204 207 211 213 219 281 288 301 309 357 370 55 0000H 2 FCBADR . . . . . . WORD PARAMETER 56 55 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(20) STACK=0000H 3 FILEISTRUCTURE . . LITERALLY 3 FILEOSTRUCTURE . . LITERALLY 47 0000H FILESETUP. . . . . PROCEDURE BYTE EXTERNAL(17) STACK=0000H 58 0000H FILL . . . . . . . PROCEDURE EXTERNAL(21) STACK=0000H 289 290 44 0000H 2 FILNAM . . . . . . WORD PARAMETER 45 PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 9 44 0000H 2 FILTYP . . . . . . WORD PARAMETER 45 104 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(82) 2 FOREVER. . . . . . LITERALLY 361 2 FORMFEED . . . . . LITERALLY 104 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(84) 169 00E6H 85 GETREMAINDER . . . PROCEDURE STACK=0012H 220 281 105 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(97) STACK=0000H 104 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(92) 79 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(28) STACK=0000H 82 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(29) STACK=0000H 104 0000H 1 I. . . . . . . . . BYTE EXTERNAL(93) 218 000DH 1 I. . . . . . . . . BYTE 248 249 251 254 255 264 4 IDENT. . . . . . . LITERALLY 284 280 02DDH 37 IDENTR . . . . . . PROCEDURE STACK=0016H 322 44 0000H IFILESETUP . . . . PROCEDURE EXTERNAL(16) STACK=0000H 104 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(86) 104 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(57) 104 0000H 1 INCLUDEDEFAULT . . BYTE EXTERNAL(95) 104 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(85) 123 3 INDEXREGBIT. . . . LITERALLY 3 INDEXREGCOUNT. . . LITERALLY 20 0000H ININCLUDEBYTE. . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H 124 2 INIT . . . . . . . LITERALLY 18 0000H INSOURCEBYTE . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H 125 104 0000H 1 INTELHEXON . . . . BYTE EXTERNAL(79) 3 IREGBIT. . . . . . LITERALLY 3 IREGCOUNT. . . . . LITERALLY 218 000EH 1 J. . . . . . . . . BYTE 222 246 251 254 4 LAB. . . . . . . . LITERALLY LAST . . . . . . . BUILTIN 114 164 8 LEFTBRACKET. . . . LITERALLY LENGTH . . . . . . BUILTIN 290 104 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS) 104 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL) 64 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(23) STACK=0000H 321 2 LF . . . . . . . . LITERALLY 131 145 2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8 107 0005H 1 LOWERCASE. . . . . BYTE 150 188 204 211 288 104 0000H 2 MACROPTR . . . . . WORD EXTERNAL(83) 104 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(58) 218 000CH 1 MAXLGTH. . . . . . BYTE 226 231 236 241 245 251 76 0000H 1 N. . . . . . . . . BYTE PARAMETER 77 58 0000H 1 N. . . . . . . . . BYTE PARAMETER 59 49 0000H 1 N. . . . . . . . . BYTE PARAMETER 50 85 0000H 2 N. . . . . . . . . WORD PARAMETER 86 82 0000H 2 N. . . . . . . . . WORD PARAMETER 83 79 0000H 1 N. . . . . . . . . BYTE PARAMETER 80 4 NEGLECTED. . . . . LITERALLY 104 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(73) 157 158 173 174 177 181 192 193 194 195 197 199 201 294 320 321 323 325 329 331 337 5 NIL. . . . . . . . LITERALLY 218 000BH 1 NOBASE . . . . . . BYTE 225 230 235 240 244 259 263 104 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(80) 104 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(89) 3 NOOVERCOUNT. . . . LITERALLY PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 10 3 NOOVERRIDEBIT. . . LITERALLY 169 0004H 1 NUMB . . . . . . . BYTE PARAMETER AUTOMATIC 170 180 4 NUMBER . . . . . . LITERALLY 275 217 01BBH 290 NUMBR. . . . . . . PROCEDURE STACK=0016H 324 8 OAND . . . . . . . LITERALLY 8 OEQ. . . . . . . . LITERALLY 104 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS) 104 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL) 8 OGE. . . . . . . . LITERALLY 8 OGT. . . . . . . . LITERALLY 8 OLAST. . . . . . . LITERALLY 8 OLE. . . . . . . . LITERALLY 8 OLENGTH. . . . . . LITERALLY 8 OLT. . . . . . . . LITERALLY 8 OMOD . . . . . . . LITERALLY 8 ONE. . . . . . . . LITERALLY 8 ONOT . . . . . . . LITERALLY 8 OOFFSET. . . . . . LITERALLY 8 OOR. . . . . . . . LITERALLY 26 0000H OPENHEX. . . . . . PROCEDURE EXTERNAL(7) STACK=0000H 24 0000H OPENINCLUDE. . . . PROCEDURE EXTERNAL(6) STACK=0000H 28 0000H OPENPRINT. . . . . PROCEDURE EXTERNAL(8) STACK=0000H 22 0000H OPENSOURCE . . . . PROCEDURE EXTERNAL(5) STACK=0000H 30 0000H OPENSYMBOL . . . . PROCEDURE EXTERNAL(9) STACK=0000H 104 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(90) 3 OPERANDSTRUC . . . LITERALLY 104 4 OPERATOR . . . . . LITERALLY 8 OPTR . . . . . . . LITERALLY 8 OSEG . . . . . . . LITERALLY 8 OSHL . . . . . . . LITERALLY 8 OSHORT . . . . . . LITERALLY 8 OSHR . . . . . . . LITERALLY 8 OTYPE. . . . . . . LITERALLY 9 0000H OUTHEXBYTE . . . . PROCEDURE EXTERNAL(0) STACK=0000H 12 0000H OUTPRINTBYTE . . . PROCEDURE EXTERNAL(1) STACK=0000H 15 0000H OUTSYMBOLBYTE. . . PROCEDURE EXTERNAL(2) STACK=0000H 52 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(19) STACK=0000H 8 OXOR . . . . . . . LITERALLY 104 0000H 1 PAGESIZE . . . . . BYTE EXTERNAL(64) 104 0000H 1 PASS . . . . . . . BYTE EXTERNAL(38) 7 PCODEMACRO . . . . LITERALLY 7 PCSEG. . . . . . . LITERALLY 7 PDB. . . . . . . . LITERALLY 7 PDBIT. . . . . . . LITERALLY 7 PDD. . . . . . . . LITERALLY 7 PDSEG. . . . . . . LITERALLY 7 PDW. . . . . . . . LITERALLY 7 PEJECT . . . . . . LITERALLY 7 PEND . . . . . . . LITERALLY 7 PENDIF . . . . . . LITERALLY 7 PENDM. . . . . . . LITERALLY 7 PEQU . . . . . . . LITERALLY 7 PESEG. . . . . . . LITERALLY 49 0000H PFIND. . . . . . . PROCEDURE BYTE EXTERNAL(18) STACK=0000H 282 7 PIF. . . . . . . . LITERALLY 7 PIFLIST. . . . . . LITERALLY 7 PINCLUDE . . . . . LITERALLY PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 11 7 PLIST. . . . . . . LITERALLY 7 PMODRM . . . . . . LITERALLY 7 PNOIFLIST. . . . . LITERALLY 7 PNOLIST. . . . . . LITERALLY 7 PNOSEGFIX. . . . . LITERALLY 7 PORG . . . . . . . LITERALLY 7 PPAGESIZE. . . . . LITERALLY 7 PPAGEWIDTH . . . . LITERALLY 7 PRB. . . . . . . . LITERALLY 104 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(68) 289 104 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(69) 291 7 PRELB. . . . . . . LITERALLY 7 PRELW. . . . . . . LITERALLY 91 0000H PRINTCRLF. . . . . PROCEDURE EXTERNAL(32) STACK=0000H 104 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(61) 97 0000H PRINTINIT. . . . . PROCEDURE EXTERNAL(35) STACK=0000H 292 93 0000H PRINTNEWPAGE . . . PROCEDURE EXTERNAL(33) STACK=0000H 104 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(55) 107 0007H 1 PRINTREADY . . . . BYTE 288 298 301 313 340 88 0000H PRINTSINGLEBYTE. . PROCEDURE EXTERNAL(31) STACK=0000H 95 0000H PRINTSOURCELINE. . PROCEDURE EXTERNAL(34) STACK=0000H 300 104 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(56) 99 0000H PRINTTERMINATE . . PROCEDURE EXTERNAL(36) STACK=0000H 2 PROC . . . . . . . LITERALLY 9 12 15 18 20 22 24 26 28 30 32 34 36 38 40 42 44 47 49 67 70 79 82 85 88 91 93 95 97 99 102 108 111 119 156 161 169 186 217 280 287 296 348 353 359 375 7 PRS. . . . . . . . LITERALLY 7 PRW. . . . . . . . LITERALLY 7 PSEGFIX. . . . . . LITERALLY 4 PSEUDO . . . . . . LITERALLY 7 PSIMFORM . . . . . LITERALLY 7 PSSEG. . . . . . . LITERALLY 58 0000H 2 PT . . . . . . . . WORD PARAMETER 59 7 PTITLE . . . . . . LITERALLY 161 00C9H 29 PUTACCUM . . . . . PROCEDURE STACK=0004H 174 181 194 201 111 000AH 29 PUTPRINTCHAR . . . PROCEDURE STACK=0004H 144 6 RAH. . . . . . . . LITERALLY 6 RAL. . . . . . . . LITERALLY 6 RAX. . . . . . . . LITERALLY 6 RBH. . . . . . . . LITERALLY 6 RBL. . . . . . . . LITERALLY 6 RBP. . . . . . . . LITERALLY 6 RBX. . . . . . . . LITERALLY 6 RCH. . . . . . . . LITERALLY 6 RCL. . . . . . . . LITERALLY 6 RCS. . . . . . . . LITERALLY 6 RCX. . . . . . . . LITERALLY 6 RDH. . . . . . . . LITERALLY 6 RDI. . . . . . . . LITERALLY 6 RDL. . . . . . . . LITERALLY 6 RDS. . . . . . . . LITERALLY 6 RDX. . . . . . . . LITERALLY 119 0027H 121 READINPUT. . . . . PROCEDURE BYTE STACK=0008H 158 173 192 195 199 334 2 REENT. . . . . . . LITERALLY PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 12 4 REG. . . . . . . . LITERALLY 6 RES. . . . . . . . LITERALLY 34 0000H REWINDSOURCE . . . PROCEDURE EXTERNAL(11) STACK=0000H 293 8 RIGHTBRACKET . . . LITERALLY 6 RSI. . . . . . . . LITERALLY 6 RSP. . . . . . . . LITERALLY 6 RSS. . . . . . . . LITERALLY 76 0000H 2 S. . . . . . . . . WORD PARAMETER 77 49 0000H 2 S. . . . . . . . . WORD PARAMETER 50 104 0000H 12 SAVESOURCE . . . . BYTE ARRAY(12) EXTERNAL(60) 296 0348H 189 SCAN . . . . . . . PROCEDURE PUBLIC STACK=001AH 350 366 372 287 0302H 70 SCANINIT . . . . . PROCEDURE PUBLIC STACK=000AH 1 0000H SCANM. . . . . . . PROCEDURE STACK=0000H 3 SEGMBIT. . . . . . LITERALLY 3 SEGMCOUNT. . . . . LITERALLY 104 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS) 104 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL) 3 SEGTYPEBIT . . . . LITERALLY 3 SEGTYPECOUNT . . . LITERALLY 104 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS) 104 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL) 104 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(65) SIZE . . . . . . . BUILTIN 289 156 00A0H 41 SKIPBLANKS . . . . PROCEDURE STACK=000CH 184 205 303 343 348 0405H 17 SKIPRESTOFLINE . . PROCEDURE PUBLIC STACK=001EH 359 0432H 45 SKIPUNTIL. . . . . PROCEDURE BYTE PUBLIC STACK=0020H 104 0000H 80 SOURCEBUF. . . . . BYTE ARRAY(80) EXTERNAL(66) 113 114 104 0000H 12 SOURCENAME . . . . BYTE ARRAY(12) EXTERNAL(59) 104 0000H 1 SOURCEPTR. . . . . BYTE EXTERNAL(67) 113 114 116 291 2 SPACE. . . . . . . LITERALLY 133 146 157 289 290 294 337 4 SPEC . . . . . . . LITERALLY 306 328 355 362 353 0416H 28 SPECIALTOKEN . . . PROCEDURE BYTE PUBLIC STACK=0004H 376 104 0000H 2 SSCIP. . . . . . . WORD EXTERNAL(45) 104 0000H 1 SSPEC. . . . . . . BYTE EXTERNAL(53) STACKPTR . . . . . BUILTIN 109 297 107 0000H 2 STACKSAVE. . . . . WORD 109 297 4 STRING . . . . . . LITERALLY 206 186 013BH 128 STRINGR. . . . . . PROCEDURE STACK=0010H 326 2 STRUC. . . . . . . LITERALLY 104 104 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS) 104 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL) 4 SYMBOL . . . . . . LITERALLY 104 0000H 1 SYMBOLDEVICE . . . BYTE EXTERNAL(62) 3 SYMBOLHEAD . . . . LITERALLY 3 SYMBOLSTRUC. . . . LITERALLY 104 104 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(88) 52 0000H 2 T. . . . . . . . . WORD PARAMETER 53 2 TAB. . . . . . . . LITERALLY 157 55 0000H 2 TEXTADR. . . . . . WORD PARAMETER 56 2 THENDO . . . . . . LITERALLY 114 126 131 137 150 164 177 197 199 251 259 270 282 298 304 307 331 338 362 364 104 0000H 30 TITLE. . . . . . . BYTE ARRAY(30) EXTERNAL(63) 359 0004H 1 TOK. . . . . . . . BYTE PARAMETER AUTOMATIC 360 364 353 0004H 1 TOK. . . . . . . . BYTE PARAMETER AUTOMATIC 354 355 104 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(72) 206 212 272 275 276 277 282 284 306 328 355 362 PL/M-86 COMPILER SCANNER MODULE 10/5/81 PAGE 13 2 TRUE . . . . . . . LITERALLY 128 139 171 179 188 190 220 261 268 310 313 314 340 356 361 367 104 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 206 212 272 275 284 306 328 355 362 3 TYPEBIT. . . . . . LITERALLY 3 TYPECOUNT. . . . . LITERALLY 4 UDEFSYMB . . . . . LITERALLY 73 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(26) STACK=0000H 152 99 0000H 1 USEFACT. . . . . . BYTE PARAMETER 100 218 0002H 2 VALUE. . . . . . . WORD 253 263 277 104 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 277 4 VARIABLE . . . . . LITERALLY 5 WRD. . . . . . . . LITERALLY MODULE INFORMATION: CODE AREA SIZE = 046AH 1130D CONSTANT AREA SIZE = 0000H 0D VARIABLE AREA SIZE = 0011H 17D MAXIMUM STACK SIZE = 0020H 32D 848 LINES READ 0 PROGRAM ERROR(S) END OF PL/M-86 COMPILATION