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


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



              $title ('SCANNER MODULE')
   1          scanm:
              do;

              /*

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

              */

              $include (:f1:macro.lit)
          =   $nolist
              $include (:f1:struc.lit)
          =   $nolist
              $include (:f1:equals.lit)
          =   $nolist
              $include (:f1:files.ext)
          =   $nolist
              $include (:f1:predef.ext)
          =   $nolist
              $include (:f1:subr2.ext)
          =   $nolist
              $include (:f1:print.ext)
          =   $nolist
              $include (:f1:global.ext)
          =   $nolist

                      /* Variables : */

 107   1      dcl
              eoffound        byte,   /* true if end-of-file is found */
              lowercase       byte,   /* false if stringinput, otherwise true */
              crfound         byte,   /* true if previous input was CR */
              printready      byte,   /* true if output line to be printed */
              stacksave       addr;   /* save of stack pointer */


              /* Routine to perform unnormal exit from module */

 108   1      exit: proc;
 109   2        stackptr=stacksave;   /* restore input stack */
 110   2      end exit;

              /* Put printcharacter into printfile output buffer */

 111   1      putprintchar: proc(ch);
 112   2        dcl ch byte;
 113   2        sourcebuf(sourceptr)=ch;
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   2


 114   2        if sourceptr < last(sourcebuf) then$do
 116   3          sourceptr=sourceptr+1;
 117   3        end$if;
 118   2      end putprintchar;


              /* Read single character from input file. Put characters
                 except CR-LF to printbuffer. Convert to uppercase letters */

 119   1      read$input: proc byte;
 120   2        dcl ch byte;
 121   2        if eoffound then call exit;  /* unnormal exit */
                                             /* read byte from file */
 123   2        if include$on then ch=inincludebyte; else ch=insourcebyte;
 126   2        if ch=end$of$file then$do   /* test for end-of-file */
 128   3          eoffound=true;
 129   3        else$do
 131   3          if crfound and ch=lf then$do /* ignore LF after CR */
 133   4            ch=space;
 134   4          else$do;
 137   4            if ch=cr then$do    /* test for CR */
 139   5              crfound=true;
 140   5            else$do;
 143   5              crfound=false;
 144   5              call putprintchar(ch);
 145   5              if ch=lf then ch=space; /* interpret LF within line as space */
                    end$if;
 148   4          end$if;
 149   3        end$if;
 150   2        if not lowercase then$do   /* convert to uppercase */
 152   3          ch=upper(ch);
 153   3        end$if;
 154   2        return ch;
 155   2      end read$input;


              /* skip blanks and tab's in input */

 156   1      skip$blanks: proc;
 157   2        do while nextch=space or nextch=tab;
 158   3          nextch=read$input;
 159   3        end$while;
 160   2      end skip$blanks;


              /* Put character into accumulator */

 161   1      putaccum: proc(ch);
 162   2        dcl ch byte;
 163   2        accum(acclen)=ch;
 164   2        if acclen < last(accum) then$do
 166   3          acclen=acclen+1;
 167   3        end$if;
 168   2      end put$accum;


              /* Routine to scan remainder of token until a non-
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   3


                 alphanumeric character is found. Skip blanks
                 behind token */

 169   1      get$remainder: proc(numb);
 170   2        dcl (cont,numb) byte;
 171   2        cont=true;
 172   2        do while cont;
 173   3          do while alphanumeric(nextch:=read$input);
 174   4            call putaccum(nextch);
 175   4          end$while;
 176   3          cont=false;
 177   3          if nextch = '@' or nextch = '_' then$do
 179   4            cont=true;
 180   4            if numb then call putaccum(nextch);
                  end$if;
                end$while;
 184   2        call skipblanks;
 185   2      end get$remainder;

              /* Routine to scan a text string. Called from SCAN */

 186   1      stringr: proc;
 187   2        dcl cont byte;
 188   2        lowercase=true;
 189   2        acclen=0;
 190   2        cont=true;
 191   2        do while cont;
 192   3          nextch=readinput;
 193   3          do while nextch <> '''' and nextch <> cr;
 194   4            call putaccum(nextch);
 195   4            nextch=read$input;
 196   4          end$while;
 197   3          if nextch='''' then$do
 199   4            if (nextch:=readinput) = '''' then$do /* interpret '' as ' */
 201   5              call putaccum(nextch);
 202   5            else$do
 204   5              lowercase=false;
 205   5              call skipblanks;
 206   5              token.type=string;
 207   5              cont=false;
 208   5            end$if;
 209   4          else$do
 211   4            lowercase=false;
 212   4            token.type=error;
 213   4            cont=false;
 214   4          end$if;
 215   3        end$while;
 216   2      end stringr;


              /* Routine to scan a number. Called from SCAN. Test syntax
                 of number, compute binary value. */

 217   1      numbr: proc;
 218   2        dcl
                nobase        byte, /* number system, 2,8,10 or 16 */
                maxlgth       byte, /* max legal no of digits */
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   4


                (i,j)         byte, /* counters */
                ch            byte,
                value         addr, /* 16 bit binary value */
                errorflag     byte; /* syntax error flag */

 219   2        errorflag=false;
 220   2        call getremainder(true);   /* get rest of token */
 221   2        ch=accum(acclen-1);   /* pick up last character of token */
 222   2        j=acclen-2;

                /* B (binary) */
 223   2        IF CH = 'B' THEN
 224   2          do; nobase=2; maxlgth=16; end;

                /* O or Q (octal) */
 228   2        ELSE IF CH = 'O' OR CH = 'Q' THEN
 229   2          do; nobase=8; maxlgth=6; end;

                /* H (hexadecimal) */
 233   2        ELSE IF CH = 'H' THEN
 234   2          do; nobase=16; maxlgth=4; end;

                /* D (decimal) */
 238   2        ELSE IF CH = 'D' THEN
 239   2          do; nobase=10; maxlgth=5; end;

                /* no subscript, default=decimal */
                ELSE
 243   2          do; nobase=10; maxlgth=5; j=j+1; end;

 248   2        i=0ffh;      /* skip leading zeros */
 249   2        do while accum(i:=i+1) = '0'; end;
 251   2        if j < maxlgth+i then$do
 253   3          value=0;      /* syntax check number, compute binary value */
 254   3          do while i <= j;
 255   4            ch=accum(i);
 256   4            ch=ch-'0';
 257   4            if ch > 9 then ch=ch-7;
 259   4            if ch >= nobase then$do
 261   5              errorflag=true;
 262   5            end$if;
 263   4            value=value*nobase+ch;
 264   4            i=i+1;
 265   4          end$while;
 266   3        else$do
 268   3          errorflag=true;
 269   3        end$if;

 270   2        if errorflag then$do
 272   3          token.type=error;
 273   3        else$do
 275   3          token.type=number;
 276   3          token.descr=0;
 277   3          token.value=value;
 278   3        end$if;

 279   2      end numbr;
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   5




              /* Routine to scan an identifier. Lookup identifier in table
                 for predefined symbols */

 280   1      identr: proc;
 281   2        call get$remainder(false);  /* get rest of token into accumulator */
                                     /* look up identifier */
 282   2        if not pfind(acclen,.accum(0),.token) then$do
 284   3          token.type=ident;
 285   3        end$if;
 286   2      end identr;

                      /* PUBLIC subroutines : */

 287   1      scaninit: proc public;
 288   2        eofset,eoffound,crfound,lowercase,printready=false;
 289   2        CALL FILL (SPACE, SIZE (PREFIX), .PREFIX);
 290   2        CALL FILL (SPACE, LENGTH (ABSADDR), .ABSADDR);
 291   2        sourceptr,prefixptr=0;
 292   2        call printinit;   /* initiate print module */
 293   2        call rewindsource;
 294   2        nextch=space;
 295   2      end scaninit;

 296   1      scan: proc public;

 297   2        stacksave=stackptr;
 298   2        if printready then$do
 300   3          call print$source$line;
 301   3          print$ready=false;
 302   3        end$if;
 303   2        call skipblanks;
 304   2        if eoffound then$do
 306   3          token.type=spec;
 307   3          if crfound then$do
 309   4            eoffound=false;
 310   4            eofset=true;
 311   4          else$do
 313   4            printready=true;  /* terminate line before EOF */
 314   4            crfound=true;
 315   4            accum(0)=cr;
 316   4          end$if;
 317   3        else$do
 319   3          acclen=1;
 320   3          accum(0)=nextch;

                  /* identifier */
 321   3          IF LETTER (NEXTCH) THEN call identr;

                  /* number */
 323   3          ELSE IF DIGIT (NEXTCH) THEN call numbr;

                  /* string */
 325   3          ELSE IF NEXTCH = '''' THEN call stringr;

                  /* special letter */
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   6


                  ELSE
 327   3            do;
 328   4            token.type=spec;
 329   4            if nextch='!' then accum(0) = cr;
 331   4            IF NEXTCH = ';' THEN$DO
 333   5              DO WHILE ACCUM (0) <> CR;
 334   6                ACCUM (0) = READINPUT;
 335   6              END$WHILE;
 336   5            END$IF;
 337   4            nextch=space;
 338   4            if crfound then$do
 340   5              print$ready=true;
 341   5            else$do
 343   5              call skipblanks;
 344   5            end$if;
 345   4            end;

 346   3        end$if;
 347   2      end scan;

 348   1      skip$rest$of$line: proc public;
 349   2        do while accum(0) <> cr;
 350   3          call scan;
 351   3        end$while;
 352   2      end skip$rest$of$line;

 353   1      specialtoken: proc(tok) byte public;
 354   2        dcl tok byte;
 355   2        if (token.type=spec) and (accum(0)=tok) then return true;
 357   2        return false;
 358   2      end specialtoken;

 359   1      skip$until: proc(tok) byte public;
 360   2        dcl tok byte;
 361   2        do forever;
 362   3          if token.type=spec then$do
 364   4            if accum(0)=tok then$do
 366   5              call scan;
 367   5              return true;
 368   5            end$if;
 369   4            if accum(0)=cr then return false;
                  end$if;
 372   3          call scan;
 373   3        end$forever;
 374   2      end skip$until;

 375   1      emptyline: proc byte public;
 376   2        return specialtoken(cr);
 377   2      end emptyline;

 378   1      end$module scanm;
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   7


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


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


     49  0000H     2  A. . . . . . . . .    WORD PARAMETER        50 
    104  0000H     4  ABSADDR. . . . . .    BYTE ARRAY(4) EXTERNAL(70)          290 
    104  0000H     1  ACCLEN . . . . . .    BYTE EXTERNAL(74)         163  164  166  189  221
                                             222  282  319 
    104  0000H     1  ACCLENSAVE . . . .    BYTE EXTERNAL(77)
    104  0000H    80  ACCUM. . . . . . .    BYTE ARRAY(80) EXTERNAL(75)         163  164  221
                                             249  255  282  315  320  330  333  334  349  355
                                             364  369 
    104  0000H    80  ACCUMSAVE. . . . .    BYTE ARRAY(80) EXTERNAL(76)
      2               ADDR . . . . . . .    LITERALLY        45   53   59   77   80   83   86
                                             104  107  218 
     67  0000H        ALPHANUMERIC . . .    PROCEDURE BYTE EXTERNAL(24) STACK=0000H       173
     70  0000H        ASCIICHAR. . . . .    PROCEDURE BYTE EXTERNAL(25) STACK=0000H
    104  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(OPERANDS)
    104  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(CURRENTSYMBOL)
      3               BASEREGBIT . . . .    LITERALLY
      3               BASEREGCOUNT . . .    LITERALLY
      3               BREGBIT. . . . . .    LITERALLY
      3               BREGCOUNT. . . . .    LITERALLY
      5               BYT. . . . . . . .    LITERALLY
      9  0000H     1  CH . . . . . . . .    BYTE PARAMETER        10 
    218  000FH     1  CH . . . . . . . .    BYTE       221  223  228  233  238  255  256  257
                                             258  259  263 
    120  0008H     1  CH . . . . . . . .    BYTE       124  125  126  131  133  137  144  145
                                             146  152  154 
     88  0000H     1  CH . . . . . . . .    BYTE PARAMETER        89 
    111  0004H     1  CH . . . . . . . .    BYTE PARAMETER AUTOMATIC       112  113 
     70  0000H     1  CH . . . . . . . .    BYTE PARAMETER        71 
     73  0000H     1  CH . . . . . . . .    BYTE PARAMETER        74 
    161  0004H     1  CH . . . . . . . .    BYTE PARAMETER AUTOMATIC       162  163 
     67  0000H     1  CH . . . . . . . .    BYTE PARAMETER        68 
     64  0000H     1  CH . . . . . . . .    BYTE PARAMETER        65 
     61  0000H     1  CH . . . . . . . .    BYTE PARAMETER        62 
     15  0000H     1  CH . . . . . . . .    BYTE PARAMETER        16 
     58  0000H     1  CH . . . . . . . .    BYTE PARAMETER        59 
     12  0000H     1  CH . . . . . . . .    BYTE PARAMETER        13 
    104  0000H     2  CIP. . . . . . . .    WORD EXTERNAL(39)
     38  0000H        CLOSEHEX . . . . .    PROCEDURE EXTERNAL(13) STACK=0000H
     36  0000H        CLOSEINCLUDE . . .    PROCEDURE EXTERNAL(12) STACK=0000H
     40  0000H        CLOSEPRINT . . . .    PROCEDURE EXTERNAL(14) STACK=0000H
     32  0000H        CLOSESOURCE. . . .    PROCEDURE EXTERNAL(10) STACK=0000H
     42  0000H        CLOSESYMBOL. . . .    PROCEDURE EXTERNAL(15) STACK=0000H
      4               CODE . . . . . . .    LITERALLY
    104  0000H     1  CODEMACROFLAG. . .    BYTE EXTERNAL(96)
      3               CODEMACROHEAD. . .    LITERALLY
    104  0000H     2  CODEMACROPTR . . .    WORD EXTERNAL(91)
    170  0009H     1  CONT . . . . . . .    BYTE       171  172  176  179 
    187  000AH     1  CONT . . . . . . .    BYTE       190  191  207  213 
      2               CR . . . . . . . .    LITERALLY       137  193  315  330  333  349  369
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   8


                                             376 
    107  0006H     1  CRFOUND. . . . . .    BYTE       131  139  143  288  307  314  338 
    104  0000H     2  CSCIP. . . . . . .    WORD EXTERNAL(44)
    104  0000H     1  CSEGSPEC . . . . .    BYTE EXTERNAL(42)
    104  0000H     1  CSEGTYPE . . . . .    BYTE EXTERNAL(40)
    104  0000H     2  CSEGVALUE. . . . .    WORD EXTERNAL(41)
    104  0000H     1  CSPEC. . . . . . .    BYTE EXTERNAL(51)
    104  0000H     2  CURCSEG. . . . . .    WORD EXTERNAL(47)
    104  0000H     2  CURDSEG. . . . . .    WORD EXTERNAL(48)
    104  0000H     2  CURESEG. . . . . .    WORD EXTERNAL(50)
    104  0000H     9  CURRENTSYMBOL. . .    STRUCTURE EXTERNAL(87)
    104  0000H     2  CURSSEG. . . . . .    WORD EXTERNAL(49)
     76  0000H     2  D. . . . . . . . .    WORD PARAMETER        77 
     79  0000H     2  D. . . . . . . . .    WORD PARAMETER        80 
     85  0000H     2  D. . . . . . . . .    WORD PARAMETER        86 
     82  0000H     2  D. . . . . . . . .    WORD PARAMETER        83 
      2               DCL. . . . . . . .    LITERALLY
     85  0000H        DECOUT . . . . . .    PROCEDURE EXTERNAL(30) STACK=0000H
    104  0000H     1  DEFAULTDRIVE . . .    BYTE EXTERNAL(94)
      4               DELETEDSYMB. . . .    LITERALLY
    104  0001H     1  DESCR. . . . . . .    BYTE MEMBER(TOKEN)        276 
     44  0000H     1  DEV. . . . . . . .    BYTE PARAMETER        45 
     61  0000H        DIGIT. . . . . . .    PROCEDURE BYTE EXTERNAL(22) STACK=0000H       323
      4               DOUBLEDEFINED. . .    LITERALLY
    104  0000H     2  DSCIP. . . . . . .    WORD EXTERNAL(46)
    104  0000H     1  DSPEC. . . . . . .    BYTE EXTERNAL(52)
      5               DWRD . . . . . . .    LITERALLY
    102  0000H        EJECT. . . . . . .    PROCEDURE EXTERNAL(37) STACK=0000H
      2               ELSEDO . . . . . .    LITERALLY
    375  045FH    11  EMPTYLINE. . . . .    PROCEDURE BYTE PUBLIC STACK=0008H
      2               ENDCASE. . . . . .    LITERALLY
      2               ENDDO. . . . . . .    LITERALLY
      2               ENDFOREVER . . . .    LITERALLY
      2               ENDIF. . . . . . .    LITERALLY       146  181  370 
      2               ENDMODULE. . . . .    LITERALLY
      2               ENDOFFILE. . . . .    LITERALLY       126 
      2               ENDPROC. . . . . .    LITERALLY
      2               ENDWHILE . . . . .    LITERALLY       182 
    107  0004H     1  EOFFOUND . . . . .    BYTE       121  128  288  304  309 
    104  0000H     1  EOFSET . . . . . .    BYTE EXTERNAL(78)         288  310 
     76  0000H        EQUAL. . . . . . .    PROCEDURE BYTE EXTERNAL(27) STACK=0000H
      4               ERROR. . . . . . .    LITERALLY       212  272 
    218  0010H     1  ERRORFLAG. . . . .    BYTE       219  261  268  270 
    104  0000H     1  ERRORPRINTED . . .    BYTE EXTERNAL(81)
    104  0000H     2  ERRORS . . . . . .    WORD EXTERNAL(71)
    104  0000H     2  ESCIP. . . . . . .    WORD EXTERNAL(43)
    104  0000H     1  ESPEC. . . . . . .    BYTE EXTERNAL(54)
    108  0000H    10  EXIT . . . . . . .    PROCEDURE STACK=0002H          122 
      2               FALSE. . . . . . .    LITERALLY       143  176  204  207  211  213  219
                                             281  288  301  309  357  370 
     55  0000H     2  FCBADR . . . . . .    WORD PARAMETER        56 
     55  0000H        FILEABORT. . . . .    PROCEDURE EXTERNAL(20) STACK=0000H
      3               FILEISTRUCTURE . .    LITERALLY
      3               FILEOSTRUCTURE . .    LITERALLY
     47  0000H        FILESETUP. . . . .    PROCEDURE BYTE EXTERNAL(17) STACK=0000H
     58  0000H        FILL . . . . . . .    PROCEDURE EXTERNAL(21) STACK=0000H       289  290
     44  0000H     2  FILNAM . . . . . .    WORD PARAMETER        45 
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE   9


     44  0000H     2  FILTYP . . . . . .    WORD PARAMETER        45 
    104  0000H     2  FIRSTMACROPTR. . .    WORD EXTERNAL(82)
      2               FOREVER. . . . . .    LITERALLY       361 
      2               FORMFEED . . . . .    LITERALLY
    104  0000H     1  FULLSYMBTAB. . . .    BYTE EXTERNAL(84)
    169  00E6H    85  GETREMAINDER . . .    PROCEDURE STACK=0012H          220  281 
    105  0000H        GLOBALINIT . . . .    PROCEDURE EXTERNAL(97) STACK=0000H
    104  0000H     5  HELP . . . . . . .    BYTE ARRAY(5) EXTERNAL(92)
     79  0000H        HEX1OUT. . . . . .    PROCEDURE EXTERNAL(28) STACK=0000H
     82  0000H        HEX2OUT. . . . . .    PROCEDURE EXTERNAL(29) STACK=0000H
    104  0000H     1  I. . . . . . . . .    BYTE EXTERNAL(93)
    218  000DH     1  I. . . . . . . . .    BYTE       248  249  251  254  255  264 
      4               IDENT. . . . . . .    LITERALLY       284 
    280  02DDH    37  IDENTR . . . . . .    PROCEDURE STACK=0016H          322 
     44  0000H        IFILESETUP . . . .    PROCEDURE EXTERNAL(16) STACK=0000H
    104  0000H     1  IFLEVEL. . . . . .    BYTE EXTERNAL(86)
    104  0000H     1  IFLIST . . . . . .    BYTE EXTERNAL(57)
    104  0000H     1  INCLUDEDEFAULT . .    BYTE EXTERNAL(95)
    104  0000H     1  INCLUDEON. . . . .    BYTE EXTERNAL(85)         123 
      3               INDEXREGBIT. . . .    LITERALLY
      3               INDEXREGCOUNT. . .    LITERALLY
     20  0000H        ININCLUDEBYTE. . .    PROCEDURE BYTE EXTERNAL(4) STACK=0000H        124
      2               INIT . . . . . . .    LITERALLY
     18  0000H        INSOURCEBYTE . . .    PROCEDURE BYTE EXTERNAL(3) STACK=0000H        125
    104  0000H     1  INTELHEXON . . . .    BYTE EXTERNAL(79)
      3               IREGBIT. . . . . .    LITERALLY
      3               IREGCOUNT. . . . .    LITERALLY
    218  000EH     1  J. . . . . . . . .    BYTE       222  246  251  254 
      4               LAB. . . . . . . .    LITERALLY
                      LAST . . . . . . .    BUILTIN         114  164 
      8               LEFTBRACKET. . . .    LITERALLY
                      LENGTH . . . . . .    BUILTIN         290 
    104  0000H     2  LENGTH . . . . . .    WORD MEMBER(OPERANDS)
    104  0000H     2  LENGTH . . . . . .    WORD MEMBER(CURRENTSYMBOL)
     64  0000H        LETTER . . . . . .    PROCEDURE BYTE EXTERNAL(23) STACK=0000H       321
      2               LF . . . . . . . .    LITERALLY       131  145 
      2               LIT. . . . . . . .    LITERALLY         2    3    4    5    6    7    8
                                            
    107  0005H     1  LOWERCASE. . . . .    BYTE       150  188  204  211  288 
    104  0000H     2  MACROPTR . . . . .    WORD EXTERNAL(83)
    104  0000H     1  MAXCOL . . . . . .    BYTE EXTERNAL(58)
    218  000CH     1  MAXLGTH. . . . . .    BYTE       226  231  236  241  245  251 
     76  0000H     1  N. . . . . . . . .    BYTE PARAMETER        77 
     58  0000H     1  N. . . . . . . . .    BYTE PARAMETER        59 
     49  0000H     1  N. . . . . . . . .    BYTE PARAMETER        50 
     85  0000H     2  N. . . . . . . . .    WORD PARAMETER        86 
     82  0000H     2  N. . . . . . . . .    WORD PARAMETER        83 
     79  0000H     1  N. . . . . . . . .    BYTE PARAMETER        80 
      4               NEGLECTED. . . . .    LITERALLY
    104  0000H     1  NEXTCH . . . . . .    BYTE EXTERNAL(73)         157  158  173  174  177
                                             181  192  193  194  195  197  199  201  294  320
                                             321  323  325  329  331  337 
      5               NIL. . . . . . . .    LITERALLY
    218  000BH     1  NOBASE . . . . . .    BYTE       225  230  235  240  244  259  263 
    104  0000H     1  NOERROR. . . . . .    BYTE EXTERNAL(80)
    104  0000H     1  NOOPER . . . . . .    BYTE EXTERNAL(89)
      3               NOOVERCOUNT. . . .    LITERALLY
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE  10


      3               NOOVERRIDEBIT. . .    LITERALLY
    169  0004H     1  NUMB . . . . . . .    BYTE PARAMETER AUTOMATIC       170  180 
      4               NUMBER . . . . . .    LITERALLY       275 
    217  01BBH   290  NUMBR. . . . . . .    PROCEDURE STACK=0016H          324 
      8               OAND . . . . . . .    LITERALLY
      8               OEQ. . . . . . . .    LITERALLY
    104  0006H     2  OFFSET . . . . . .    WORD MEMBER(OPERANDS)
    104  0006H     2  OFFSET . . . . . .    WORD MEMBER(CURRENTSYMBOL)
      8               OGE. . . . . . . .    LITERALLY
      8               OGT. . . . . . . .    LITERALLY
      8               OLAST. . . . . . .    LITERALLY
      8               OLE. . . . . . . .    LITERALLY
      8               OLENGTH. . . . . .    LITERALLY
      8               OLT. . . . . . . .    LITERALLY
      8               OMOD . . . . . . .    LITERALLY
      8               ONE. . . . . . . .    LITERALLY
      8               ONOT . . . . . . .    LITERALLY
      8               OOFFSET. . . . . .    LITERALLY
      8               OOR. . . . . . . .    LITERALLY
     26  0000H        OPENHEX. . . . . .    PROCEDURE EXTERNAL(7) STACK=0000H
     24  0000H        OPENINCLUDE. . . .    PROCEDURE EXTERNAL(6) STACK=0000H
     28  0000H        OPENPRINT. . . . .    PROCEDURE EXTERNAL(8) STACK=0000H
     22  0000H        OPENSOURCE . . . .    PROCEDURE EXTERNAL(5) STACK=0000H
     30  0000H        OPENSYMBOL . . . .    PROCEDURE EXTERNAL(9) STACK=0000H
    104  0000H    36  OPERANDS . . . . .    STRUCTURE ARRAY(4) EXTERNAL(90)
      3               OPERANDSTRUC . . .    LITERALLY       104 
      4               OPERATOR . . . . .    LITERALLY
      8               OPTR . . . . . . .    LITERALLY
      8               OSEG . . . . . . .    LITERALLY
      8               OSHL . . . . . . .    LITERALLY
      8               OSHORT . . . . . .    LITERALLY
      8               OSHR . . . . . . .    LITERALLY
      8               OTYPE. . . . . . .    LITERALLY
      9  0000H        OUTHEXBYTE . . . .    PROCEDURE EXTERNAL(0) STACK=0000H
     12  0000H        OUTPRINTBYTE . . .    PROCEDURE EXTERNAL(1) STACK=0000H
     15  0000H        OUTSYMBOLBYTE. . .    PROCEDURE EXTERNAL(2) STACK=0000H
     52  0000H        OUTTEXT. . . . . .    PROCEDURE EXTERNAL(19) STACK=0000H
      8               OXOR . . . . . . .    LITERALLY
    104  0000H     1  PAGESIZE . . . . .    BYTE EXTERNAL(64)
    104  0000H     1  PASS . . . . . . .    BYTE EXTERNAL(38)
      7               PCODEMACRO . . . .    LITERALLY
      7               PCSEG. . . . . . .    LITERALLY
      7               PDB. . . . . . . .    LITERALLY
      7               PDBIT. . . . . . .    LITERALLY
      7               PDD. . . . . . . .    LITERALLY
      7               PDSEG. . . . . . .    LITERALLY
      7               PDW. . . . . . . .    LITERALLY
      7               PEJECT . . . . . .    LITERALLY
      7               PEND . . . . . . .    LITERALLY
      7               PENDIF . . . . . .    LITERALLY
      7               PENDM. . . . . . .    LITERALLY
      7               PEQU . . . . . . .    LITERALLY
      7               PESEG. . . . . . .    LITERALLY
     49  0000H        PFIND. . . . . . .    PROCEDURE BYTE EXTERNAL(18) STACK=0000H       282
      7               PIF. . . . . . . .    LITERALLY
      7               PIFLIST. . . . . .    LITERALLY
      7               PINCLUDE . . . . .    LITERALLY
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE  11


      7               PLIST. . . . . . .    LITERALLY
      7               PMODRM . . . . . .    LITERALLY
      7               PNOIFLIST. . . . .    LITERALLY
      7               PNOLIST. . . . . .    LITERALLY
      7               PNOSEGFIX. . . . .    LITERALLY
      7               PORG . . . . . . .    LITERALLY
      7               PPAGESIZE. . . . .    LITERALLY
      7               PPAGEWIDTH . . . .    LITERALLY
      7               PRB. . . . . . . .    LITERALLY
    104  0000H   240  PREFIX . . . . . .    BYTE ARRAY(240) EXTERNAL(68)        289 
    104  0000H     1  PREFIXPTR. . . . .    BYTE EXTERNAL(69)         291 
      7               PRELB. . . . . . .    LITERALLY
      7               PRELW. . . . . . .    LITERALLY
     91  0000H        PRINTCRLF. . . . .    PROCEDURE EXTERNAL(32) STACK=0000H
    104  0000H     1  PRINTDEVICE. . . .    BYTE EXTERNAL(61)
     97  0000H        PRINTINIT. . . . .    PROCEDURE EXTERNAL(35) STACK=0000H       292 
     93  0000H        PRINTNEWPAGE . . .    PROCEDURE EXTERNAL(33) STACK=0000H
    104  0000H     1  PRINTON. . . . . .    BYTE EXTERNAL(55)
    107  0007H     1  PRINTREADY . . . .    BYTE       288  298  301  313  340 
     88  0000H        PRINTSINGLEBYTE. .    PROCEDURE EXTERNAL(31) STACK=0000H
     95  0000H        PRINTSOURCELINE. .    PROCEDURE EXTERNAL(34) STACK=0000H       300 
    104  0000H     1  PRINTSWITCHOFF . .    BYTE EXTERNAL(56)
     99  0000H        PRINTTERMINATE . .    PROCEDURE EXTERNAL(36) STACK=0000H
      2               PROC . . . . . . .    LITERALLY         9   12   15   18   20   22   24
                                              26   28   30   32   34   36   38   40   42   44
                                              47   49   67   70   79   82   85   88   91   93
                                              95   97   99  102  108  111  119  156  161  169
                                             186  217  280  287  296  348  353  359  375 
      7               PRS. . . . . . . .    LITERALLY
      7               PRW. . . . . . . .    LITERALLY
      7               PSEGFIX. . . . . .    LITERALLY
      4               PSEUDO . . . . . .    LITERALLY
      7               PSIMFORM . . . . .    LITERALLY
      7               PSSEG. . . . . . .    LITERALLY
     58  0000H     2  PT . . . . . . . .    WORD PARAMETER        59 
      7               PTITLE . . . . . .    LITERALLY
    161  00C9H    29  PUTACCUM . . . . .    PROCEDURE STACK=0004H          174  181  194  201
    111  000AH    29  PUTPRINTCHAR . . .    PROCEDURE STACK=0004H          144 
      6               RAH. . . . . . . .    LITERALLY
      6               RAL. . . . . . . .    LITERALLY
      6               RAX. . . . . . . .    LITERALLY
      6               RBH. . . . . . . .    LITERALLY
      6               RBL. . . . . . . .    LITERALLY
      6               RBP. . . . . . . .    LITERALLY
      6               RBX. . . . . . . .    LITERALLY
      6               RCH. . . . . . . .    LITERALLY
      6               RCL. . . . . . . .    LITERALLY
      6               RCS. . . . . . . .    LITERALLY
      6               RCX. . . . . . . .    LITERALLY
      6               RDH. . . . . . . .    LITERALLY
      6               RDI. . . . . . . .    LITERALLY
      6               RDL. . . . . . . .    LITERALLY
      6               RDS. . . . . . . .    LITERALLY
      6               RDX. . . . . . . .    LITERALLY
    119  0027H   121  READINPUT. . . . .    PROCEDURE BYTE STACK=0008H          158  173  192
                                             195  199  334 
      2               REENT. . . . . . .    LITERALLY
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE  12


      4               REG. . . . . . . .    LITERALLY
      6               RES. . . . . . . .    LITERALLY
     34  0000H        REWINDSOURCE . . .    PROCEDURE EXTERNAL(11) STACK=0000H       293 
      8               RIGHTBRACKET . . .    LITERALLY
      6               RSI. . . . . . . .    LITERALLY
      6               RSP. . . . . . . .    LITERALLY
      6               RSS. . . . . . . .    LITERALLY
     76  0000H     2  S. . . . . . . . .    WORD PARAMETER        77 
     49  0000H     2  S. . . . . . . . .    WORD PARAMETER        50 
    104  0000H    12  SAVESOURCE . . . .    BYTE ARRAY(12) EXTERNAL(60)
    296  0348H   189  SCAN . . . . . . .    PROCEDURE PUBLIC STACK=001AH        350  366  372
    287  0302H    70  SCANINIT . . . . .    PROCEDURE PUBLIC STACK=000AH
      1  0000H        SCANM. . . . . . .    PROCEDURE STACK=0000H
      3               SEGMBIT. . . . . .    LITERALLY
      3               SEGMCOUNT. . . . .    LITERALLY
    104  0004H     2  SEGMENT. . . . . .    WORD MEMBER(OPERANDS)
    104  0004H     2  SEGMENT. . . . . .    WORD MEMBER(CURRENTSYMBOL)
      3               SEGTYPEBIT . . . .    LITERALLY
      3               SEGTYPECOUNT . . .    LITERALLY
    104  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(OPERANDS)
    104  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)
    104  0000H     1  SIMFORM. . . . . .    BYTE EXTERNAL(65)
                      SIZE . . . . . . .    BUILTIN         289 
    156  00A0H    41  SKIPBLANKS . . . .    PROCEDURE STACK=000CH          184  205  303  343
    348  0405H    17  SKIPRESTOFLINE . .    PROCEDURE PUBLIC STACK=001EH
    359  0432H    45  SKIPUNTIL. . . . .    PROCEDURE BYTE PUBLIC STACK=0020H
    104  0000H    80  SOURCEBUF. . . . .    BYTE ARRAY(80) EXTERNAL(66)         113  114 
    104  0000H    12  SOURCENAME . . . .    BYTE ARRAY(12) EXTERNAL(59)
    104  0000H     1  SOURCEPTR. . . . .    BYTE EXTERNAL(67)         113  114  116  291 
      2               SPACE. . . . . . .    LITERALLY       133  146  157  289  290  294  337
      4               SPEC . . . . . . .    LITERALLY       306  328  355  362 
    353  0416H    28  SPECIALTOKEN . . .    PROCEDURE BYTE PUBLIC STACK=0004H        376 
    104  0000H     2  SSCIP. . . . . . .    WORD EXTERNAL(45)
    104  0000H     1  SSPEC. . . . . . .    BYTE EXTERNAL(53)
                      STACKPTR . . . . .    BUILTIN         109  297 
    107  0000H     2  STACKSAVE. . . . .    WORD       109  297 
      4               STRING . . . . . .    LITERALLY       206 
    186  013BH   128  STRINGR. . . . . .    PROCEDURE STACK=0010H          326 
      2               STRUC. . . . . . .    LITERALLY       104 
    104  0002H     1  STYPE. . . . . . .    BYTE MEMBER(OPERANDS)
    104  0002H     1  STYPE. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)
      4               SYMBOL . . . . . .    LITERALLY
    104  0000H     1  SYMBOLDEVICE . . .    BYTE EXTERNAL(62)
      3               SYMBOLHEAD . . . .    LITERALLY
      3               SYMBOLSTRUC. . . .    LITERALLY       104 
    104  0000H     2  SYMBTABADR . . . .    WORD EXTERNAL(88)
     52  0000H     2  T. . . . . . . . .    WORD PARAMETER        53 
      2               TAB. . . . . . . .    LITERALLY       157 
     55  0000H     2  TEXTADR. . . . . .    WORD PARAMETER        56 
      2               THENDO . . . . . .    LITERALLY       114  126  131  137  150  164  177
                                             197  199  251  259  270  282  298  304  307  331
                                             338  362  364 
    104  0000H    30  TITLE. . . . . . .    BYTE ARRAY(30) EXTERNAL(63)
    359  0004H     1  TOK. . . . . . . .    BYTE PARAMETER AUTOMATIC       360  364 
    353  0004H     1  TOK. . . . . . . .    BYTE PARAMETER AUTOMATIC       354  355 
    104  0000H     4  TOKEN. . . . . . .    STRUCTURE EXTERNAL(72)         206  212  272  275
                                             276  277  282  284  306  328  355  362 
