mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
1155 lines
60 KiB
Plaintext
1155 lines
60 KiB
Plaintext
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
|