PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   1


ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DECODEL
OBJECT MODULE PLACED IN DLINE.OBJ
COMPILER INVOKED BY:  :F0: DLINE.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF



              $title ('DECODE LINE MODULE')
   1          decodel:
              do;

              /*

                modified  3/26/81  R. Silberstein
                modified  3/30/81  R. Silberstein
                modified  4/9/81   R. Silberstein
                modified  4/10/81  R. Silberstein
                modified  7/24/81  R. Silberstein

              */

              /*

                      This is the module to decode each logical sourceline.
                      The module takes care of all symbol definitions, and
                      activates the PSEUDO-module and the INSTRUCTION-module
                      to perform the assembly of the current non-empty source-
                      line.
              */

              $include (:f1:macro.lit)
          =   $nolist
              $include (:f1:struc.lit)
          =   $nolist
              $include (:f1:equals.lit)
          =   $nolist
              $include (:f1:ermod.lit)
          =   $nolist
              $include (:f1:subr1.ext)
          =   $nolist
              $include (:f1:subr2.ext)
          =   $nolist
              $include (:f1:scan.ext)
          =   $nolist
              $include (:f1:print.ext)
          =   $nolist
              $include (:f1:instr.ext)
          =   $nolist
              $include (:f1:pseud1.ext)
          =   $nolist
              $include (:f1:pseud2.ext)
          =   $nolist
              $include (:f1:ermod.ext)
          =   $nolist
              $include (:f1:symb.ext)
          =   $nolist
              $include (:f1:exglob.ext)
          =   $nolist
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   2


              $include (:f1:dline.x86)
          =   $nolist
              $include (:f1:cm.ext)
          =   $nolist




 193   1      saveaccum: proc;
 194   2        acclensave=acclen;
 195   2        call copy(acclen,.accum(0),.accumsave(0));
 196   2      end saveaccum;


 197   1      exchangeaccum: proc;
 198   2        dcl locacclen byte,locaccum(80) byte;
 199   2        locacclen=acclensave;
 200   2        call copy(acclensave,.accumsave(0),.locaccum(0));
 201   2        call saveaccum;
 202   2        acclen=locacclen;
 203   2        call copy(locacclen,.locaccum(0),.accum(0));
 204   2      end exchangeaccum;

 205   1      clearsymbol: proc;
 206   2        CALL FILL (0, .CURRENTSYMBOL.BASEINDEX-.CURRENTSYMBOL+1, .CURRENTSYMBOL);
 207   2      end clearsymbol;



 208   1      pseudotype: proc(lg,ptr) byte;
 209   2        dcl (lg,i,lvalue) byte,ptr address,pstable based ptr (1) byte;
 210   2        if token.type <> pseudo then return lg+1;
 212   2        i=0ffh;
 213   2        do while (i:=i+1) < lg;
 214   3          lvalue=token.value;
 215   3          if lvalue=pstable(i) then$do
 217   4            call scan;       /* skip found pseudo */
 218   4            return i;
 219   4          end$if;
                end$while;
 221   2        return i;
 222   2      end pseudotype;


              /* test if symbol if double defined or "neglected" symbol */

 223   1      not$doub$negl: proc(errno) byte;
 224   2        dcl (errno,errfl) byte;
 225   2        if pass = 0 then$do
 227   3          if findsymbol(acclensave,.accumsave,.symbtabadr) then$do
 229   4            call getattributes(symbtabadr,.currentsymbol);
 230   4            if currentsymbol.stype <> neglected then$do
 232   5              currentsymbol.stype=doubledefined;
 233   5              call enterattributes(symbtabadr,.currentsymbol);
 234   5            end$if;
 235   4            return false;
 236   4          end$if;
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   3


                else$do
                   /* pass 1 and pass 2 */

 239   3          if not findsymbol(acclensave,.accumsave,.symbtabadr) then
 240   3                                                            return false;
 241   3          call getattributes(symbtabadr,.currentsymbol);
 242   3          errfl=true;
 243   3          if currentsymbol.stype=neglected then$do
 245   4            errno=neglecterr;
 246   4          else$do
 248   4            if currentsymbol.stype<>doubledefined then errfl=false;
                  end$if;
 251   3          if errfl then$do
 253   4            call exchangeaccum;
 254   4            call errmsg(errno);
 255   4            call exchangeaccum;
 256   4            return false;
 257   4          end$if;
                end$if;
 259   2        return true;
 260   2      end not$doub$negl;

 261   1      newsym: proc byte;   /* enter new symbol into table */
 262   2        if pass=0 then$do
 264   3          if not newsymbol(acclensave,.accumsave,.symbtabadr) then$do
 266   4            fullsymbtab=true;
 267   4            return false;
 268   4          end$if;
                end$if;
 270   2        return true;
 271   2      end newsym;

              /* set up symbol attributes for label,DB,DW,DD,RS */

 272   1      setupattr: proc (styp,sfla);
 273   2        dcl (styp,sfla,segtyp) byte;
 274   2        segtyp=shl(csegtype,segtypecount) and segtypebit;
 275   2        currentsymbol.stype=styp;
 276   2        if csegspec then sfla=sfla or segmbit;
 278   2        currentsymbol.sflag=sfla or segtyp;
 279   2        currentsymbol.segment=csegvalue;
 280   2        currentsymbol.offset=cip;
 281   2      end setupattr;

 282   1      entatr: proc;   /* enter attributes of current symbol into table */
 283   2        if pass <> 2 then$do
 285   3          call enter$attributes(symbtabadr,.currentsymbol);
 286   3        end$if;
 287   2      end entatr;

                         /* decode instruction */
 288   1      decodeinstr: proc;
 289   2        if csegtype <> rcs then$do
 291   3          call errmsg(instrerr);
 292   3          call skip$rest$of$line;
 293   3        else$do
 295   3          CALL LISTCIP;
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   4


 296   3          call instruction;  /* decode instruction */
 297   3        end$if;
 298   2      end decodeinstr;


 299   1      labinstruction:  proc;  /* scan labelled instruction */
 300   2        dcl symb based codemacroptr symbolstruc;

 301   2        call saveaccum;
                                        /* enter label into symbol table */
 302   2        if not$doub$negl(doubledeflab) then$do
 304   3          if newsym then$do
 306   4            call setupattr(lab,wrd);
 307   4            call entatr;
 308   4          end$if;
                end$if;
 310   2        call scan;                /* skip ":" */
 311   2        call scan;      /* allow empty instruction */
 312   2        if emptyline then$do
 314   3          call skip$rest$of$line;
 315   3        else$do
 317   3          if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
 319   4            call scan;   /* skip codemacro */
 320   4            call decode$instr;
 321   4          else$do
 323   4            call errmsg(illegalmacro);
 324   4          end$if;
 325   3        end$if;
 326   2      end labinstruction;



 327   1      no$ident$pseudo: proc;  /* branch to correct pseudo routine */
 328   2        dcl ptable(*) byte data(    /* define legal unnamed pseudos */
                  pif,pendif,pinclude,pcseg,pdseg,psseg,peseg,porg,pdb,
                  pdw,pdd,prb,prs,prw,pend,ppagesize,ppagewidth,
                  ptitle,peject,psimform,pcodemacro,plist,pnolist,PIFLIST,PNOIFLIST,
                  psegfix,pnosegfix,pmodrm,prelb,prelw,pdbit,pendm);

 329   2        do case pseudotype(length(ptable),.ptable); /* branch */
 330   3          call IFrout;
 331   3          call ENDIFrout;
 332   3          call INCLUDErout;
 333   3          call CSEGrout;
 334   3          call DSEGrout;
 335   3          call SSEGrout;
 336   3          call ESEGrout;
 337   3          call ORGrout;
 338   3          if codemacro$flag then call db$cm$rout;
 340   3                            else call DBrout;
 341   3          if codemacro$flag then call dw$cm$rout;
 343   3                            else call DWrout;
 344   3          if codemacro$flag then call dd$cm$rout;
 346   3                            else call DDrout;
 347   3          call RSrout(byt);   /* RB */
 348   3          call RSrout(byt);   /* RS */
 349   3          call RSrout(wrd);   /* RW */
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   5


 350   3          call ENDrout;
 351   3          call PAGESIZErout;
 352   3          call PAGEWIDTHrout;
 353   3          call TITLErout;
 354   3          call EJECTrout;
 355   3          call SIMFORMrout;
 356   3          call CODEMACROrout;
 357   3          call LISTrout;
 358   3          call NOLISTrout;
 359   3          CALL IFLISTROUT;
 360   3          CALL NOIFLISTROUT;
 361   3          call segfix$cm$rout; /* cm */
 362   3          call nosegfix$cm$rout; /* cm */
 363   3          call modrm$cm$rout; /* cm */
 364   3          call relb$cm$rout; /* cm */
 365   3          call relw$cm$rout; /* cm */
 366   3          call dbit$cm$rout; /* cm */
 367   3          call end$cm$rout; /* cm */
 368   3          do;         /* error, illegal pseudo */
 369   4          call errmsg(illegalpseudo);
 370   4          call skip$rest$of$line;
 371   4          end;
 372   3        end$case;
 373   2      end no$ident$pseudo;


 374   1      identpseudo: proc(normal);   /* scan a named pseudo instruction */
 375   2        dcl (noerr,normal) byte,symb based codemacroptr symbolstruc;

 376   2        entervar: proc(typ);
 377   3          dcl typ byte;
 378   3          noerr=false;
 379   3          if not$doub$negl(doubledefvar) then$do
 381   4            if newsym then$do
 383   5              call setupattr(variable,typ);
 384   5              noerr=true;
 385   5            end$if;
                  end$if;
 387   3        end entervar;

 388   2        enter: proc;
 389   3          if noerr then call entatr;
 391   3        end enter;

                                     /* legal pseudos: DB,DW,DD,RB,RS,RW,EQU */
 392   2        dcl pseudotable(7) byte data(pdb,pdw,pdd,prb,prs,prw,pequ);

 393   2        call clearsymbol;  /* clear attributes of current symbol */
 394   2        if normal then$do  /* unormal if EQU with instruction parameter */
 396   3          call saveaccum;
 397   3          call scan;         /* scan actual pseudo */
 398   3        end$if;
 399   2        do case pseudotype(length(pseudotable),.pseudotable);
 400   3          do;              /* DB */
 401   4          call entervar(byt);
 402   4          call DBrout;
 403   4          call enter;
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   6


 404   4          end;

 405   3          do;              /* DW */
 406   4          call entervar(wrd);
 407   4          call DWrout;
 408   4          call enter;
 409   4          end;

 410   3          do;              /* DD */
 411   4          call entervar(dwrd);
 412   4          call DDrout;
 413   4          call enter;
 414   4          end;

 415   3          do;              /* RB */
 416   4          call entervar(byt);
 417   4          call RSrout(byt);
 418   4          call enter;
 419   4          end;

 420   3          do;              /* RS */
 421   4          call entervar(byt);
 422   4          call RSrout(byt);
 423   4          call enter;
 424   4          end;

 425   3          do;              /* RW */
 426   4          call entervar(wrd);
 427   4          call RSrout(wrd);
 428   4          call enter;
 429   4          end;

 430   3          do;              /* EQU */
 431   4          if not$doub$negl(doubledefsymb) then$do
 433   5            if newsym then$do
 435   6              call EQUrout;
 436   6            else$do
 438   6              call skip$rest$of$line;
 439   6            end$if;
 440   5          else$do
 442   5            call skip$rest$of$line;
 443   5          end$if;
 444   4          end;

 445   3          do;              /* illegal pseudo instruction */
 446   4          call errmsg(illegalpseudo);
 447   4          call skip$rest$of$line;
 448   4          end;

 449   3          do;              /* missing pseudo instruction */
 450   4          call errmsg(missingpseudo);
 451   4          call skip$rest$of$line;
 452   4          end;
 453   3        end$case;
 454   2      end identpseudo;

 455   1      decodeline: proc public;
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   7


 456   2        first$item$type: proc byte;
 457   3          dcl typ byte;
 458   3          typ=token.type;
 459   3          if typ=pseudo then return 3;
 461   3          if typ=ident and nextch=':' then return 2;
 463   3          if (typ=ident) or (typ=operator) then$do
 465   4            if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
 467   5              call saveaccum;
 468   5              call scan;      /* skip found codemacro */
 469   5              typ=token.value;
 470   5              if (token.type=pseudo) and (typ=pequ) then return 5;
 472   5              return 4;
 473   5            end$if;
                  end$if;
 475   3          if typ <> ident then return 0;  /* error */
 477   3          return 1;
 478   3        end first$item$type;

 479   2        if accum(0) <> cr then$do    /* skip blank lines */
 481   3          do case first$item$type;
 482   4            do;                       /* error,skip rest of line */
 483   5            call errmsg(first$item);   /* error handler */
 484   5            call skip$rest$of$line;
 485   5            end;
 486   4            call ident$pseudo(true);  /* named pseudo instruction */
 487   4            call lab$instruction;     /* label (followed by instruction) */
 488   4            call no$ident$pseudo;     /* pseudo instruction */
 489   4            call decodeinstr;         /* code instruction */
 490   4            call identpseudo(false);  /* EQU with instruction parameter */
 491   4          end$case;
 492   3        end$if;
 493   2      end decodeline;

 494   1      end$module decodel;
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   8


