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


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



              $title ('HEX OUTPUT MODULE')
   1          hexout:
              do;

              /*

                modified  3/28/81  R. Silberstein
                modified  3/30/81  R. Silberstein
                modified  4/9/81   R. Silberstein

              */

              /*
                      This is the module to produce the (hex-)output
                      from the assembler. The interface to other modules
                      goes through the subroutine

                             EMITCODEBYTE (outputbyte,segmenttype).

                      This routine outputs one byte of generated code of
                      a specified segment type (code,data,stack,extra).

                      The subroutine also updates the value of the current
                      instruction pointer of the current segment (CIP),
                      and prints the output code on the print line.
              */

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


  84   1      dcl
              empty       lit '0ffh',  /* buffer empty value */
              recordlimit lit '30',    /* max no of bytes pr record */
              loccip      addr,        /* local copy of instruction pointer */
              startfound  byte,        /* true if start record sent */
              gtyp        byte,        /* incomming byte type */
              gbyt        byte,        /* incomming byte */
              curtyp      byte,        /* current byte type */
              sum         byte,        /* used to compute check sum */
              buffer (35) byte,        /* record buffer (RECORDLIMIT+5) */
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   2


              recordlg    byte at (.buffer(0)),
              recordtype  byte at (.buffer(3)),
              offsetaddr  addr at (.buffer(1)),
              bufpt       byte,        /* buffer index */

                     /* Record type conversion table */
                     /*   ( to be changed later ??? ) */

              rectyp$I$tab(12) byte data

                (0ffh,eoftype,0ffh,starttype,INTELdata,INTELdata,
                 INTELdata,INTELdata,INTELsegment,INTELsegment,INTELsegment,
                 INTELsegment),

              rectyp$D$tab(12) byte data

                (0ffh,eoftype,0ffh,starttype,DRcodedata,DRdatadata,
                 DRstackdata,DRextradata,DRcodesegm,DRdatasegm,DRstacksegm,
                 DRextrasegm);


              /*********** subroutines **********/

  85   1      rectyptab: procedure(n) byte;
  86   2        declare n byte;
  87   2        if intel$hex$on then$do
  89   3          return rectyp$I$tab(n);
  90   3        else$do
  92   3          return rectyp$D$tab(n);
  93   3        end$if;
  94   2      end rectyptab;

  95   1      switch$high$low: procedure(p);
  96   2        declare p address, ch based p byte, (s1,s2) byte;
  97   2        s1=ch;
  98   2        p=p+1;
  99   2        s2=ch;
 100   2        ch=s1;
 101   2        p=p-1;
 102   2        ch=s2;
 103   2      end switch$high$low;

 104   1      writebyt: proc (ch);
 105   2        dcl ch byte;
 106   2        call outhexbyte(ch);
 107   2      end writebyt;

 108   1      writerecord: proc;  /* write current recor to file */
 109   2        call switch$high$low(.offsetaddr);
 110   2        recordlg=bufpt-4;
 111   2        sum=0;              /* compute check sum */
 112   2        i=0ffh;
 113   2        do while (i:=i+1) < bufpt;
 114   3          sum=sum+buffer(i);
 115   3        end$while;
 116   2        buffer(bufpt)=-sum;  /* check sum */
 117   2        call writebyt(':');
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   3


 118   2        do i=0 to bufpt;     /* print hexbytes to file */
 119   3          call hex1out(buffer(i),.help(0));
 120   3          call writebyt(help(0));
 121   3          call writebyt(help(1));
 122   3        end$do;
 123   2        call writebyt(cr);
 124   2        call writebyt(lf);
 125   2      end writerecord;

 126   1      enternewbyt: proc(b); /* enter a new byte into buffer */
 127   2        dcl b byte;
 128   2        if bufpt > recordlimit then$do /* test if record full */
 130   3          call writerecord;
 131   3          offsetaddr=cip;
 132   3          bufpt=4;
 133   3        end$if;
 134   2        buffer(bufpt)=b;
 135   2        bufpt=bufpt+1;
 136   2      end enternewbyt;

 137   1      enterinput: proc;
 138   2        call enternewbyt(gbyt);
 139   2      end enterinput;

 140   1      eofrecord: proc;   /* write end-of-file record to file */
 141   2        if curtyp<>empty then call writerecord;
 143   2        recordtype=rectyptab(eoftype);
 144   2        offsetaddr=0;
 145   2        bufpt=4;
 146   2        call writerecord;
 147   2      end eofrecord;

 148   1      startrecord: proc;  /* write a start record to file */
 149   2        dcl seglow byte at (.csegvalue),seghigh byte at (.csegvalue+1),
                    offslow byte at (.cip),offshigh byte at (.cip+1);
 150   2        if pass=2 then$do
 152   3          startfound=true;
 153   3          if curtyp <> empty then call writerecord;
 155   3          bufpt=4;
 156   3          offsetaddr=0;
 157   3          recordtype=rectyptab(starttype);
 158   3          if csegspec then$do
 160   4            call enternewbyt(seghigh);
 161   4            call enternewbyt(seglow);
 162   4          else$do
 164   4            call enternewbyt(0);
 165   4            call enternewbyt(0);
 166   4          end$if;
 167   3          call enternewbyt(offshigh);
 168   3          call enternewbyt(offslow);
 169   3          call writerecord;
 170   3          curtyp=empty;
 171   3        end$if;
 172   2      end startrecord;

 173   1      segmbyte: proc;  /* write a segment value byte to file */
 174   2        if pass = 2 then$do
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   4


 176   3          if curtyp <> gtyp then$do
 178   4            if curtyp <> empty then call writerecord;
 180   4            curtyp=gtyp;
 181   4            recordtype=rectyptab(gtyp);
 182   4            offsetaddr=0;
 183   4            bufpt=4;
 184   4            call enterinput;
 185   4          else$do
 187   4            call enterinput;
 188   4            call writerecord;
 189   4            curtyp=empty;
 190   4          end$if;
 191   3        end$if;
 192   2      end segmbyte;

 193   1      databyte: proc;  /* write a data byte to file */
 194   2        if pass=2 then$do
 196   3          if (curtyp <> gtyp) or (loccip <> cip) then$do
 198   4            if curtyp<>empty then call writerecord;
 200   4            curtyp=gtyp;
 201   4            recordtype=rectyptab(gtyp);
 202   4            offsetaddr=cip;
 203   4            bufpt=4;
 204   4          end$if;
 205   3          call enterinput;
 206   3          call hex1out(gbyt,.prefix(prefixptr)); /* output to listing */
 207   3          prefixptr=prefixptr+2;
 208   3        end$if;
 209   2        cip=cip+1;   /* update instruction pointer */
 210   2        loccip=cip;
 211   2      end databyte;

 212   1      emitinit: proc public;
 213   2        startfound=false;
 214   2        curtyp=empty;
 215   2      end emitinit;

 216   1      emitterminate: proc public;
 217   2        call eofrecord;  /* write EOF record */
 218   2      end emitterminate;

 219   1      emitcodebyte: proc (b,typ) public;
 220   2        dcl (b,typ) byte;
 221   2        gbyt=b;  /* move to global variables */
 222   2        gtyp=typ;

 223   2        do case typ-CSdata;

 224   3          do;               /* CS data */
 225   4          if not startfound then$do
 227   5            call startrecord;
 228   5          end$if;
 229   4          call databyte;
 230   4          end;
 231   3          call databyte;   /* DS data */
 232   3          call databyte;   /* SS data */
 233   3          call databyte;   /* ES data */
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   5


 234   3          call segmbyte;   /* CS value */
 235   3          call segmbyte;   /* DS value */
 236   3          call segmbyte;   /* SS value */
 237   3          call segmbyte;   /* ES value */

 238   3        end$case;

 239   2      end emitcodebyte;

 240   1      end$module hexout;
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   6


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


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


     81  0000H     4  ABSADDR. . . . . .    BYTE ARRAY(4) EXTERNAL(62)
     81  0000H     1  ACCLEN . . . . . .    BYTE EXTERNAL(66)
     81  0000H     1  ACCLENSAVE . . . .    BYTE EXTERNAL(69)
     81  0000H    80  ACCUM. . . . . . .    BYTE ARRAY(80) EXTERNAL(67)
     81  0000H    80  ACCUMSAVE. . . . .    BYTE ARRAY(80) EXTERNAL(68)
      2               ADDR . . . . . . .    LITERALLY         6   12   30   33   36   39   77
                                              81   84 
     20  0000H        ALPHANUMERIC . . .    PROCEDURE BYTE EXTERNAL(5) STACK=0000H
     23  0000H        ASCIICHAR. . . . .    PROCEDURE BYTE EXTERNAL(6) STACK=0000H
    219  0006H     1  B. . . . . . . . .    BYTE PARAMETER AUTOMATIC       220  221 
    126  0004H     1  B. . . . . . . . .    BYTE PARAMETER AUTOMATIC       127  134 
     81  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(CURRENTSYMBOL)
     81  0008H     1  BASEINDEX. . . . .    BYTE MEMBER(OPERANDS)
      3               BASEREGBIT . . . .    LITERALLY
      3               BASEREGCOUNT . . .    LITERALLY
      3               BREGBIT. . . . . .    LITERALLY
      3               BREGCOUNT. . . . .    LITERALLY
     84  0007H    35  BUFFER . . . . . .    BYTE ARRAY(35)        84  114  116  119  134 
     84  002AH     1  BUFPT. . . . . . .    BYTE       110  113  116  118  128  132  134  135
                                             145  155  183  203 
     14  0000H     1  CH . . . . . . . .    BYTE PARAMETER        15 
    104  0004H     1  CH . . . . . . . .    BYTE PARAMETER AUTOMATIC       105  106 
     47  0000H     1  CH . . . . . . . .    BYTE PARAMETER        48 
     41  0000H     1  CH . . . . . . . .    BYTE PARAMETER        42 
     26  0000H     1  CH . . . . . . . .    BYTE PARAMETER        27 
     20  0000H     1  CH . . . . . . . .    BYTE PARAMETER        21 
     11  0000H     1  CH . . . . . . . .    BYTE PARAMETER        12 
     23  0000H     1  CH . . . . . . . .    BYTE PARAMETER        24 
     44  0000H     1  CH . . . . . . . .    BYTE PARAMETER        45 
     96  0000H     1  CH . . . . . . . .    BYTE BASED(P)         97   99  100  102 
     17  0000H     1  CH . . . . . . . .    BYTE PARAMETER        18 
     81  0000H     2  CIP. . . . . . . .    WORD EXTERNAL(31)         131  149  196  202  209
                                             210 
     70  0000H        CLOSEHEX . . . . .    PROCEDURE EXTERNAL(25) STACK=0000H
     68  0000H        CLOSEINCLUDE . . .    PROCEDURE EXTERNAL(24) STACK=0000H
     72  0000H        CLOSEPRINT . . . .    PROCEDURE EXTERNAL(26) STACK=0000H
     64  0000H        CLOSESOURCE. . . .    PROCEDURE EXTERNAL(22) STACK=0000H
     74  0000H        CLOSESYMBOL. . . .    PROCEDURE EXTERNAL(27) STACK=0000H
     81  0000H     1  CODEMACROFLAG. . .    BYTE EXTERNAL(88)
      3               CODEMACROHEAD. . .    LITERALLY
     81  0000H     2  CODEMACROPTR . . .    WORD EXTERNAL(83)
      2               CR . . . . . . . .    LITERALLY       123 
     81  0000H     2  CSCIP. . . . . . .    WORD EXTERNAL(36)
      4               CSDATA . . . . . .    LITERALLY       223 
     81  0000H     1  CSEGSPEC . . . . .    BYTE EXTERNAL(34)         158 
     81  0000H     1  CSEGTYPE . . . . .    BYTE EXTERNAL(32)
     81  0000H     2  CSEGVALUE. . . . .    WORD EXTERNAL(33)         149 
     81  0000H     1  CSPEC. . . . . . .    BYTE EXTERNAL(43)
      4               CSVALUE. . . . . .    LITERALLY
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   7


     81  0000H     2  CURCSEG. . . . . .    WORD EXTERNAL(39)
     81  0000H     2  CURDSEG. . . . . .    WORD EXTERNAL(40)
     81  0000H     2  CURESEG. . . . . .    WORD EXTERNAL(42)
     81  0000H     9  CURRENTSYMBOL. . .    STRUCTURE EXTERNAL(79)
     81  0000H     2  CURSSEG. . . . . .    WORD EXTERNAL(41)
     84  0005H     1  CURTYP . . . . . .    BYTE       141  153  170  176  178  180  189  196
                                             198  200  214 
     38  0000H     2  D. . . . . . . . .    WORD PARAMETER        39 
     35  0000H     2  D. . . . . . . . .    WORD PARAMETER        36 
     29  0000H     2  D. . . . . . . . .    WORD PARAMETER        30 
     32  0000H     2  D. . . . . . . . .    WORD PARAMETER        33 
    193  01EDH   100  DATABYTE . . . . .    PROCEDURE STACK=001AH          229  231  232  233
      2               DCL. . . . . . . .    LITERALLY
     38  0000H        DECOUT . . . . . .    PROCEDURE EXTERNAL(11) STACK=0000H
     81  0000H     1  DEFAULTDRIVE . . .    BYTE EXTERNAL(86)
     81  0001H     1  DESCR. . . . . . .    BYTE MEMBER(TOKEN)
     76  0000H     1  DEV. . . . . . . .    BYTE PARAMETER        77 
     14  0000H        DIGIT. . . . . . .    PROCEDURE BYTE EXTERNAL(3) STACK=0000H
      4               DRCODEDATA . . . .    LITERALLY        84 
      4               DRCODESEGM . . . .    LITERALLY        84 
      4               DRDATADATA . . . .    LITERALLY        84 
      4               DRDATASEGM . . . .    LITERALLY        84 
      4               DREXTRADATA. . . .    LITERALLY        84 
      4               DREXTRASEGM. . . .    LITERALLY        84 
      4               DRSTACKDATA. . . .    LITERALLY        84 
      4               DRSTACKSEGM. . . .    LITERALLY        84 
     81  0000H     2  DSCIP. . . . . . .    WORD EXTERNAL(38)
      4               DSDATA . . . . . .    LITERALLY
     81  0000H     1  DSPEC. . . . . . .    BYTE EXTERNAL(44)
      4               DSVALUE. . . . . .    LITERALLY
      2               ELSEDO . . . . . .    LITERALLY
    219  0268H    70  EMITCODEBYTE . . .    PROCEDURE PUBLIC STACK=0022H
    212  0251H    15  EMITINIT . . . . .    PROCEDURE PUBLIC STACK=0002H
    216  0260H     8  EMITTERMINATE. . .    PROCEDURE PUBLIC STACK=0014H
     84               EMPTY. . . . . . .    LITERALLY       141  153  170  178  189  198  214
      2               ENDCASE. . . . . .    LITERALLY
      2               ENDDO. . . . . . .    LITERALLY
      2               ENDFOREVER . . . .    LITERALLY
      2               ENDIF. . . . . . .    LITERALLY
      2               ENDMODULE. . . . .    LITERALLY
      2               ENDOFFILE. . . . .    LITERALLY
      2               ENDPROC. . . . . .    LITERALLY
      2               ENDWHILE . . . . .    LITERALLY
    137  0112H    12  ENTERINPUT . . . .    PROCEDURE STACK=0016H          184  187  205 
    126  00E5H    45  ENTERNEWBYT. . . .    PROCEDURE STACK=0012H          138  160  161  164
                                             165  167  168 
    140  011EH    38  EOFRECORD. . . . .    PROCEDURE STACK=0010H          217 
     81  0000H     1  EOFSET . . . . . .    BYTE EXTERNAL(70)
      4               EOFTYPE. . . . . .    LITERALLY        84  143 
     29  0000H        EQUAL. . . . . . .    PROCEDURE BYTE EXTERNAL(8) STACK=0000H
     81  0000H     1  ERRORPRINTED . . .    BYTE EXTERNAL(73)
     81  0000H     2  ERRORS . . . . . .    WORD EXTERNAL(63)
     81  0000H     2  ESCIP. . . . . . .    WORD EXTERNAL(35)
      4               ESDATA . . . . . .    LITERALLY
     81  0000H     1  ESPEC. . . . . . .    BYTE EXTERNAL(46)
      4               ESVALUE. . . . . .    LITERALLY
      2               FALSE. . . . . . .    LITERALLY       213 
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   8


      8  0000H     2  FCBADR . . . . . .    WORD PARAMETER         9 
      8  0000H        FILEABORT. . . . .    PROCEDURE EXTERNAL(1) STACK=0000H
      3               FILEISTRUCTURE . .    LITERALLY
      3               FILEOSTRUCTURE . .    LITERALLY
     79  0000H        FILESETUP. . . . .    PROCEDURE BYTE EXTERNAL(29) STACK=0000H
     11  0000H        FILL . . . . . . .    PROCEDURE EXTERNAL(2) STACK=0000H
     76  0000H     2  FILNAM . . . . . .    WORD PARAMETER        77 
     76  0000H     2  FILTYP . . . . . .    WORD PARAMETER        77 
     81  0000H     2  FIRSTMACROPTR. . .    WORD EXTERNAL(74)
      2               FOREVER. . . . . .    LITERALLY
      2               FORMFEED . . . . .    LITERALLY
     81  0000H     1  FULLSYMBTAB. . . .    BYTE EXTERNAL(76)
     84  0004H     1  GBYT . . . . . . .    BYTE       138  206  221 
     82  0000H        GLOBALINIT . . . .    PROCEDURE EXTERNAL(89) STACK=0000H
     84  0003H     1  GTYP . . . . . . .    BYTE       176  180  181  196  200  201  222 
     81  0000H     5  HELP . . . . . . .    BYTE ARRAY(5) EXTERNAL(84)          119  120  121
     32  0000H        HEX1OUT. . . . . .    PROCEDURE EXTERNAL(9) STACK=0000H        119  206
     35  0000H        HEX2OUT. . . . . .    PROCEDURE EXTERNAL(10) STACK=0000H
      1  0000H        HEXOUT . . . . . .    PROCEDURE STACK=0000H
     81  0000H     1  I. . . . . . . . .    BYTE EXTERNAL(85)         112  113  114  118  119
     76  0000H        IFILESETUP . . . .    PROCEDURE EXTERNAL(28) STACK=0000H
     81  0000H     1  IFLEVEL. . . . . .    BYTE EXTERNAL(78)
     81  0000H     1  IFLIST . . . . . .    BYTE EXTERNAL(49)
     81  0000H     1  INCLUDEDEFAULT . .    BYTE EXTERNAL(87)
     81  0000H     1  INCLUDEON. . . . .    BYTE EXTERNAL(77)
      3               INDEXREGBIT. . . .    LITERALLY
      3               INDEXREGCOUNT. . .    LITERALLY
     52  0000H        ININCLUDEBYTE. . .    PROCEDURE BYTE EXTERNAL(16) STACK=0000H
      2               INIT . . . . . . .    LITERALLY
     50  0000H        INSOURCEBYTE . . .    PROCEDURE BYTE EXTERNAL(15) STACK=0000H
      4               INTELDATA. . . . .    LITERALLY        84 
     81  0000H     1  INTELHEXON . . . .    BYTE EXTERNAL(71)          87 
      4               INTELSEGMENT . . .    LITERALLY        84 
      3               IREGBIT. . . . . .    LITERALLY
      3               IREGCOUNT. . . . .    LITERALLY
     81  0000H     2  LENGTH . . . . . .    WORD MEMBER(OPERANDS)
     81  0000H     2  LENGTH . . . . . .    WORD MEMBER(CURRENTSYMBOL)
     17  0000H        LETTER . . . . . .    PROCEDURE BYTE EXTERNAL(4) STACK=0000H
      2               LF . . . . . . . .    LITERALLY       124 
      2               LIT. . . . . . . .    LITERALLY         2    3    4   84 
     84  0000H     2  LOCCIP . . . . . .    WORD       196  210 
     81  0000H     2  MACROPTR . . . . .    WORD EXTERNAL(75)
     81  0000H     1  MAXCOL . . . . . .    BYTE EXTERNAL(50)
     11  0000H     1  N. . . . . . . . .    BYTE PARAMETER        12 
     38  0000H     2  N. . . . . . . . .    WORD PARAMETER        39 
     35  0000H     2  N. . . . . . . . .    WORD PARAMETER        36 
     32  0000H     1  N. . . . . . . . .    BYTE PARAMETER        33 
     29  0000H     1  N. . . . . . . . .    BYTE PARAMETER        30 
     85  0004H     1  N. . . . . . . . .    BYTE PARAMETER AUTOMATIC        86   89   92 
     81  0000H     1  NEXTCH . . . . . .    BYTE EXTERNAL(65)
     81  0000H     1  NOERROR. . . . . .    BYTE EXTERNAL(72)
     81  0000H     1  NOOPER . . . . . .    BYTE EXTERNAL(81)
      3               NOOVERCOUNT. . . .    LITERALLY
      3               NOOVERRIDEBIT. . .    LITERALLY
     81  0006H     2  OFFSET . . . . . .    WORD MEMBER(OPERANDS)
     81  0006H     2  OFFSET . . . . . .    WORD MEMBER(CURRENTSYMBOL)
     84  0008H     2  OFFSETADDR . . . .    WORD AT         109  131  144  156  182  202 
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE   9


    149  0001H     1  OFFSHIGH . . . . .    BYTE EXTERNAL(31) AT      167 
    149  0000H     1  OFFSLOW. . . . . .    BYTE EXTERNAL(31) AT      168 
     58  0000H        OPENHEX. . . . . .    PROCEDURE EXTERNAL(19) STACK=0000H
     56  0000H        OPENINCLUDE. . . .    PROCEDURE EXTERNAL(18) STACK=0000H
     60  0000H        OPENPRINT. . . . .    PROCEDURE EXTERNAL(20) STACK=0000H
     54  0000H        OPENSOURCE . . . .    PROCEDURE EXTERNAL(17) STACK=0000H
     62  0000H        OPENSYMBOL . . . .    PROCEDURE EXTERNAL(21) STACK=0000H
     81  0000H    36  OPERANDS . . . . .    STRUCTURE ARRAY(4) EXTERNAL(82)
      3               OPERANDSTRUC . . .    LITERALLY        81 
     41  0000H        OUTHEXBYTE . . . .    PROCEDURE EXTERNAL(12) STACK=0000H       106 
     44  0000H        OUTPRINTBYTE . . .    PROCEDURE EXTERNAL(13) STACK=0000H
     47  0000H        OUTSYMBOLBYTE. . .    PROCEDURE EXTERNAL(14) STACK=0000H
      5  0000H        OUTTEXT. . . . . .    PROCEDURE EXTERNAL(0) STACK=0000H
     95  0004H     2  P. . . . . . . . .    WORD PARAMETER AUTOMATIC        96   97   98   99
                                             100  101  102 
     81  0000H     1  PAGESIZE . . . . .    BYTE EXTERNAL(56)
     81  0000H     1  PASS . . . . . . .    BYTE EXTERNAL(30)         150  174  194 
     81  0000H   240  PREFIX . . . . . .    BYTE ARRAY(240) EXTERNAL(60)        206 
     81  0000H     1  PREFIXPTR. . . . .    BYTE EXTERNAL(61)         206  207 
     81  0000H     1  PRINTDEVICE. . . .    BYTE EXTERNAL(53)
     81  0000H     1  PRINTON. . . . . .    BYTE EXTERNAL(47)
     81  0000H     1  PRINTSWITCHOFF . .    BYTE EXTERNAL(48)
      2               PROC . . . . . . .    LITERALLY        20   23   32   35   38   41   44
                                              47   50   52   54   56   58   60   62   64   66
                                              68   70   72   74   76   79  104  108  126  137
                                             140  148  173  193  212  216  219 
     11  0000H     2  PT . . . . . . . .    WORD PARAMETER        12 
     84  0007H     1  RECORDLG . . . . .    BYTE AT         110 
     84               RECORDLIMIT. . . .    LITERALLY       128 
     84  000AH     1  RECORDTYPE . . . .    BYTE AT         143  157  181  201 
     84  000CH    12  RECTYPDTAB . . . .    BYTE ARRAY(12) DATA        92 
     84  0000H    12  RECTYPITAB . . . .    BYTE ARRAY(12) DATA        89 
     85  0000H    34  RECTYPTAB. . . . .    PROCEDURE BYTE STACK=0004H          143  157  181
                                             201 
      2               REENT. . . . . . .    LITERALLY
     66  0000H        REWINDSOURCE . . .    PROCEDURE EXTERNAL(23) STACK=0000H
     29  0000H     2  S. . . . . . . . .    WORD PARAMETER        30 
     96  002BH     1  S1 . . . . . . . .    BYTE        97  100 
     96  002CH     1  S2 . . . . . . . .    BYTE        99  102 
     81  0000H    12  SAVESOURCE . . . .    BYTE ARRAY(12) EXTERNAL(52)
    149  0001H     1  SEGHIGH. . . . . .    BYTE EXTERNAL(33) AT      160 
    149  0000H     1  SEGLOW . . . . . .    BYTE EXTERNAL(33) AT      161 
      3               SEGMBIT. . . . . .    LITERALLY
    173  01A9H    68  SEGMBYTE . . . . .    PROCEDURE STACK=001AH          234  235  236  237
      3               SEGMCOUNT. . . . .    LITERALLY
     81  0004H     2  SEGMENT. . . . . .    WORD MEMBER(OPERANDS)
     81  0004H     2  SEGMENT. . . . . .    WORD MEMBER(CURRENTSYMBOL)
      3               SEGTYPEBIT . . . .    LITERALLY
      3               SEGTYPECOUNT . . .    LITERALLY
     81  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(OPERANDS)
     81  0003H     1  SFLAG. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)
     81  0000H     1  SIMFORM. . . . . .    BYTE EXTERNAL(57)
     81  0000H    80  SOURCEBUF. . . . .    BYTE ARRAY(80) EXTERNAL(58)
     81  0000H    12  SOURCENAME . . . .    BYTE ARRAY(12) EXTERNAL(51)
     81  0000H     1  SOURCEPTR. . . . .    BYTE EXTERNAL(59)
      2               SPACE. . . . . . .    LITERALLY
     81  0000H     2  SSCIP. . . . . . .    WORD EXTERNAL(37)