PL/M-86 COMPILER    SCANNER MODULE                                               10/5/81    PAGE  13


      2               TRUE . . . . . . .    LITERALLY       128  139  171  179  188  190  220
                                             261  268  310  313  314  340  356  361  367 
    104  0000H     1  TYPE . . . . . . .    BYTE MEMBER(TOKEN)        206  212  272  275  284
                                             306  328  355  362 
      3               TYPEBIT. . . . . .    LITERALLY
      3               TYPECOUNT. . . . .    LITERALLY
      4               UDEFSYMB . . . . .    LITERALLY
     73  0000H        UPPER. . . . . . .    PROCEDURE BYTE EXTERNAL(26) STACK=0000H       152
     99  0000H     1  USEFACT. . . . . .    BYTE PARAMETER       100 
    218  0002H     2  VALUE. . . . . . .    WORD       253  263  277 
    104  0002H     2  VALUE. . . . . . .    WORD MEMBER(TOKEN)        277 
      4               VARIABLE . . . . .    LITERALLY
      5               WRD. . . . . . . .    LITERALLY



MODULE INFORMATION:

     CODE AREA SIZE     = 046AH   1130D
     CONSTANT AREA SIZE = 0000H      0D
     VARIABLE AREA SIZE = 0011H     17D
     MAXIMUM STACK SIZE = 0020H     32D
     848 LINES READ
     0 PROGRAM ERROR(S)

END OF PL/M-86 COMPILATION