CROSS-REFERENCE LISTING
-----------------------


   DEFN  ADDR   SIZE  NAME, ATTRIBUTES, AND REFERENCES
  ----- ------ -----  --------------------------------


    169  0000H     1  ACCLEN . . . . . .    BYTE EXTERNAL(74)         194  195  202  317  465
    170  0000H     1  ACCLENSAVE . . . .    BYTE EXTERNAL(82)         194  199  200  227  239
                                             264 
    169  0000H    80  ACCUM. . . . . . .    BYTE ARRAY(80) EXTERNAL(75)         195  203  317
                                             465  479 
    170  0000H    80  ACCUMSAVE. . . . .    BYTE ARRAY(80) EXTERNAL(81)         195  200  227
                                             239  264 
      2               ADDR . . . . . . .    LITERALLY        11   14   17   20   26   44   47
                                              50   53  139  140  146  149  152  155  158  161
                                             164  167  169  170  300  375 
     34  0000H        ALPHANUMERIC . . .    PROCEDURE BYTE EXTERNAL(8) STACK=0000H
     37  0000H        ASCIICHAR. . . . .    PROCEDURE BYTE EXTERNAL(9) STACK=0000H
    166  0000H     2  ASCIIPTR . . . . .    WORD PARAMETER       167 
    300  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(SYMB)
    170  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(CURRENTSYMBOL)          206 
    169  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(OPERANDS)
    375  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(SYMB)
      3               BASEREGBIT . . . .    LITERALLY
      3               BASEREGCOUNT . . .    LITERALLY
      3               BREGBIT. . . . . .    LITERALLY
      3               BREGCOUNT. . . . .    LITERALLY
      5               BYT. . . . . . . .    LITERALLY       347  348  401  416  417  421  422
     31  0000H     1  CH . . . . . . . .    BYTE PARAMETER        32 
     28  0000H     1  CH . . . . . . . .    BYTE PARAMETER        29 
     34  0000H     1  CH . . . . . . . .    BYTE PARAMETER        35 
     37  0000H     1  CH . . . . . . . .    BYTE PARAMETER        38 
     25  0000H     1  CH . . . . . . . .    BYTE PARAMETER        26 
     69  0000H     1  CH . . . . . . . .    BYTE PARAMETER        70 
     40  0000H     1  CH . . . . . . . .    BYTE PARAMETER        41 
    169  0000H     2  CIP. . . . . . . .    WORD EXTERNAL(66)         280 
    205  0043H    19  CLEARSYMBOL. . . .    PROCEDURE STACK=000AH          393 
      4               CODE . . . . . . .    LITERALLY
      9               CODEMACROERR . . .    LITERALLY
    170  0000H     1  CODEMACROFLAG. . .    BYTE EXTERNAL(87)         338  341  344 
      3               CODEMACROHEAD. . .    LITERALLY
    170  0000H     2  CODEMACROPTR . . .    WORD EXTERNAL(86)         300  317  375  465 
    171  0000H        CODEMACROROUT. . .    PROCEDURE EXTERNAL(88) STACK=0000H       356 
     16  0000H        COPY . . . . . . .    PROCEDURE EXTERNAL(2) STACK=0000H        195  200
                                             203 
      2               CR . . . . . . . .    LITERALLY       479 
     98  0000H        CSEGROUT . . . . .    PROCEDURE EXTERNAL(34) STACK=0000H       333 
    169  0000H     1  CSEGSPEC . . . . .    BYTE EXTERNAL(69)         276 
    169  0000H     1  CSEGTYPE . . . . .    BYTE EXTERNAL(67)         274  289 
    169  0000H     2  CSEGVALUE. . . . .    WORD EXTERNAL(68)         279 
    169  0000H     2  CURDSEG. . . . . .    WORD EXTERNAL(71)
    170  0000H     9  CURRENTSYMBOL. . .    STRUCTURE EXTERNAL(84)         206  229  230  232
                                             233  241  243  248  275  278  279  280  285 
     16  0000H     2  D. . . . . . . . .    WORD PARAMETER        17 
     52  0000H     2  D. . . . . . . . .    WORD PARAMETER        53 
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE   9


     49  0000H     2  D. . . . . . . . .    WORD PARAMETER        50 
     46  0000H     2  D. . . . . . . . .    WORD PARAMETER        47 
     43  0000H     2  D. . . . . . . . .    WORD PARAMETER        44 
    173  0000H        DBCMROUT . . . . .    PROCEDURE EXTERNAL(89) STACK=0000H       339 
    189  0000H        DBITCMROUT . . . .    PROCEDURE EXTERNAL(97) STACK=0000H       366 
     89  0000H        DBROUT . . . . . .    PROCEDURE EXTERNAL(30) STACK=0000H       340  402
      2               DCL. . . . . . . .    LITERALLY
    177  0000H        DDCMROUT . . . . .    PROCEDURE EXTERNAL(91) STACK=0000H       345 
     93  0000H        DDROUT . . . . . .    PROCEDURE EXTERNAL(32) STACK=0000H       346  412
    288  01B2H    29  DECODEINSTR. . . .    PROCEDURE STACK=0006H          320  489 
      1  0000H        DECODEL. . . . . .    PROCEDURE STACK=0000H
    455  0432H    76  DECODELINE . . . .    PROCEDURE PUBLIC STACK=0024H
     52  0000H        DECOUT . . . . . .    PROCEDURE EXTERNAL(14) STACK=0000H
      4               DELETEDSYMB. . . .    LITERALLY
    169  0001H     1  DESCR. . . . . . .    BYTE MEMBER(TOKEN)
    154  0000H     2  DEST . . . . . . .    WORD PARAMETER       155 
     28  0000H        DIGIT. . . . . . .    PROCEDURE BYTE EXTERNAL(6) STACK=0000H
      4               DOUBLEDEFINED. . .    LITERALLY       232  248 
      9               DOUBLEDEFLAB . . .    LITERALLY       302 
      9               DOUBLEDEFSYMB. . .    LITERALLY       431 
      9               DOUBLEDEFVAR . . .    LITERALLY       379 
    100  0000H        DSEGROUT . . . . .    PROCEDURE EXTERNAL(35) STACK=0000H       334 
    169  0000H     1  DSPEC. . . . . . .    BYTE EXTERNAL(70)
    175  0000H        DWCMROUT . . . . .    PROCEDURE EXTERNAL(90) STACK=0000H       342 
      5               DWRD . . . . . . .    LITERALLY       411 
     91  0000H        DWROUT . . . . . .    PROCEDURE EXTERNAL(31) STACK=0000H       343  407
     83  0000H        EJECT. . . . . . .    PROCEDURE EXTERNAL(27) STACK=0000H
    124  0000H        EJECTROUT. . . . .    PROCEDURE EXTERNAL(47) STACK=0000H       354 
      2               ELSEDO . . . . . .    LITERALLY       236 
     67  0000H        EMPTYLINE. . . . .    PROCEDURE BYTE EXTERNAL(20) STACK=0000H       312
      2               ENDCASE. . . . . .    LITERALLY
    191  0000H        ENDCMROUT. . . . .    PROCEDURE EXTERNAL(98) STACK=0000H       367 
      2               ENDDO. . . . . . .    LITERALLY
      2               ENDFOREVER . . . .    LITERALLY
      2               ENDIF. . . . . . .    LITERALLY       249  257  268  308  385  473 
    112  0000H        ENDIFROUT. . . . .    PROCEDURE EXTERNAL(41) STACK=0000H       331 
      2               ENDMODULE. . . . .    LITERALLY
      2               ENDOFFILE. . . . .    LITERALLY
      9               ENDOFLINEERR . . .    LITERALLY
    140  0000H     2  ENDOFSYMBTAB . . .    WORD EXTERNAL(55)
      2               ENDPROC. . . . . .    LITERALLY
    116  0000H        ENDROUT. . . . . .    PROCEDURE EXTERNAL(43) STACK=0000H       350 
      2               ENDWHILE . . . . .    LITERALLY       219 
    282  019BH    23  ENTATR . . . . . .    PROCEDURE STACK=0008H          307  390 
    388  0423H    15  ENTER. . . . . . .    PROCEDURE STACK=000CH          403  408  413  418
                                             423  428 
    157  0000H        ENTERATTRIBUTES. .    PROCEDURE EXTERNAL(62) STACK=0000H       233  285
    376  03F8H    43  ENTERVAR . . . . .    PROCEDURE STACK=001AH          401  406  411  416
                                             421  426 
     43  0000H        EQUAL. . . . . . .    PROCEDURE BYTE EXTERNAL(11) STACK=0000H
    108  0000H        EQUROUT. . . . . .    PROCEDURE EXTERNAL(39) STACK=0000H       435 
    224  0053H     1  ERRFL. . . . . . .    BYTE       242  249  251 
    136  0000H        ERRMSG . . . . . .    PROCEDURE EXTERNAL(53) STACK=0000H       254  291
                                             323  369  446  450  483 
    136  0000H     1  ERRNO. . . . . . .    BYTE PARAMETER       137 
    223  0004H     1  ERRNO. . . . . . .    BYTE PARAMETER AUTOMATIC       224  245  254 
      4               ERROR. . . . . . .    LITERALLY
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  10


    104  0000H        ESEGROUT . . . . .    PROCEDURE EXTERNAL(37) STACK=0000H       336 
    197  0017H    44  EXCHANGEACCUM. . .    PROCEDURE STACK=000EH          253  255 
      2               FALSE. . . . . . .    LITERALLY       235  240  249  256  267  378  490
     22  0000H     2  FCBADR . . . . . .    WORD PARAMETER        23 
     22  0000H        FILEABORT. . . . .    PROCEDURE EXTERNAL(4) STACK=0000H
      3               FILEISTRUCTURE . .    LITERALLY
      3               FILEOSTRUCTURE . .    LITERALLY
      9               FILESYNTERR. . . .    LITERALLY
     25  0000H        FILL . . . . . . .    PROCEDURE EXTERNAL(5) STACK=0000H        206 
    160  0000H        FINDCODEMACRO. . .    PROCEDURE BYTE EXTERNAL(63) STACK=0000H       317
                                             465 
    151  0000H        FINDSYMBOL . . . .    PROCEDURE BYTE EXTERNAL(60) STACK=0000H       227
                                             239 
      9               FIRSTITEM. . . . .    LITERALLY       483 
    456  047EH   117  FIRSTITEMTYPE. . .    PROCEDURE BYTE STACK=000EH          481 
      2               FOREVER. . . . . .    LITERALLY
      2               FORMFEED . . . . .    LITERALLY
    139  0000H     2  FREEPT . . . . . .    WORD EXTERNAL(54)
    170  0000H     1  FULLSYMBTAB. . . .    BYTE EXTERNAL(83)         266 
    154  0000H        GETATTRIBUTES. . .    PROCEDURE EXTERNAL(61) STACK=0000H       229  241
     46  0000H        HEX1OUT. . . . . .    PROCEDURE EXTERNAL(12) STACK=0000H
     49  0000H        HEX2OUT. . . . . .    PROCEDURE EXTERNAL(13) STACK=0000H
    209  0051H     1  I. . . . . . . . .    BYTE       212  213  215  218  221 
      4               IDENT. . . . . . .    LITERALLY       461  463  475 
    374  034DH   171  IDENTPSEUDO. . . .    PROCEDURE STACK=0020H          486  490 
    132  0000H        IFLISTROUT . . . .    PROCEDURE EXTERNAL(51) STACK=0000H       359 
      9               IFPARERR . . . . .    LITERALLY
    110  0000H        IFROUT . . . . . .    PROCEDURE EXTERNAL(40) STACK=0000H       330 
      9               ILLEGALMACRO . . .    LITERALLY       323 
      9               ILLEGALPSEUDO. . .    LITERALLY       369  446 
      9               ILLEXPRELEM. . . .    LITERALLY
      9               ILLIOPER . . . . .    LITERALLY
    114  0000H        INCLUDEROUT. . . .    PROCEDURE EXTERNAL(42) STACK=0000H       332 
      3               INDEXREGBIT. . . .    LITERALLY
      3               INDEXREGCOUNT. . .    LITERALLY
      2               INIT . . . . . . .    LITERALLY
      9               INSTRERR . . . . .    LITERALLY       291 
     85  0000H        INSTRUCTION. . . .    PROCEDURE EXTERNAL(28) STACK=0000H       296 
      3               IREGBIT. . . . . .    LITERALLY
      3               IREGCOUNT. . . . .    LITERALLY
      4               LAB. . . . . . . .    LITERALLY       306 
    299  01CFH    88  LABINSTRUCTION . .    PROCEDURE STACK=0018H          487 
      9               LABOUTOFRANGE. . .    LITERALLY
      8               LEFTBRACKET. . . .    LITERALLY
                      LENGTH . . . . . .    BUILTIN         329  399 
    169  0000H     2  LENGTH . . . . . .    WORD MEMBER(OPERANDS)
    300  0000H     2  LENGTH . . . . . .    WORD MEMBER(SYMB)
    170  0000H     2  LENGTH . . . . . .    WORD MEMBER(CURRENTSYMBOL)
    375  0000H     2  LENGTH . . . . . .    WORD MEMBER(SYMB)
     31  0000H        LETTER . . . . . .    PROCEDURE BYTE EXTERNAL(7) STACK=0000H
      2               LF . . . . . . . .    LITERALLY
    208  0006H     1  LG . . . . . . . .    BYTE PARAMETER AUTOMATIC       209  211  213 
    160  0000H     1  LG . . . . . . . .    BYTE PARAMETER       161 
    151  0000H     1  LG . . . . . . . .    BYTE PARAMETER       152 
    148  0000H     1  LG . . . . . . . .    BYTE PARAMETER       149 
    163  0000H     1  LG . . . . . . . .    BYTE PARAMETER       164 
    145  0000H     1  LG . . . . . . . .    BYTE PARAMETER       146 
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  11


    166  0000H     1  LG . . . . . . . .    BYTE PARAMETER       167 
     87  0000H        LISTCIP. . . . . .    PROCEDURE EXTERNAL(29) STACK=0000H       295 
    128  0000H        LISTROUT . . . . .    PROCEDURE EXTERNAL(49) STACK=0000H       357 
      2               LIT. . . . . . . .    LITERALLY         2    3    4    5    6    7    8
                                               9 
    198  0000H     1  LOCACCLEN. . . . .    BYTE       199  202  203 
    198  0001H    80  LOCACCUM . . . . .    BYTE ARRAY(80)       200  203 
    209  0052H     1  LVALUE . . . . . .    BYTE       214  215 
    148  0000H     2  MACDEFPT . . . . .    WORD PARAMETER       149 
      9               MISSIFERR. . . . .    LITERALLY
      9               MISSINGPSEUDO. . .    LITERALLY       450 
      9               MISSINSTR. . . . .    LITERALLY
      9               MISSSEGMINFO . . .    LITERALLY
      9               MISSTYPEINFO . . .    LITERALLY
    183  0000H        MODRMCMROUT. . . .    PROCEDURE EXTERNAL(94) STACK=0000H       363 
     25  0000H     1  N. . . . . . . . .    BYTE PARAMETER        26 
     16  0000H     1  N. . . . . . . . .    BYTE PARAMETER        17 
     13  0000H     2  N. . . . . . . . .    WORD PARAMETER        14 
     52  0000H     2  N. . . . . . . . .    WORD PARAMETER        53 
     49  0000H     2  N. . . . . . . . .    WORD PARAMETER        50 
     46  0000H     1  N. . . . . . . . .    BYTE PARAMETER        47 
     43  0000H     1  N. . . . . . . . .    BYTE PARAMETER        44 
      4               NEGLECTED. . . . .    LITERALLY       230  243 
      9               NEGLECTERR . . . .    LITERALLY       245 
      9               NESTEDIFERR. . . .    LITERALLY
      9               NESTEDINCLUDEERR .    LITERALLY
    163  0000H        NEWCMBODY. . . . .    PROCEDURE BYTE EXTERNAL(64) STACK=0000H
    166  0000H        NEWCMNAME. . . . .    PROCEDURE BYTE EXTERNAL(65) STACK=0000H
    148  0000H        NEWMACRO . . . . .    PROCEDURE BYTE EXTERNAL(59) STACK=0000H
    261  0136H    44  NEWSYM . . . . . .    PROCEDURE BYTE STACK=000AH          304  381  433
    145  0000H        NEWSYMBOL. . . . .    PROCEDURE BYTE EXTERNAL(58) STACK=0000H       264
    169  0000H     1  NEXTCH . . . . . .    BYTE EXTERNAL(73)         461 
      5               NIL. . . . . . . .    LITERALLY
    375  0055H     1  NOERR. . . . . . .    BYTE       378  384  389 
    327  0227H   294  NOIDENTPSEUDO. . .    PROCEDURE STACK=000CH          488 
    134  0000H        NOIFLISTROUT . . .    PROCEDURE EXTERNAL(52) STACK=0000H       360 
    130  0000H        NOLISTROUT . . . .    PROCEDURE EXTERNAL(50) STACK=0000H       358 
    169  0000H     1  NOOPER . . . . . .    BYTE EXTERNAL(76)
      3               NOOVERCOUNT. . . .    LITERALLY
      3               NOOVERRIDEBIT. . .    LITERALLY
    374  0004H     1  NORMAL . . . . . .    BYTE PARAMETER AUTOMATIC       375  394 
    181  0000H        NOSEGFIXCMROUT . .    PROCEDURE EXTERNAL(93) STACK=0000H       362 
    223  009AH   156  NOTDOUBNEGL. . . .    PROCEDURE BYTE STACK=0014H          302  379  431
      4               NUMBER . . . . . .    LITERALLY
      8               OAND . . . . . . .    LITERALLY
      8               OEQ. . . . . . . .    LITERALLY
    375  0006H     2  OFFSET . . . . . .    WORD MEMBER(SYMB)
    170  0006H     2  OFFSET . . . . . .    WORD MEMBER(CURRENTSYMBOL)          280 
    169  0006H     2  OFFSET . . . . . .    WORD MEMBER(OPERANDS)
    300  0006H     2  OFFSET . . . . . .    WORD MEMBER(SYMB)
      8               OGE. . . . . . . .    LITERALLY
      8               OGT. . . . . . . .    LITERALLY
      8               OLAST. . . . . . .    LITERALLY
      8               OLE. . . . . . . .    LITERALLY
      8               OLENGTH. . . . . .    LITERALLY
      8               OLT. . . . . . . .    LITERALLY
      8               OMOD . . . . . . .    LITERALLY
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  12


      8               ONE. . . . . . . .    LITERALLY
      8               ONOT . . . . . . .    LITERALLY
      8               OOFFSET. . . . . .    LITERALLY
      8               OOR. . . . . . . .    LITERALLY
    169  0000H    36  OPERANDS . . . . .    STRUCTURE ARRAY(4) EXTERNAL(77)
      3               OPERANDSTRUC . . .    LITERALLY       169 
      4               OPERATOR . . . . .    LITERALLY       463 
      9               OPMISMATCH . . . .    LITERALLY
      8               OPTR . . . . . . .    LITERALLY
    106  0000H        ORGROUT. . . . . .    PROCEDURE EXTERNAL(38) STACK=0000H       337 
      8               OSEG . . . . . . .    LITERALLY
      8               OSHL . . . . . . .    LITERALLY
      8               OSHORT . . . . . .    LITERALLY
      8               OSHR . . . . . . .    LITERALLY
      8               OTYPE. . . . . . .    LITERALLY
     19  0000H        OUTTEXT. . . . . .    PROCEDURE EXTERNAL(3) STACK=0000H
      8               OXOR . . . . . . .    LITERALLY
    118  0000H        PAGESIZEROUT . . .    PROCEDURE EXTERNAL(44) STACK=0000H       351 
    120  0000H        PAGEWIDTHROUT. . .    PROCEDURE EXTERNAL(45) STACK=0000H       352 
    170  0000H     1  PASS . . . . . . .    BYTE EXTERNAL(78)         225  262  283 
      7               PCODEMACRO . . . .    LITERALLY       328 
      7               PCSEG. . . . . . .    LITERALLY       328 
      7               PDB. . . . . . . .    LITERALLY       328  392 
      7               PDBIT. . . . . . .    LITERALLY       328 
      7               PDD. . . . . . . .    LITERALLY       328  392 
      7               PDSEG. . . . . . .    LITERALLY       328 
      7               PDW. . . . . . . .    LITERALLY       328  392 
      7               PEJECT . . . . . .    LITERALLY       328 
      7               PEND . . . . . . .    LITERALLY       328 
      7               PENDIF . . . . . .    LITERALLY       328 
      7               PENDM. . . . . . .    LITERALLY       328 
      7               PEQU . . . . . . .    LITERALLY       392  470 
      7               PESEG. . . . . . .    LITERALLY       328 
      7               PIF. . . . . . . .    LITERALLY       328 
      7               PIFLIST. . . . . .    LITERALLY       328 
      7               PINCLUDE . . . . .    LITERALLY       328 
      7               PLIST. . . . . . .    LITERALLY       328 
      7               PMODRM . . . . . .    LITERALLY       328 
      7               PNOIFLIST. . . . .    LITERALLY       328 
      7               PNOLIST. . . . . .    LITERALLY       328 
      7               PNOSEGFIX. . . . .    LITERALLY       328 
      7               PORG . . . . . . .    LITERALLY       328 
      7               PPAGESIZE. . . . .    LITERALLY       328 
      7               PPAGEWIDTH . . . .    LITERALLY       328 
      7               PRB. . . . . . . .    LITERALLY       328  392 
    170  0000H   240  PREFIX . . . . . .    BYTE ARRAY(240) EXTERNAL(79)
    170  0000H     1  PREFIXPTR. . . . .    BYTE EXTERNAL(80)
      7               PRELB. . . . . . .    LITERALLY       328 
      7               PRELW. . . . . . .    LITERALLY       328 
     72  0000H        PRINTCRLF. . . . .    PROCEDURE EXTERNAL(22) STACK=0000H
     78  0000H        PRINTINIT. . . . .    PROCEDURE EXTERNAL(25) STACK=0000H
     74  0000H        PRINTNEWPAGE . . .    PROCEDURE EXTERNAL(23) STACK=0000H
     69  0000H        PRINTSINGLEBYTE. .    PROCEDURE EXTERNAL(21) STACK=0000H
     76  0000H        PRINTSOURCELINE. .    PROCEDURE EXTERNAL(24) STACK=0000H
     80  0000H        PRINTTERMINATE . .    PROCEDURE EXTERNAL(26) STACK=0000H
      2               PROC . . . . . . .    LITERALLY        10   13   34   37   46   49   52
                                              55   57   59   61   64   67   69   72   74   76
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  13


                                              78   80   83   85   89   91   93   95   98  100
                                             102  104  106  108  110  112  114  116  118  120
                                             122  124  126  128  130  132  134  136  141  143
                                             145  148  151  154  157  160  163  166  171  173
                                             175  177  179  181  183  185  187  189  191  193
                                             197  205  208  223  261  272  282  288  299  327
                                             374  376  388  455  456 
      7               PRS. . . . . . . .    LITERALLY       328  392 
      7               PRW. . . . . . . .    LITERALLY       328  392 
      7               PSEGFIX. . . . . .    LITERALLY       328 
      4               PSEUDO . . . . . .    LITERALLY       210  459  470 
      9               PSEUDOOPERR. . . .    LITERALLY
    392  0020H     7  PSEUDOTABLE. . . .    BYTE ARRAY(7) DATA        399 
    208  0056H    68  PSEUDOTYPE . . . .    PROCEDURE BYTE STACK=0008H          329  399 
      7               PSIMFORM . . . . .    LITERALLY       328 
      7               PSSEG. . . . . . .    LITERALLY       328 
    209  0000H     1  PSTABLE. . . . . .    BYTE BASED(PTR) ARRAY(1)       215 
     25  0000H     2  PT . . . . . . . .    WORD PARAMETER        26 
    328  0000H    32  PTABLE . . . . . .    BYTE ARRAY(32) DATA       329 
      7               PTITLE . . . . . .    LITERALLY       328 
    208  0004H     2  PTR. . . . . . . .    WORD PARAMETER AUTOMATIC       209  215 
    163  0000H     2  PTR. . . . . . . .    WORD PARAMETER       164 
      6               RAH. . . . . . . .    LITERALLY
      6               RAL. . . . . . . .    LITERALLY
      6               RAX. . . . . . . .    LITERALLY
      6               RBH. . . . . . . .    LITERALLY
      6               RBL. . . . . . . .    LITERALLY
      6               RBP. . . . . . . .    LITERALLY
      6               RBX. . . . . . . .    LITERALLY
      6               RCH. . . . . . . .    LITERALLY
      6               RCL. . . . . . . .    LITERALLY
      6               RCS. . . . . . . .    LITERALLY       289 
      6               RCX. . . . . . . .    LITERALLY
      6               RDH. . . . . . . .    LITERALLY
      6               RDI. . . . . . . .    LITERALLY
      6               RDL. . . . . . . .    LITERALLY
      6               RDS. . . . . . . .    LITERALLY
      6               RDX. . . . . . . .    LITERALLY
      2               REENT. . . . . . .    LITERALLY
      4               REG. . . . . . . .    LITERALLY
    185  0000H        RELBCMROUT . . . .    PROCEDURE EXTERNAL(95) STACK=0000H       364 
    187  0000H        RELWCMROUT . . . .    PROCEDURE EXTERNAL(96) STACK=0000H       365 
      6               RES. . . . . . . .    LITERALLY
    160  0000H     2  RESULT . . . . . .    WORD PARAMETER       161 
    151  0000H     2  RESULT . . . . . .    WORD PARAMETER       152 
    145  0000H     2  RESULT . . . . . .    WORD PARAMETER       146 
    166  0000H     2  RETURNPTR. . . . .    WORD PARAMETER       167 
      8               RIGHTBRACKET . . .    LITERALLY
      6               RSI. . . . . . . .    LITERALLY
      6               RSP. . . . . . . .    LITERALLY
     95  0000H        RSROUT . . . . . .    PROCEDURE EXTERNAL(33) STACK=0000H       347  348
                                             349  417  422  427 
      6               RSS. . . . . . . .    LITERALLY
     16  0000H     2  S. . . . . . . . .    WORD PARAMETER        17 
     43  0000H     2  S. . . . . . . . .    WORD PARAMETER        44 
    193  0000H    23  SAVEACCUM. . . . .    PROCEDURE STACK=000AH          201  301  396  467
     57  0000H        SCAN . . . . . . .    PROCEDURE EXTERNAL(16) STACK=0000H       217  310
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  14


                                             311  319  397  468 
     55  0000H        SCANINIT . . . . .    PROCEDURE EXTERNAL(15) STACK=0000H
    179  0000H        SEGFIXCMROUT . . .    PROCEDURE EXTERNAL(92) STACK=0000H       361 
      3               SEGMBIT. . . . . .    LITERALLY       277 
      3               SEGMCOUNT. . . . .    LITERALLY
    375  0004H     2  SEGMENT. . . . . .    WORD MEMBER(SYMB)
    300  0004H     2  SEGMENT. . . . . .    WORD MEMBER(SYMB)
    170  0004H     2  SEGMENT. . . . . .    WORD MEMBER(CURRENTSYMBOL)          279 
    169  0004H     2  SEGMENT. . . . . .    WORD MEMBER(OPERANDS)
    273  0054H     1  SEGTYP . . . . . .    BYTE       274  278 
      3               SEGTYPEBIT . . . .    LITERALLY       274 
      3               SEGTYPECOUNT . . .    LITERALLY       274 
    272  0162H    57  SETUPATTR. . . . .    PROCEDURE STACK=0006H          306  383 
    272  0004H     1  SFLA . . . . . . .    BYTE PARAMETER AUTOMATIC       273  277  278 
    375  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(SYMB)
    300  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(SYMB)
    170  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)          278 
    169  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(OPERANDS)
                      SHL. . . . . . . .    BUILTIN         274 
    126  0000H        SIMFORMROUT. . . .    PROCEDURE EXTERNAL(48) STACK=0000H       355 
     59  0000H        SKIPRESTOFLINE . .    PROCEDURE EXTERNAL(17) STACK=0000H       292  314
                                             370  438  442  447  451  484 
     64  0000H        SKIPUNTIL. . . . .    PROCEDURE BYTE EXTERNAL(19) STACK=0000H
    157  0000H     2  SOURCE . . . . . .    WORD PARAMETER       158 
      2               SPACE. . . . . . .    LITERALLY
      4               SPEC . . . . . . .    LITERALLY
     61  0000H        SPECIALTOKEN . . .    PROCEDURE BYTE EXTERNAL(18) STACK=0000H
    102  0000H        SSEGROUT . . . . .    PROCEDURE EXTERNAL(36) STACK=0000H       335 
    160  0000H     2  STRADR . . . . . .    WORD PARAMETER       161 
    151  0000H     2  STRADR . . . . . .    WORD PARAMETER       152 
    148  0000H     2  STRADR . . . . . .    WORD PARAMETER       149 
    145  0000H     2  STRADR . . . . . .    WORD PARAMETER       146 
      4               STRING . . . . . .    LITERALLY
      2               STRUC. . . . . . .    LITERALLY       169  170  300  375 
    272  0006H     1  STYP . . . . . . .    BYTE PARAMETER AUTOMATIC       273  275 
    375  0002H     1  STYPE. . . . . . .    BYTE MEMBER(SYMB)
    300  0002H     1  STYPE. . . . . . .    BYTE MEMBER(SYMB)
    170  0002H     1  STYPE. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)          230  232  243
                                             248  275 
    169  0002H     1  STYPE. . . . . . .    BYTE MEMBER(OPERANDS)
    375  0000H     9  SYMB . . . . . . .    STRUCTURE BASED(CODEMACROPTR)
    300  0000H     9  SYMB . . . . . . .    STRUCTURE BASED(CODEMACROPTR)
    157  0000H     2  SYMBADR. . . . . .    WORD PARAMETER       158 
    154  0000H     2  SYMBADR. . . . . .    WORD PARAMETER       155 
    143  0000H        SYMBINIT . . . . .    PROCEDURE EXTERNAL(57) STACK=0000H
      4               SYMBOL . . . . . .    LITERALLY
      3               SYMBOLHEAD . . . .    LITERALLY
      3               SYMBOLSTRUC. . . .    LITERALLY       169  170  300  375 
    170  0000H     2  SYMBTABADR . . . .    WORD EXTERNAL(85)         227  229  233  239  241
                                             264  285 
    141  0000H        SYMBTERMINATE. . .    PROCEDURE EXTERNAL(56) STACK=0000H
     19  0000H     2  T. . . . . . . . .    WORD PARAMETER        20 
      2               TAB. . . . . . . .    LITERALLY
     22  0000H     2  TEXTADR. . . . . .    WORD PARAMETER        23 
      2               THENDO . . . . . .    LITERALLY       215  225  227  230  243  251  262
                                             264  283  289  302  304  312  317  379  381  394
                                             431  433  463  465  479 