PL/M-86 COMPILER    HEX OUTPUT MODULE                                            10/5/81    PAGE  10


      4               SSDATA . . . . . .    LITERALLY
     81  0000H     1  SSPEC. . . . . . .    BYTE EXTERNAL(45)
      4               SSVALUE. . . . . .    LITERALLY
     84  0002H     1  STARTFOUND . . . .    BYTE       152  213  225 
    148  0144H   101  STARTRECORD. . . .    PROCEDURE STACK=0016H          227 
      4               STARTTYPE. . . . .    LITERALLY        84  157 
      2               STRUC. . . . . . .    LITERALLY        81 
     81  0002H     1  STYPE. . . . . . .    BYTE MEMBER(OPERANDS)
     81  0002H     1  STYPE. . . . . . .    BYTE MEMBER(CURRENTSYMBOL)
     84  0006H     1  SUM. . . . . . . .    BYTE       111  114  116 
     95  0022H    42  SWITCHHIGHLOW. . .    PROCEDURE STACK=0004H          109 
     81  0000H     1  SYMBOLDEVICE . . .    BYTE EXTERNAL(54)
      3               SYMBOLHEAD . . . .    LITERALLY
      3               SYMBOLSTRUC. . . .    LITERALLY        81 
     81  0000H     2  SYMBTABADR . . . .    WORD EXTERNAL(80)
      5  0000H     2  T. . . . . . . . .    WORD PARAMETER         6 
      2               TAB. . . . . . . .    LITERALLY
      8  0000H     2  TEXTADR. . . . . .    WORD PARAMETER         9 
      2               THENDO . . . . . .    LITERALLY        87  128  150  158  174  176  194
                                             196  225 
     81  0000H    30  TITLE. . . . . . .    BYTE ARRAY(30) EXTERNAL(55)
     81  0000H     4  TOKEN. . . . . . .    STRUCTURE EXTERNAL(64)
      2               TRUE . . . . . . .    LITERALLY       152 
    219  0004H     1  TYP. . . . . . . .    BYTE PARAMETER AUTOMATIC       220  222  223 
     81  0000H     1  TYPE . . . . . . .    BYTE MEMBER(TOKEN)
      3               TYPEBIT. . . . . .    LITERALLY
      3               TYPECOUNT. . . . .    LITERALLY
     26  0000H        UPPER. . . . . . .    PROCEDURE BYTE EXTERNAL(7) STACK=0000H
     81  0002H     2  VALUE. . . . . . .    WORD MEMBER(TOKEN)
    104  004CH    13  WRITEBYT . . . . .    PROCEDURE STACK=0008H          117  120  121  123
                                             124 
    108  0059H   140  WRITERECORD. . . .    PROCEDURE STACK=000CH          130  142  146  154
                                             169  179  188  199 



MODULE INFORMATION:

     CODE AREA SIZE     = 02AEH    686D
     CONSTANT AREA SIZE = 0018H     24D
     VARIABLE AREA SIZE = 002DH     45D
     MAXIMUM STACK SIZE = 0022H     34D
     611 LINES READ
     0 PROGRAM ERROR(S)

END OF PL/M-86 COMPILATION
