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