PL/M-86 COMPILER    DECODE LINE MODULE                                           10/5/81    PAGE  15


    122  0000H        TITLEROUT. . . . .    PROCEDURE EXTERNAL(46) STACK=0000H       353 
     64  0000H     1  TOK. . . . . . . .    BYTE PARAMETER        65 
     61  0000H     1  TOK. . . . . . . .    BYTE PARAMETER        62 
    169  0000H     4  TOKEN. . . . . . .    STRUCTURE EXTERNAL(72)         210  214  458  469
                                             470 
      2               TRUE . . . . . . .    LITERALLY       242  259  266  270  384  486 
    457  0056H     1  TYP. . . . . . . .    BYTE       458  459  461  463  469  470  475 
    376  0004H     1  TYP. . . . . . . .    BYTE PARAMETER AUTOMATIC       377  383 
     95  0000H     1  TYP. . . . . . . .    BYTE PARAMETER        96 
    169  0000H     1  TYPE . . . . . . .    BYTE MEMBER(TOKEN)        210  458  470 
      3               TYPEBIT. . . . . .    LITERALLY
     10  0000H        TYPECALC . . . . .    PROCEDURE BYTE EXTERNAL(0) STACK=0000H
      3               TYPECOUNT. . . . .    LITERALLY
      4               UDEFSYMB . . . . .    LITERALLY
      9               UDEFSYMBOL . . . .    LITERALLY
     40  0000H        UPPER. . . . . . .    PROCEDURE BYTE EXTERNAL(10) STACK=0000H
     80  0000H     1  USEFACT. . . . . .    BYTE PARAMETER        81 
     10  0000H     2  VAL. . . . . . . .    WORD PARAMETER        11 
    169  0002H     2  VALUE. . . . . . .    WORD MEMBER(TOKEN)        214  469 
      4               VARIABLE . . . . .    LITERALLY       383 
      5               WRD. . . . . . . .    LITERALLY       306  349  406  426  427 
     13  0000H        WRDTEST. . . . . .    PROCEDURE BYTE EXTERNAL(1) STACK=0000H



MODULE INFORMATION:

     CODE AREA SIZE     = 04F3H   1267D
     CONSTANT AREA SIZE = 0027H     39D
     VARIABLE AREA SIZE = 0057H     87D
     MAXIMUM STACK SIZE = 0024H     36D
     1005 LINES READ
     0 PROGRAM ERROR(S)

END OF PL/M-86 COMPILATION
