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

1155 lines
60 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 EXPRESSION MODULE 10/5/81 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE EXPRES
OBJECT MODULE PLACED IN EXPR.OBJ
COMPILER INVOKED BY: :F0: EXPR.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
$title ('EXPRESSION MODULE')
1 expres:
do;
/*
modified 4/8/81 R. Silberstein
modified 4/24/81 R. Silberstein
modified 8/19/81 R. Silberstein
*/
/*
This is the module to evaluate expressions and
instruction operands. The entry subroutines are:
EXPRESSION (resultfield) byte
OPERAND byte
The expression subroutine evaluates a numeric or
memory expression. The "operand" routine evalates
a single instruction operand. Both routines return
FALSE if an error is found,otherwise true.
*/
$include (:f1:macro.lit)
= $nolist
$include (:f1:expr.x86)
= $nolist
$include (:f1:ermod.ext)
= $nolist
$include (:f1:exglob.ext)
= $nolist
$INCLUDE (:F1:SUBR2.EXT)
= $nolist
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 2
$eject
/************** global variables: ************/
69 1 dcl
maxlev lit '5', /* max no of nested parenthesis */
parlevel byte, /* current no of parenthesis level */
stck(600) byte, /* local stack within module */
savestack addr, /* save of initial entry stack */
expresserr byte, /* error flag */
noforward byte, /* true if undefined symbols to be neglected */
bracketlegal byte, /* true if bracket expression is legal */
udefflag byte; /* true if an udefined element found */
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 3
$eject
$include (:f1:bnf.tex)
=
= /*********** "BNF"-expression syntax ************/
= /*
= E::= E xor A !! E or A !! A
= A::= A and N !! N
= N::= not N !! R
= R::= P eq P !! P lt P !! P le P !! P gt P !! P ge P !! P ne P !! P
= P::= P + T !! P - T !! T
= T::= T * M !! T / M !! T mod M !! T shl M !! T shr M !! M
= M::= - M !! + M !! S
= S::= <over>: F !! F
= F::= F ptr B !! seg B !! offset B !! type B !!
= length B !! last B !! B
= B::= ( E ) !! [ bracket-expression ] !! I
= I::= varaible !! . number !! number !! label !! string
= <over>::= segment register
= (stringlength < 3)
=
= */
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 4
$eject
/************ michellaneous subroutines: ***********/
70 1 exprexit: proc (dummy);
71 2 dcl dummy byte;
72 2 stackptr=savestack;
73 2 end exprexit;
74 1 errorexit: proc; /* return if wrong syntax */
75 2 dcl dummy byte at (.udefflag);
76 2 expresserr=false;
77 2 call exprexit(dummy);
78 2 end errorexit;
79 1 clearoperand: proc(p);
80 2 dcl p address,oper based p operandstruc;
81 2 CALL FILL (0, .OPER.BASEINDEX - .OPER + 1, P);
82 2 OPER.BASEINDEX = NOOVERRIDEBIT;
83 2 end clearoperand;
/* routine to test if current token is member of a given
set of special characters.
Entry parameters: base = exitvalue if token is 1. member of set
numbel = no of elements in set
pt = pointer to list of elements
Exit value: routine= 0ffh if token not member of list
routine= base+i if token is element i,
token is skipped */
84 1 specmember: proc (base,numbel,pt) byte;
85 2 dcl (base,numbel,i) byte,pt address,list based pt (1) byte;
86 2 i=0ffh;
87 2 do while (i:=i+1) < numbel;
88 3 if specialtoken(list(i)) then$do call scan; return base+i; end$if;
end$while;
94 2 return 0ffh;
95 2 end specmember;
/* Routine to test if current token is member of a given set of
operators.
Entry/exit : see "specmember" header */
96 1 opmember: proc(base,numbel,pt) byte;
97 2 dcl (base,numbel,i,byteval) byte,pt address,list based pt (1) byte;
98 2 if token.type = operator then$do
100 3 i=0ffh;
101 3 do while (i:=i+1) < numbel;
102 4 byteval=token.value;
103 4 if byteval=list(i) then$do call scan; return base+i; end$if;
end$while;
109 3 end$if;
110 2 return 0ffh;
111 2 end opmember;
/* test if both operands are numbers, if not, error */
112 1 numbtest: proc (ptl,ptr);
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 5
113 2 dcl (ptl,ptr) address,(left based ptl,rigth based ptr) operandstruc;
114 2 if (left.stype <> number) or (rigth.stype <> number) then
115 2 call errorexit;
116 2 end numbtest;
/* find resulting symbol type as result of an addition or a
subtraction, test if illegal types */
117 1 typefind: proc (ptl,ptr);
118 2 dcl (ptl,ptr) address,stype byte,
(left based ptl,rigth based ptr) operandstruc;
119 2 dcl err lit '07fh',
crosstab(9) byte data(number,variable,lab,variable,err,err,
lab,err,err);
120 2 typeno: proc(typ) byte;
121 3 dcl typ byte;
122 3 if typ=number then return 0;
124 3 if typ=variable then return 1;
126 3 if typ=lab then return 2;
128 3 call errorexit; /* illegal member of expression */
129 3 end typeno;
130 2 stype=crosstab(typeno(left.stype)*3+typeno(rigth.stype));
131 2 if stype=err then call errorexit;
133 2 left.length=left.length+rigth.length;
134 2 left.stype=stype;
135 2 end typefind;
/* take care of segment specification in front of variables
syntax: <over>: variable, <over>=ES/SS/DS/CS */
136 1 segover: proc(pt) byte;
137 2 dcl pt address,segreg based pt byte;
138 2 if (token.type=reg) and (token.descr=dwrd) then$do
140 3 if nextch=':' then$do
142 4 segreg=token.value;
143 4 segreg=(shl(segreg,segtypecount) and segtypebit) or segmbit;
144 4 call scan; /* skip segment register */
145 4 call scan; /* skip : */
146 4 return 0;
147 4 end$if;
end$if;
149 2 return 0ffh;
150 2 end segover;
/* create a number operator */
151 1 createnumber: proc(p,n);
152 2 dcl p address,n addr,oper based p operandstruc;
153 2 call clearoperand(.oper);
154 2 oper.stype=number;
155 2 oper.offset=n;
156 2 end createnumber;
/* get current identificator, perform symboltable lookup
set undefined-symbol-flag if symbol not defined,
treat undefined symbols as numbers */
157 1 finditem: proc (pt);
158 2 dcl pt address,left based pt operandstruc,symbptr address,i byte;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 6
159 2 if token.type <> ident then$do
161 3 call clearoperand(.left);
162 3 left.stype=token.type;
163 3 left.sflag=token.descr;
164 3 left.offset=token.value;
165 3 else$do
167 3 if findsymbol(acclen,.accum(0),.symbptr) then$do
169 4 call getattributes(symbptr,.left);
170 4 i=left.stype;
171 4 if (i=neglected) or (i=doubledefined) or (i=udefsymb) then$do
173 5 udefflag=true;
174 5 left.stype=number;
175 5 expresserr=false;
176 5 call errmsg(udefsymbol);
177 5 end$if;
else$do
/* symbol undefined - test if it is to be "neglected" */
180 4 expresserr=false;
181 4 if noforward then$do
183 5 if not newsymbol(acclen,.accum,.symbptr) then$do
185 6 call errorexit;
186 6 end$if;
187 5 left.stype=neglected;
188 5 call enterattributes(symbptr,.left);
189 5 end$if;
190 4 call errmsg(udefsymbol);
191 4 udefflag=true;
192 4 end$if;
193 3 end$if;
194 2 call scan;
195 2 end finditem;
/* recognize the different symboltypes for the II (identicator)
subroutine */
196 1 symtyp: proc(pt) byte;
197 2 dcl pt address, left based pt operandstruc,i byte;
198 2 if specialtoken('$') then return 0;
200 2 if specialtoken('.') then return 1;
202 2 if token.type=string then$do
204 3 if (acclen > 0) and (acclen < 3 ) then return 2;
206 3 return 4; /* error */
207 3 end$if;
208 2 call finditem(.left);
209 2 i=left.stype;
210 2 if (i=pseudo) or (i=operator) or (i=spec) then return 4; /* error */
212 2 return 3;
213 2 end symtyp;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 7
$eject
/********** subroutines for each "NON-TERMINAL" **********/
/********** in "BNF" syntax **********/
214 1 II: proc (pt) reentrant;
215 2 dcl pt address,left based pt operandstruc,
doublebyt addr at (.accum(0)),saveb byte;
216 2 do case symtyp(.left);
217 3 do; /* $ */
218 4 left.stype=lab;
219 4 left.sflag=wrd;
220 4 left.offset=cip;
221 4 if csegspec then$do /* pick up current segment specification */
223 5 left.sflag=shl(csegtype,segtypecount) or segmbit or wrd;
224 5 left.segment=csegvalue;
225 5 end$if;
226 4 call scan; /* skip $ */
227 4 end;
228 3 do; /* . number */
229 4 call scan; /* skip . */
230 4 call finditem(.left);
231 4 if left.stype <> number then call errorexit;
233 4 left.stype=variable;
234 4 left.segment=curdseg;
235 4 left.sflag=shl(rds,segtypecount) and segtypebit;
236 4 if dspec then left.sflag=left.sflag or segmbit;
238 4 end;
239 3 do; /* string */
240 4 if acclen=1 then$do
242 5 call createnumber(.left,accum(0));
243 5 else$do
245 5 saveb=accum(0);
246 5 accum(0)=accum(1);
247 5 accum(1)=saveb;
248 5 call createnumber(.left,doublebyt);
249 5 end$if;
250 4 call scan; /* skip string */
251 4 end;
252 3 do; end; /* number,label,variable,register */
254 3 call errorexit;
255 3 end$case;
256 2 end II;
257 1 BB: proc (pt) reentrant;
258 2 dcl pt address,left based pt operandstruc;
259 2 if specialtoken('(') then$do
261 3 if (parlevel:=parlevel+1) > maxlev-1 then call errorexit;
263 3 call scan;
264 3 call EE(.left);
265 3 if not specialtoken(')') then call errorexit;
267 3 parlevel=parlevel-1;
268 3 call scan;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 8
269 3 return;
270 3 end$if;
271 2 if specialtoken(leftbracket) then$do
273 3 if not bracketlegal then call errorexit;
275 3 bracketlegal=false;
276 3 call scan; /* skip leftbracket */
277 3 call clearoperand(.left);
278 3 left.stype=number;
279 3 if not bracketexpr(.left) then call errorexit;
281 3 return;
282 3 end$if;
283 2 call II(.left);
284 2 end BB;
285 1 FF: proc (pt) reentrant;
286 2 dcl pt address,left based pt operandstruc,rigth operandstruc,
opertyp byte,val addr;
287 2 if (opertyp:=opmember(0,5,.(oseg,ooffset,otype,olength,olast)))
<> 0ffh then$do
289 3 call BB(.left);
290 3 do case opertyp;
291 4 do; /* SEG */
292 5 if (left.sflag and segmbit) = 0 then call errorexit;
294 5 call createnumber(.left,left.segment);
295 5 end;
296 4 do; /* OFFSET */
297 5 call createnumber(.left,left.offset);
298 5 end;
299 4 do; /* TYPE */
300 5 call createnumber(.left,left.sflag and typebit);
301 5 end;
302 4 do; /* LENGTH */
303 5 call createnumber(.left,left.length);
304 5 end;
305 4 do; /* LAST */
306 5 if (val:=left.length) = 0 then val=1;
308 5 call createnumber(.left,val-1);
309 5 end;
310 4 end$case;
311 3 else$do
313 3 call BB(.left);
314 3 do while opmember(0,1,.(optr)) <> 0ffh;
315 4 call BB(.rigth);
316 4 left.stype=rigth.stype;
317 4 left.segment=rigth.segment;
318 4 left.offset=rigth.offset;
319 4 left.baseindex=rigth.baseindex;
320 4 left.sflag=(left.sflag and typebit) or (rigth.sflag and
(not typebit));
321 4 end$while;
322 3 end$if;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 9
323 2 end FF;
324 1 SS: proc (pt) reentrant;
325 2 dcl pt address,left based pt operandstruc,segreg byte;
326 2 if segover(.segreg) <> 0ffh then$do
328 3 call FF(.left);
329 3 left.sflag=(left.sflag and (not segtypebit)) or segreg;
330 3 left.baseindex=left.baseindex and (not nooverridebit);
331 3 else$do
333 3 call FF(.left);
334 3 end$if;
335 2 end SS;
336 1 MM: proc (pt) reentrant;
337 2 dcl pt address,left based pt operandstruc,opertyp byte;
338 2 if (opertyp:=specmember(0,2,.('+-'))) <> 0ffh then$do
340 3 call MM(.left);
341 3 call numbtest(.left,.left);
342 3 if opertyp=1 then$do
344 4 left.offset=-left.offset;
345 4 end$if;
else$do
348 3 call SS(.left);
349 3 end$if;
350 2 end MM;
351 1 TT: proc (pt) reentrant;
352 2 dcl pt address,left based pt operandstruc,rigth operandstruc,
opertyp byte,(leftval,rigthval) addr;
353 2 call MM(.left);
354 2 do while (opertyp:=specmember(0,2,.('*/')) and
opmember(2,3,.(omod,oshl,oshr))) <> 0ffh;
355 3 call MM(.rigth);
356 3 call numbtest(.left,.rigth);
357 3 leftval=left.offset;
358 3 rigthval=rigth.offset;
359 3 do case opertyp;
360 4 leftval=leftval*rigthval;
361 4 leftval=leftval/rigthval;
362 4 leftval=leftval mod rigthval;
363 4 if rigthval>0 and rigthval<16 then leftval=shl(leftval,rigthval);
if rigthval>0 and rigthval<16 then leftval=shr(leftval,rigthval);
end$case;
368 3 left.offset=leftval;
369 3 end$while;
370 2 end TT;
371 1 PP: proc (pt) reentrant;
372 2 dcl pt address,left based pt operandstruc,rigth operandstruc,
opertyp byte;
373 2 call TT(.left);
374 2 do while (opertyp:=specmember(0,2,.('+-'))) <> 0ffh;
375 3 call TT(.rigth);
376 3 call typefind(.left,.rigth);
377 3 if opertyp=0 then$do
379 4 left.offset=left.offset+rigth.offset;
380 4 else$do
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 10
382 4 left.offset=left.offset-rigth.offset;
383 4 end$if;
384 3 end$while;
385 2 end PP;
386 1 RR: proc (pt) reentrant;
387 2 dcl pt address,left based pt operandstruc,rigth operandstruc,
opertyp byte,(leftval,rigthval) addr;
388 2 call PP(.left);
389 2 if (opertyp:=opmember(0,6,.(oeq,olt,ole,ogt,oge,one))) <> 0ffh
then$do
391 3 call PP(.rigth);
392 3 call numbtest(.left,.rigth);
393 3 leftval=left.offset;
394 3 rigthval=rigth.offset;
395 3 do case opertyp;
396 4 leftval = (leftval = rigthval);
397 4 leftval = (leftval < rigthval);
398 4 leftval = (leftval <= rigthval);
399 4 leftval = (leftval > rigthval);
400 4 leftval = (leftval >= rigthval);
401 4 leftval = (leftval <> rigthval);
402 4 end$case;
403 3 IF LEFTVAL = 0FFH THEN LEFTVAL = 0FFFFH;
405 3 left.offset=leftval;
406 3 end$if;
407 2 end RR;
408 1 NN: proc (pt) reentrant;
409 2 dcl pt address,left based pt operandstruc;
410 2 if opmember(0,1,.(onot)) <> 0ffh then$do
412 3 call NN(.left);
413 3 call numbtest(.left,.left);
414 3 left.offset=not left.offset;
415 3 else$do
417 3 call RR(.left);
418 3 end$if;
419 2 end NN;
420 1 AA: proc (pt) reentrant;
421 2 dcl pt address,left based pt operandstruc,rigth operandstruc;
422 2 call NN(.left);
423 2 do while opmember(0,1,.(oand)) <> 0ffh;
424 3 call NN(.rigth);
425 3 call numbtest(.left,.rigth);
426 3 left.offset=left.offset and rigth.offset;
427 3 end$while;
428 2 end AA;
429 1 EE: proc (pt) reentrant;
430 2 dcl pt address,left based pt operandstruc,right operandstruc,
opertype byte;
431 2 call AA(.left);
432 2 do while (opertype:=opmember(0,2,.(oor,oxor))) <> 0ffh;
433 3 call AA(.right);
434 3 call numbtest(.left,.right);
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 11
435 3 if opertype=0 then$do
437 4 left.offset=left.offset or right.offset;
438 4 else$do
440 4 left.offset=left.offset xor right.offset;
441 4 end$if;
442 3 end$while;
443 2 end EE;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 12
$eject
/*************** MAIN SUBROUTINES ***************/
444 1 realexpress: proc(pt);
445 2 dcl pt address,oper based pt operandstruc,
dummy byte at(.udefflag);
446 2 savestack=stackptr; /* use local stack for reentrant routines */
447 2 stackptr=.stck(length(stck));
448 2 call EE(.oper);
449 2 call exprexit(dummy);
450 2 end realexpress;
451 1 express: proc(pt) byte;
452 2 dcl pt address,oper based pt operandstruc;
453 2 expresserr=true;
454 2 udefflag=false;
455 2 parlevel=0;
456 2 call realexpress(.oper);
457 2 if udefflag then$do
459 3 oper.stype=number;
460 3 oper.sflag=byt;
461 3 oper.offset=0;
462 3 end$if;
463 2 return expresserr;
464 2 end express;
/* normal expression */
465 1 expression: proc (pt) byte public;
466 2 dcl pt address;
467 2 noforward=false;
468 2 bracketlegal=false;
469 2 return express(pt);
470 2 end expression;
/* special expression - mark all undefined symbols as "neglected" */
471 1 noforwardexpr: proc(pt) byte public;
472 2 dcl pt address;
473 2 noforward=true;
474 2 bracketlegal=false;
475 2 return express(pt);
476 2 end noforwardexpr;
477 1 OPERND: PROC BYTE;
478 2 dcl exitvalue byte,pt address,oper based pt operandstruc;
479 2 pt=.operands(nooper);
480 2 exitvalue=true;
481 2 bracketlegal=true;
482 2 exitvalue=express(pt);
483 2 if specialtoken(leftbracket) then$do
485 3 if bracketlegal then$do
487 4 call scan;
488 4 exitvalue=exitvalue and bracketexpr(pt);
489 4 else$do
491 4 exitvalue=false;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 13
492 4 end$if;
493 3 end$if;
494 2 return exitvalue;
495 2 END OPERND;
496 1 OPERAND: PROC BYTE PUBLIC;
497 2 NOFORWARD = FALSE;
498 2 RETURN OPERND;
499 2 END OPERAND;
500 1 NOFORWARDOPER: PROC BYTE PUBLIC;
501 2 NOFORWARD = TRUE;
502 2 RETURN OPERND;
503 2 END NOFORWARDOPER;
504 1 end$module expres;
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 14
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
420 07EBH 70 AA . . . . . . . . PROCEDURE REENTRANT STACK=0096H 431 433
32 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(16) 167 183 204 240
32 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(17) 167 183 215
242 245 246 247
2 ADDR . . . . . . . LITERALLY 10 13 16 19 32 34 40
58 61 64 67 69 80 113 118 152 158
197 215 258 286 325 337 352 372 387 409
421 430 445 452 478
48 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(25) STACK=0000H
51 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(26) STACK=0000H
96 0008H 1 BASE . . . . . . . BYTE PARAMETER AUTOMATIC 97 106
84 0008H 1 BASE . . . . . . . BYTE PARAMETER AUTOMATIC 85 91
32 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
452 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
158 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
352 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
113 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
113 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
152 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
215 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
352 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
478 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
430 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGHT)
372 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
421 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
387 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
421 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
430 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
409 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
286 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH) 319
372 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
258 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
337 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
118 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
286 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT) 319
445 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
325 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT) 330
387 0008H 1 BASEINDEX. . . . . BYTE MEMBER(RIGTH)
118 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
80 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER) 81 82
197 0008H 1 BASEINDEX. . . . . BYTE MEMBER(LEFT)
7 BASEREGBIT . . . . LITERALLY
7 BASEREGCOUNT . . . LITERALLY
257 03B0H 143 BB . . . . . . . . PROCEDURE REENTRANT STACK=0026H 289 313
315
26 0000H BRACKETEXPR. . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H 279
488
69 0261H 1 BRACKETLEGAL . . . BYTE 273 275 468 474 481 485
7 BREGBIT. . . . . . LITERALLY
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 15
7 BREGCOUNT. . . . . LITERALLY
4 BYT. . . . . . . . LITERALLY 460
97 0265H 1 BYTEVAL. . . . . . BYTE 102 103
45 0000H 1 CH . . . . . . . . BYTE PARAMETER 46
48 0000H 1 CH . . . . . . . . BYTE PARAMETER 49
51 0000H 1 CH . . . . . . . . BYTE PARAMETER 52
54 0000H 1 CH . . . . . . . . BYTE PARAMETER 55
39 0000H 1 CH . . . . . . . . BYTE PARAMETER 40
42 0000H 1 CH . . . . . . . . BYTE PARAMETER 43
32 0000H 2 CIP. . . . . . . . WORD EXTERNAL(8) 220
79 001DH 33 CLEAROPERAND . . . PROCEDURE STACK=000CH 153 161 277
3 CODE . . . . . . . LITERALLY
2 CR . . . . . . . . LITERALLY
151 0184H 32 CREATENUMBER . . . PROCEDURE STACK=0014H 242 248 294 297
300 303 308
119 0000H 9 CROSSTAB . . . . . BYTE ARRAY(9) DATA 130
32 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(11) 221
32 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(9) 223
32 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(10) 224
32 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(13) 234
63 0000H 2 D. . . . . . . . . WORD PARAMETER 64
57 0000H 2 D. . . . . . . . . WORD PARAMETER 58
66 0000H 2 D. . . . . . . . . WORD PARAMETER 67
60 0000H 2 D. . . . . . . . . WORD PARAMETER 61
2 DCL. . . . . . . . LITERALLY
66 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(31) STACK=0000H
3 DELETEDSYMB. . . . LITERALLY
32 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN) 138 163
15 0000H 2 DEST . . . . . . . WORD PARAMETER 16
42 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(23) STACK=0000H
215 0000H 2 DOUBLEBYT. . . . . WORD EXTERNAL(17) AT 248
3 DOUBLEDEFINED. . . LITERALLY 171
32 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(12) 236
70 0004H 1 DUMMY. . . . . . . BYTE PARAMETER AUTOMATIC 71
75 0262H 1 DUMMY. . . . . . . BYTE AT 77
445 0262H 1 DUMMY. . . . . . . BYTE AT 449
4 DWRD . . . . . . . LITERALLY 138
429 0831H 90 EE . . . . . . . . PROCEDURE REENTRANT STACK=00A6H 264 448
2 ELSEDO . . . . . . LITERALLY 177 345
2 ENDCASE. . . . . . LITERALLY 366
2 ENDDO. . . . . . . LITERALLY
2 ENDFOREVER . . . . LITERALLY
2 ENDIF. . . . . . . LITERALLY 147
2 ENDMODULE. . . . . LITERALLY
2 ENDOFFILE. . . . . LITERALLY
2 ENDPROC. . . . . . LITERALLY
2 ENDWHILE . . . . . LITERALLY 92 107
18 0000H ENTERATTRIBUTES. . PROCEDURE EXTERNAL(3) STACK=0000H 188
57 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(28) STACK=0000H
119 ERR. . . . . . . . LITERALLY 119 131
29 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(7) STACK=0000H 176 190
29 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 30
74 000CH 17 ERROREXIT. . . . . PROCEDURE STACK=0008H 115 128 132 185
232 254 262 266 274 280 293
478 0269H 1 EXITVALUE. . . . . BYTE 480 482 488 491 494
1 0000H EXPRES . . . . . . PROCEDURE STACK=0000H
451 08B0H 63 EXPRESS. . . . . . PROCEDURE BYTE STACK=00B2H 469 475 482
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 16
69 025FH 1 EXPRESSERR . . . . BYTE 76 175 180 453 463
465 08EFH 23 EXPRESSION . . . . PROCEDURE BYTE PUBLIC STACK=00B8H
70 0000H 12 EXPREXIT . . . . . PROCEDURE STACK=0004H 77 449
2 FALSE. . . . . . . LITERALLY 76 175 180 275 454 467 468
474 491 497
36 0000H 2 FCBADR . . . . . . WORD PARAMETER 37
285 043FH 247 FF . . . . . . . . PROCEDURE REENTRANT STACK=0038H 328 333
36 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(21) STACK=0000H
39 0000H FILL . . . . . . . PROCEDURE EXTERNAL(22) STACK=0000H 81
157 01A4H 200 FINDITEM . . . . . PROCEDURE STACK=0012H 208 230
12 0000H FINDSYMBOL . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 167
2 FOREVER. . . . . . LITERALLY
2 FORMFEED . . . . . LITERALLY
15 0000H GETATTRIBUTES. . . PROCEDURE EXTERNAL(2) STACK=0000H 169
60 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(29) STACK=0000H
63 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(30) STACK=0000H
97 0264H 1 I. . . . . . . . . BYTE 100 101 103 106
158 0267H 1 I. . . . . . . . . BYTE 170 171
85 0263H 1 I. . . . . . . . . BYTE 86 87 88 91
197 0268H 1 I. . . . . . . . . BYTE 209 210
3 IDENT. . . . . . . LITERALLY 159
214 02CCH 228 II . . . . . . . . PROCEDURE REENTRANT STACK=0020H 283
7 INDEXREGBIT. . . . LITERALLY
7 INDEXREGCOUNT. . . LITERALLY
2 INIT . . . . . . . LITERALLY
7 IREGBIT. . . . . . LITERALLY
7 IREGCOUNT. . . . . LITERALLY
3 LAB. . . . . . . . LITERALLY 119 126 218
158 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 161 162 163 164 169
170 174 187 188
409 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 412 413 414 417
421 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 422 425 426
215 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 216 218 219 220 223
224 230 231 233 234 235 237 242 248
352 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 353 356 357 368
372 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 373 376 379 382
337 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 340 341 344 348
258 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 264 277 278 279 283
430 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 431 434 437 440
387 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 388 392 393 405
197 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 208 209
325 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 328 329 330 333
118 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PTL) 130 133 134
286 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PT) 289 292 294 297 300
303 306 308 313 316 317 318 319 320
113 0000H 9 LEFT . . . . . . . STRUCTURE BASED(PTL) 114
6 LEFTBRACKET. . . . LITERALLY 271 483
387 0002H 2 LEFTVAL. . . . . . WORD AUTOMATIC 393 396 397 398 399 400
401 403 404 405
352 0002H 2 LEFTVAL. . . . . . WORD AUTOMATIC 357 360 361 362 364 366
368
421 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
325 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
372 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
409 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
372 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
421 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 17
352 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
337 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
352 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
430 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGHT)
387 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
32 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
286 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
286 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT) 303 306
430 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
258 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
215 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
LENGTH . . . . . . BUILTIN 447
80 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
197 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
452 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
158 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
152 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
387 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
118 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH) 133
118 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT) 133
478 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
113 0000H 2 LENGTH . . . . . . WORD MEMBER(RIGTH)
445 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
113 0000H 2 LENGTH . . . . . . WORD MEMBER(LEFT)
45 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(24) STACK=0000H
2 LF . . . . . . . . LITERALLY
12 0000H 1 LG . . . . . . . . BYTE PARAMETER 13
9 0000H 1 LG . . . . . . . . BYTE PARAMETER 10
85 0000H 1 LIST . . . . . . . BYTE BASED(PT) ARRAY(1) 88
97 0000H 1 LIST . . . . . . . BYTE BASED(PT) ARRAY(1) 103
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
69 119
69 MAXLEV . . . . . . LITERALLY 261
336 0573H 71 MM . . . . . . . . PROCEDURE REENTRANT STACK=0048H 340 353
355
66 0000H 2 N. . . . . . . . . WORD PARAMETER 67
63 0000H 2 N. . . . . . . . . WORD PARAMETER 64
39 0000H 1 N. . . . . . . . . BYTE PARAMETER 40
57 0000H 1 N. . . . . . . . . BYTE PARAMETER 58
60 0000H 1 N. . . . . . . . . BYTE PARAMETER 61
151 0004H 2 N. . . . . . . . . WORD PARAMETER AUTOMATIC 152 155
3 NEGLECTED. . . . . LITERALLY 171 187
9 0000H NEWSYMBOL. . . . . PROCEDURE BYTE EXTERNAL(0) STACK=0000H 183
32 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(15) 140
4 NIL. . . . . . . . LITERALLY
408 07AFH 60 NN . . . . . . . . PROCEDURE REENTRANT STACK=0086H 412 422
424
69 0260H 1 NOFORWARD. . . . . BYTE 181 467 473 497 501
471 0906H 23 NOFORWARDEXPR. . . PROCEDURE BYTE PUBLIC STACK=00B8H
500 0979H 13 NOFORWARDOPER. . . PROCEDURE BYTE PUBLIC STACK=00BAH
32 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(18) 479
7 NOOVERCOUNT. . . . LITERALLY
7 NOOVERRIDEBIT. . . LITERALLY 82 330
96 0006H 1 NUMBEL . . . . . . BYTE PARAMETER AUTOMATIC 97 101
84 0006H 1 NUMBEL . . . . . . BYTE PARAMETER AUTOMATIC 85 87
3 NUMBER . . . . . . LITERALLY 114 119 122 154 174 231 278
459
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 18
112 00B8H 28 NUMBTEST . . . . . PROCEDURE STACK=0010H 341 356 392 413
425 434
6 OAND . . . . . . . LITERALLY 423
6 OEQ. . . . . . . . LITERALLY 389
452 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER) 461
445 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER)
430 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 437 440
421 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH) 426
421 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 426
409 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 414
387 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH) 394
387 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 393 405
372 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH) 379 382
372 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 379 382
352 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH) 358
352 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 357 368
337 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 344
32 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
325 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT)
286 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH) 318
286 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 297 318
478 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER)
258 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT)
215 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 220
430 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGHT) 437 440
197 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT)
158 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT) 164
152 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER) 155
118 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH)
118 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT)
80 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER)
113 0006H 2 OFFSET . . . . . . WORD MEMBER(RIGTH)
113 0006H 2 OFFSET . . . . . . WORD MEMBER(LEFT)
6 OGE. . . . . . . . LITERALLY 389
6 OGT. . . . . . . . LITERALLY 389
6 OLAST. . . . . . . LITERALLY 287
6 OLE. . . . . . . . LITERALLY 389
6 OLENGTH. . . . . . LITERALLY 287
6 OLT. . . . . . . . LITERALLY 389
6 OMOD . . . . . . . LITERALLY 354
6 ONE. . . . . . . . LITERALLY 389
6 ONOT . . . . . . . LITERALLY 410
6 OOFFSET. . . . . . LITERALLY 287
6 OOR. . . . . . . . LITERALLY 432
452 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT) 456 459 460 461
80 0000H 9 OPER . . . . . . . STRUCTURE BASED(P) 81 82
152 0000H 9 OPER . . . . . . . STRUCTURE BASED(P) 153 154 155
445 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT) 448
478 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT)
496 096CH 13 OPERAND. . . . . . PROCEDURE BYTE PUBLIC STACK=00BAH
32 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(19) 479
7 OPERANDSTRUC . . . LITERALLY 32 80 113 118 152 158 197
215 258 286 325 337 352 372 387 409 421
430 445 452 478
3 OPERATOR . . . . . LITERALLY 98 210
477 091DH 79 OPERND . . . . . . PROCEDURE BYTE STACK=00B6H 498 502
387 000FH 1 OPERTYP. . . . . . BYTE AUTOMATIC 389 395
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 19
352 000FH 1 OPERTYP. . . . . . BYTE AUTOMATIC 354 359
337 0002H 1 OPERTYP. . . . . . BYTE AUTOMATIC 338 342
372 000BH 1 OPERTYP. . . . . . BYTE AUTOMATIC 374 377
286 000DH 1 OPERTYP. . . . . . BYTE AUTOMATIC 287 290
430 000BH 1 OPERTYPE . . . . . BYTE AUTOMATIC 432 435
96 0074H 68 OPMEMBER . . . . . PROCEDURE BYTE STACK=000AH 287 314 354
389 410 423 432
6 OPTR . . . . . . . LITERALLY 314
6 OSEG . . . . . . . LITERALLY 287
6 OSHL . . . . . . . LITERALLY 354
6 OSHORT . . . . . . LITERALLY
6 OSHR . . . . . . . LITERALLY 354
6 OTYPE. . . . . . . LITERALLY 287
33 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(20) STACK=0000H
6 OXOR . . . . . . . LITERALLY 432
79 0004H 2 P. . . . . . . . . WORD PARAMETER AUTOMATIC 80 81 82
151 0006H 2 P. . . . . . . . . WORD PARAMETER AUTOMATIC 152 153 154 155
69 0006H 1 PARLEVEL . . . . . BYTE 261 267 455
371 0685H 90 PP . . . . . . . . PROCEDURE REENTRANT STACK=006CH 388 391
2 PROC . . . . . . . LITERALLY 9 12 15 18 21 23 26
29 48 51 60 63 66 70 74 79 84
96 112 117 120 136 151 157 196 214 257
285 324 336 351 371 386 408 420 429 444
451 465 471 477 496 500
3 PSEUDO . . . . . . LITERALLY 210
465 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 466 469
84 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 85 88
451 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 452 456 459 460
461
429 000EH 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 430 431 434 437
440
420 000EH 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 421 422 425 426
408 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 409 412 413 414
417
386 0012H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 387 388 392 393
405
371 000EH 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 372 373 376 379
382
39 0000H 2 PT . . . . . . . . WORD PARAMETER 40
351 0012H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 352 353 356 357
368
336 0006H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 337 340 341 344
348
324 0006H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 325 328 329 330
333
285 0010H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 286 289 292 294
297 300 303 306 308 313 316 317 318 319
320
257 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 258 264 277 278
279 283
26 0000H 2 PT . . . . . . . . WORD PARAMETER 27
214 0006H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 215 216 218 219
220 223 224 230 231 233 234 235 237 242
248
196 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 197 208 209
157 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 158 161 162 163
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 20
164 169 170 174 187 188
444 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 445 448
136 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 137 142 143
96 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 97 103
478 0004H 2 PT . . . . . . . . WORD 478 479 482 488
471 0004H 2 PT . . . . . . . . WORD PARAMETER AUTOMATIC 472 475
117 0006H 2 PTL. . . . . . . . WORD PARAMETER AUTOMATIC 118 130 133 134
112 0006H 2 PTL. . . . . . . . WORD PARAMETER AUTOMATIC 113 114
117 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 118 130 133
112 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 113 114
5 RBP. . . . . . . . LITERALLY
5 RBX. . . . . . . . LITERALLY
5 RCS. . . . . . . . LITERALLY
5 RDI. . . . . . . . LITERALLY
5 RDS. . . . . . . . LITERALLY 235
444 088BH 37 REALEXPRESS. . . . PROCEDURE STACK=00ACH 456
2 REENT. . . . . . . LITERALLY
3 REG. . . . . . . . LITERALLY 138
5 RES. . . . . . . . LITERALLY
12 0000H 2 RESULT . . . . . . WORD PARAMETER 13
9 0000H 2 RESULT . . . . . . WORD PARAMETER 10
430 0002H 9 RIGHT. . . . . . . STRUCTURE AUTOMATIC 433 434 437 440
6 RIGHTBRACKET . . . LITERALLY
421 0002H 9 RIGTH. . . . . . . STRUCTURE AUTOMATIC 424 425 426
387 0006H 9 RIGTH. . . . . . . STRUCTURE AUTOMATIC 391 392 394
372 0002H 9 RIGTH. . . . . . . STRUCTURE AUTOMATIC 375 376 379 382
352 0006H 9 RIGTH. . . . . . . STRUCTURE AUTOMATIC 355 356 358
286 0004H 9 RIGTH. . . . . . . STRUCTURE AUTOMATIC 315 316 317 318 319
320
118 0000H 9 RIGTH. . . . . . . STRUCTURE BASED(PTR) 130 133
113 0000H 9 RIGTH. . . . . . . STRUCTURE BASED(PTR) 114
387 0004H 2 RIGTHVAL . . . . . WORD AUTOMATIC 394 396 397 398 399 400
401
352 0004H 2 RIGTHVAL . . . . . WORD AUTOMATIC 358 360 361 362 363 364
365 366
386 06DFH 208 RR . . . . . . . . PROCEDURE REENTRANT STACK=0080H 417
5 RSI. . . . . . . . LITERALLY
5 RSS. . . . . . . . LITERALLY
57 0000H 2 S. . . . . . . . . WORD PARAMETER 58
215 0002H 1 SAVEB. . . . . . . BYTE AUTOMATIC 245 247
69 0000H 2 SAVESTACK. . . . . WORD 72 446
21 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(4) STACK=0000H 90 105
144 145 194 226 229 250 263 268 276 487
7 SEGMBIT. . . . . . LITERALLY 143 223 237 292
7 SEGMCOUNT. . . . . LITERALLY
452 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
445 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
80 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
430 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGHT)
430 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
421 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
421 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
409 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
387 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
387 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
372 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
372 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 21
352 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
352 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
337 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
32 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
325 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
286 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH) 317
286 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT) 294 317
258 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
215 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT) 224 234
197 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
158 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
152 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
118 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
118 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
113 0004H 2 SEGMENT. . . . . . WORD MEMBER(RIGTH)
113 0004H 2 SEGMENT. . . . . . WORD MEMBER(LEFT)
478 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
136 0145H 63 SEGOVER. . . . . . PROCEDURE BYTE STACK=0006H 326
325 0002H 1 SEGREG . . . . . . BYTE AUTOMATIC 326 329
137 0000H 1 SEGREG . . . . . . BYTE BASED(PT) 142 143
7 SEGTYPEBIT . . . . LITERALLY 143 235 329
7 SEGTYPECOUNT . . . LITERALLY 143 223 235
452 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER) 460
445 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER)
80 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER)
430 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGHT)
430 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
421 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
421 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
409 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
387 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
387 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
372 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
372 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
352 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
352 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
337 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
32 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
325 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT) 329
286 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH) 320
286 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT) 292 300 320
258 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
215 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT) 219 223 235 237
197 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
158 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT) 163
152 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER)
118 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
118 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
113 0003H 1 SFLAG. . . . . . . BYTE MEMBER(RIGTH)
113 0003H 1 SFLAG. . . . . . . BYTE MEMBER(LEFT)
478 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER)
SHL. . . . . . . . BUILTIN 143 223 235 364
SHR. . . . . . . . BUILTIN 366
18 0000H 2 SOURCE . . . . . . WORD PARAMETER 19
2 SPACE. . . . . . . LITERALLY
3 SPEC . . . . . . . LITERALLY 210
23 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H 88
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 22
198 200 259 265 271 483
84 003EH 54 SPECMEMBER . . . . PROCEDURE BYTE STACK=000CH 338 354 374
324 0536H 61 SS . . . . . . . . PROCEDURE REENTRANT STACK=0040H 348
STACKPTR . . . . . BUILTIN 72 446 447
69 0007H 600 STCK . . . . . . . BYTE ARRAY(600) 447
12 0000H 2 STRADR . . . . . . WORD PARAMETER 13
9 0000H 2 STRADR . . . . . . WORD PARAMETER 10
3 STRING . . . . . . LITERALLY 202
2 STRUC. . . . . . . LITERALLY 32 80 113 118 152 158 197
215 258 286 325 337 352 372 387 409 421
430 445 452 478
452 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER) 459
445 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER)
80 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER)
430 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGHT)
430 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
421 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH)
421 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
409 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
387 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH)
387 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
372 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH)
372 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
352 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH)
352 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
337 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
32 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
325 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT)
286 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH) 316
286 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 316
258 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 278
215 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 218 231 233
197 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 209
158 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 162 170 174 187
152 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER) 154
118 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH) 130
118 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 130 134
118 0266H 1 STYPE. . . . . . . BYTE 130 131 134
113 0002H 1 STYPE. . . . . . . BYTE MEMBER(RIGTH) 114
113 0002H 1 STYPE. . . . . . . BYTE MEMBER(LEFT) 114
478 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER)
18 0000H 2 SYMBADR. . . . . . WORD PARAMETER 19
15 0000H 2 SYMBADR. . . . . . WORD PARAMETER 16
3 SYMBOL . . . . . . LITERALLY
158 0002H 2 SYMBPTR. . . . . . WORD 167 169 183 188
196 026CH 96 SYMTYP . . . . . . PROCEDURE BYTE STACK=0018H 216
33 0000H 2 T. . . . . . . . . WORD PARAMETER 34
2 TAB. . . . . . . . LITERALLY
36 0000H 2 TEXTADR. . . . . . WORD PARAMETER 37
2 THENDO . . . . . . LITERALLY 88 98 103 138 140 159 167
171 181 183 202 221 240 259 271 287 326
338 342 377 389 410 435 457 483 485
23 0000H 1 TOK. . . . . . . . BYTE PARAMETER 24
32 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(14) 98 102 138 142
159 162 163 164 202
2 TRUE . . . . . . . LITERALLY 173 191 453 473 480 481 501
351 05BAH 203 TT . . . . . . . . PROCEDURE REENTRANT STACK=005CH 373 375
PL/M-86 COMPILER EXPRESSION MODULE 10/5/81 PAGE 23
120 0004H 1 TYP. . . . . . . . BYTE PARAMETER AUTOMATIC 121 122 124 126
32 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 98 138 159 162 202
7 TYPEBIT. . . . . . LITERALLY 300 320
7 TYPECOUNT. . . . . LITERALLY
117 00D4H 73 TYPEFIND . . . . . PROCEDURE STACK=0018H 376
120 011DH 40 TYPENO . . . . . . PROCEDURE BYTE STACK=000EH 130
69 0262H 1 UDEFFLAG . . . . . BYTE 75 173 191 445 454 457
3 UDEFSYMB . . . . . LITERALLY 171
8 UDEFSYMBOL . . . . LITERALLY 176 190
54 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(27) STACK=0000H
286 0002H 2 VAL. . . . . . . . WORD AUTOMATIC 306 307 308
32 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 102 142 164
3 VARIABLE . . . . . LITERALLY 119 124 233
4 WRD. . . . . . . . LITERALLY 219 223
MODULE INFORMATION:
CODE AREA SIZE = 0986H 2438D
CONSTANT AREA SIZE = 0022H 34D
VARIABLE AREA SIZE = 026AH 618D
MAXIMUM STACK SIZE = 00BAH 186D
801 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION