Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

744 lines
36 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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