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::= : 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 = ::= 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: : variable, =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