<CR AS C0071 SAVED 12:14 PM TUE., 6 JULY, 1982 PR<@C0071ASf,"MUASM &ASM29 &PRM29 <%PRM29 ,&LDDEFT%DEF29V&DEF29R,&ASM29~&ASM30 0&LDCD1)b %ASM29)lVMESS ,B$@@ "MASM - A600 MICROASSEMBLER INFORMATION FILE  $ This file describes the procedure to compile and link the Microtec $ microassembler package. The package contains three programs:  DEF29 - Definition program ASM29 - Assembler program  PRM29 - Prom formatter program # All three programs are written in FORTRAN and require an RTE-IV or VI## system. To assemble the source for the A600 baseset or instruction # decode proms all three programs must be compiled and loaded.    To compile the programs use the following commands:  RU,FTN4X,&DEF29,-,-  RU,FTN4X,&ASM29,-,-  RU,FTN4X,&PRM29,-,-  ! To relocate each of the programs use the following commands: !  RU,LOADR  In the loader, use the commands:   OP,LB  RE,%DEF29 or RE,%ASM29 or RE,%PRM29 /E    The package is now ready for use.mmands: !  RU,LOADR  In the loader, use the commands:   OP,LB  RE,%DEF29 or RE,%ASM29 or RE,%PRM29 /E    The packageFTN4,L $FILES(2,6)  PROGRAM ASM29 C C META ASSEMBLER ASSEMBLY PROGRAM VERSION 5.0C FOR AMD 2900, INTEL 3000, ETC. C COPYRIGHT 1980 C MICROTEC C P.O. BOX 60337 C SUNNYVALE, CALIFORNIA 94088 C C PROGRAM UPDATED JULY 1980C C C THE VARIABLES PASSED IN COMMON ARE DEFINED BELOWC C C CVAL = THE VALUE OF A NUMERIC CONSTANT OR LABELC ECOL = COLUMN IN WHICH ERROR WAS DETECTED C FLEN = LENGTH OF DEFINITION FIELD CURRENTLY BEING SCANNED C FTYPE = FIELD TYPE FOR DEFS AND SUBSC IADDR = ARRAY TO HOLD HOLLERITH ADDRESS VALUESC IALPH = ALPHANUMERIC CHARACTER SET"C IAMP = HOST COMPUTER REPRESENTATION OF A HOLLERITH AMPERSAND "!C IAST = HOST COMPUTER REPRESENTATION OF A HOLLERITH ASTERISK!C IATT = LEGAL FIELD ATTRIBUTES OR MODIFIERS C IBIT = NUMBER OF BITS PER HOST COMPUTER WORD  C IBLNK = HOST COMPUTER REPRESENTATION OF A HOLLERITH BLANK C IBUG = DEBUG PARAMETER C ICCNT = NUMBER OF CHARACTERS PER HOST COMPUTER WORD C ICHAR = CURRENT CHARACTER POINTED TO IN INPUT BUFFERC ICHK = CURRENT OPCODE VALUEC ICNT = LINE COUNT FOR SPACE DIRECTIVE C ICOLN = HOST COMPUTER REPRESENTATION OF A HOLLERITH COLON C ICOMM = HOST COMPUTER REPRESENTATION OF A HOLLERITH COMMA C ICOL = CURRENT COLUMN NUMBER FOR SCANC ICRD = LOGICAL UNIT NUMBER OF DEFINITION FILEC ICTAB = HOST COMPUTER REPRESENTATION OF A TAB CHARACTER C IDFLE = LOGICAL UNIT NUMBER OF DEFINITION FILE#C IDIV = HOST COMPUTER REPRESENTATION OF A HOLLERITH DIVIDE SIGN ##C IDOLR = HOST COMPUTER REPRESENTATION OF A HOLLERITH DOLLAR SIGN #C IDREC = RECORD NUMBER FOR DIFINITION FILE C IDUP = DELAYED DUP DIRECTIVE COUNT C IEND = FLAG INDICATING END OF ASSEMBLY SOURCEC IERRL = ERROR INDICATOR FOR LABELSC IERRI = ERROR INDICATOR FOR OPCODES AND OPERANDSC IERR = ERROR INDICATOR C IERRS = TOTAL NUMBER OF ERRORSC IFBIT = MAXIMUM NUMBER OF BITS IN A FIELD C IFCOL = FIRST COLUMN OF SCANC IFCTL = IF CONTROL FLAG C IFLD = FIELD DEFINITION TABLEC IFORM = FORMS CONTROL CHARACTER $C IFPAR = ARRAY FOR CONDITIONAL ASSEMBLY INFORMATION DURING NESTING $C IFSET = IF NESTING LEVEL#C IGRAT = HOST COMPUTER REPRESENTATION OF A HOLLERITH GRATER THAN #"C ILEN = EXPLICIT FIELD FENGTH FOR EXPRESSIONS AND DON'T CARES ""C ILESS = HOST COMPUTER REPRESENTATION OF A HOLLERITH LESS THAN " C ILPAR = HOST COMPUTER REPRESENTATION OF A LEFT PARENTHESIS #C IMBU1 - TEMPORARY BUFFER FOR VARIBLES SAVED IN INTERMEDIATE FILE# C IMFLE = LOGICAL UNIT NUMBER OF OPTIONAL INTERMEDIATE FILE "C IMIN = HOST COMPUTER REPRESENTATION OF A HOLLERITH MINUS SIGN"C IMREC = RECORD NUMBER FOR OPTIONAL INTERMEDIATE FILE$C IMULT = HOST COMPUTER REPRESENTATION OF A HOLLERITH MULTIPLY SIGN $C IN = INPUT BUFFER (FOR SCAN) C INB = INPUT BUFFER (FOR CONTINUATION LINES) C IND = ARRAY USED TO NOLD LINE TO BE DUPLICATEDC INDEX = INDEX OF CURRENT SYMBOL INTO SYMBOL TABLE C INDET = INDEX OF LABEL INTO SYMBOL TABLEC IOBIN = OBJECT MODULE RECORD BUFFER $C IOFLG = FLAG THAT INDICATES NOTHING WRITTEN TO OBJECT MODULE FILE $C IOLIN = NUMBER OF LINES PER OUTPUT PAGE  C IOPVA = OPCODE VALUE C IOREC = RECORD NUMBER FOR OUTPUT OBJECT MODULE FILE C IOVER = INSTRUCTION OVERLAY INDICATOR C IPAGE = CURRENT PAGE NUMBER C IPASS = PASS FLAG, 1=PASS 1, 2=PASS 2 C IPCH = LOGICAL UNIT NUMBER OF OUTPUT OBJECT MODULE "C IPDEF = FLAG THAT INDICATES SYMBOL MUST BE DEFINED BEFORE USE ""C IPLUS = HOST COMPUTER REPRESENTATION OF A HOLLERITH PLUS SIGN "C IPRT = LOGICAL UNIT NUMBER OF OUTPUT LISTING DEVICE!C IRPAR = HOST COMPUTER REPRESENTATION OF A RIGHT PARENTHESIS !"C ISEMI = HOST COMPUTER REPRESENTATION OF A HOLLERITH SEMICOLON ""C ISHRP = HOST COMPUTER REPRESENTATION OF A HOLLERITH SHARP SIGN"C ISYM = NUMBER OF SYMBOLS IN SYMBOL TABLE  C ITAB = SYMBOL TABLE C ITABS = SYMBOL TYPE, E.G. DEF,SUB,SET, OR ORDINARY SYMBOL C ITABV = NUMERIC VALUE OF SYMBOL  C ITYPE = OPCODE TYPE C IQUOT = HOST COMPUTER REPRESENTATION OF A HOLLERITH QUOTE "C IUNDR = HOST COMPUTER REPRESENTATION OF A HOLLERITH UNDER BAR "C IWORD = NUMBER OF WORDS IN HOST COMPUTER PER LABELC IXCNT = NUMBER OF CROSS REFERENCE PAGES C IXPNT = POINTER INTO CROSS REFERENCE TABLEC IXPAG = CROSS REFERENCE TABLE PAGE NUMBER C IXTAB = CORE RESIDENT CROSS REFERENCE ARRAY C IXT = CROSS REFERENCE DISK RECORD C IYFLD = NEXT INDEX INTO FIELD TABLE C IZFLD = LENGTH OF FIELD TABLE "C JATT = FIELD ATTRIBUTES OR MODIFIERS PRESENT IN A SUBSTIUTION"C JBASE = DEFAULT BASE INDEXC JMAC = MACRO LEVEL NUMBER OF DUP DIRECTIVE C JCOL = COLUMN THAT A LABEL ENDS IN $C JREAD = FLAG THAT INDICATES NEXT SOURCE LINE HAS ALREADY BEEN READ$ C JTYPE = SYMBOL TYPE !C KFILE = FLAG THAT INDICATES WHETHER INTERMEDIATE FILE EXISTS!C KLEN = IMPLICIT FIELD LENGTH FOR CONSTANTS C KPCH = LOGICAL UNIT NUMBER OF ENTRY POINT MAPC KTERM = LOGICAL UNIT NUMBER FOR ERROR LINE LISTINGC KWORD = NUMBER OF BITS IN A WORDC LABCT = NUMBER OF CHARACTERS IN SYMBOL JUST SCANNED "C LADR = FLAG TO INDICATE ADDRESS SHOULD BE LISTED FOR COMMENTS"C LATT = FIELD ATTRIBUTES PRESENT IN A DEFINITION FIELDC LC = ASSEMBLY PROGRAM COUNTERC LCMAX = MAXIMUM ADDRESS ASSEMBLED C LCMIN = MINIMUM ADDRESS ASSEMBLED "C LDEF = FLAG TO INDICATE THAT DEFINITION FILE WILL BE PRODUCED"!C LEN = LENGTH OF CURRENT ASSEMBLER INSTRUCTION OR DIRECTIVE!C LEND = FLAG INDICATING END OF CURRENT SOURCE LINEC LEVEL = MACRO LEVEL NUMBER"C LERR = FLAG TO INDICATE THAT ERRORS SHOULD BE LISTED ON KTERM"#C LIF = FLAG TO INDICATE WHETHER IF STATEMENTS WILL BE EXPANDED #C LINE = OUTPUT PAGE LINE COUNT C LINEL = LENGTH OF SOURCE LINE WITH TRAILING BLANKS DELETED "C LINV = FLAG TO INDICATE OBJECT MODULE BITS ARE TO BE INVERTED"C LISN = LINE NUMBER PRINTED ON LISTINGC LLEN = EXPLICIT FIELD LENGTH FOR CONSTANTS $C LLOC = FLAG TO INDICATE LOCAL SYMBOLS SHOULD BE INCLUDED IN TABLE$#C LMAC = FLAG TO INDICATE MACRO CALLS WILL BE EXPANDED ON LISTING#!C LMAC1 = LIST FLAG INDICATING ONLY MACRO CODE LINES BE LISTED!!C LMAP = FLAG TO INDICATE ENTRY POINT MAP SHOULD BE GENERATED!#C LOBJ = FLAG TO INDICATE WHETHER OBJECT MODULE IS TO BE PRODUCED#"C LOBJ1 = FLAG TO INDICATE INTERLEAVED LISTING IS TO BE PRODUCED"#C LOBJ2 = FLAG TO INDICATE OBJECT MODULE IS TO BE LISTED IN BLOCK #C LOCT = OCTAL/HEXADECIMAL LIST FLAG C LODLC = ADDRESS OF LAST OBJECT MODULE WORD ASSEMBLED#C LREF = FLAG TO INDICATE A CROSS REFERENCE TABLE WILL BE LISTED #C LSOR = FLAG TO INDICATE SOURCE WILL BE LISTED!C LSYM = FLAG TO INDICATE THAT A SYMBOL TABLE WILL BE LISTED !C LTAB = SYMBOL TABLE LENGTH C LTBLK = LAST NON-BLANK COLUMN IN INPUT BUFFER  C LTITL = TITLE ARRAY C LWORD = LENGTH OF OBJECT MODULE RECORDS C MAC = FLAG INDICATING CURRENT LINE IS MACRO EXPANSION C MAPAD = ENTRY POINT MAP STARTING ADDRESSC MCFLE = LOGICAL UNIT NUMBER OF INTERMEDIATE FILEC MCNAM = MACRO NAME TABLEC MCNT = MACRO COUNT (TOTAL NUMBER OF MACROS)C MCOL = LAST COLUMN OF SCAN  C MCORE = BUFFER USED TO WRITE TO CROSS REFERENCE DISK FILE C MCREC = RECORD NUMBER FOR INTERMEDIATE FILE C MCEPT = MACRO BUFFER ENDING POINTER C MCSPT = MACRO BUFFER STARTING POINTER C MDISK = TABLE OF STARTING RECORD NUMBERS FOR MACROS C MERR = ERROR INDICATOR FROM LABEL ROUTINEC MLAB = MAXIMUM LABEL LENGTHC MLCOL = LAST COLUMN PRINTED ON OUTPUT LISTING C MOPC = MAXIMUM OPCODE LENGTH C MPARC = NUMBER OF PARAMETERS IN A MACRO DEFINITIONC MSIZE = SIZE OF RECORDS WRITTEN TO INTERMEDIATE FILEC MSREC = MACRO FILE RECORD NUMBERC MWORD = WIDTH OF ENTRY POINT MAPPING ARRAYC MXMAC = MAXIMUM NUMBER OF MACROSC MXREF = SIZE OF CORE RESIDENT CROSS REFERENCE ARRAY C NAME = BUFFER THAT HOLDS SYMBOLC NARG = NUMBER OF ARGUMENTS IN CURRENT MACRO CALL C NBASE = DEFAULT BASE FOR NUMBERSC NDUP = DUP DIRECTIVE COUNT C NENT = NUMBER OF ENTRY POINT SYMBOLS C NERR = SYMBOL ROUTINE ERROR FLAG C NEST = MACRO NESTING FLAG"C NFLAG = SCAN FLAG THAT ALLOWS '3F5H' TYPE CONSTANTS TO BE READ""C NOPRO = FLAG INDICATING LINE SHOULD NOT BE PROCESSED ON PASS 2"C ZVAL = MAXIMUM VALUE OF ANY NUMBER OR CONSTANT C C C THE MAIN ROUTINE CALLS THE MAJOR SUBROUTINESC  DIMENSION IFBUF(256)  REAL IVAL  DIMENSION IBIN(128),LLAB(10) INTEGER FTYPE,FLEN,ECOL  REAL ITABV(600),LC,LODLC,LCMAX,MAPAD COMMON ICRD,IPRT,IPCH,MCFLE,IMFLE,IDFLE,MCREC,IMREC,IDREC ! COMMON IOREC,MLAB,MOPC,IBIT,ICCNT,IWORD,IEND,LEND,KTERM,KPCH!" COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LOBJ,LOBJ1,LOBJ2,LINV,LERR" COMMON LMAC,LADR,LLOC,LMAC1,LMAP,LEVEL,IND(80),JMAC  COMMON ILEN,KLEN,LLEN,FLEN,KWORD,IFLD(1024),IYFLD,IZFLD  COMMON IDUP,NDUP,NFLAG,IOFLG,LWORD,LINEL,KFILE,IFORM,NERR  COMMON IFBIT,ZVAL,CVAL,JREAD,LINE,IPAGE,MERR! COMMON IERRI,IERRL,ECOL,MAC,LISN,NARG,INDET,IFCTL,NOPRO,LEN ! COMMON LTBLK,IN(80),IMBU1(11),INB(80),IALPH(37),LTIME(15) COMMON IAST,IDOLR,ISHRP,IAMP,ICOLN,IGRAT,ILESS,IUNDR,IQUOT  COMMON IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV COMMON IRPAR,ILPAR,IATT(10),JATT(6),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) " COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,IOVER " COMMON IPASS,LC,IOBIN(128),IPDEF,LODLC,LCMAX,LCMIN,NBASE,JBASE"! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,ISYM,LTAB !" COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128),MSIZE" COMMON MCNT,MXMAC,NEST,MSREC,IFLEV COMMON MCSPT,MCEPT,ICHK,LABCT,ICHAR,IFSET,MAPAD,NENT,MWORD  EQUIVALENCE (ICHRA,IALPH(11)),(ICHRX,IALPH(34))  EQUIVALENCE (IOB1,IOBIN(1)),(IBIN(1),IADDR(1,1))C !C IF POSSIBLE, THE META ASSEMBLER DEFINITION FILE PRODUCED BY !C THE DEFINITION PROGRAM SHOULD BE A SEQUENTIAL FILE. C THIS WILL CONSERVE DISK STORAGE. HOWEVER, IF NECESSARY  C THE FILE CAN BE RANDOM ACCESS. THE FOLLOWING DEFINE FILE !C STATEMENT DEFINES THE META ASSEMBLER DEFINITION FILE AND IS !!C INCLUDED FOR INFORMATION PURPOSES ONLY. NOTE THE STATEMENT ! C IS A COMMENT. C THE DEFINITION FILE (SYMBOLIC FILE NUMBER 9) CONSISTS OF!C 500 128-WORD RECORDS. U INDICATES A BINARY FILE. THE NAME !C IDREC IS THE RECORD INDEX.!C VARIOUS COMPUTERS DEFINE FILES IN DIFFERENT WAYS. THIS FILE!C MIGHT HAVE TO BE DEFINED DIFFERENTLY ON YOUR COMPUTER. C C DEFINE FILE 9(500,128,U,IDREC)C #C THE FOLLOWING DEFINE FILE STATEMENT DEFINES AN INTERMEDIATE FILE#!C USED TO HOLD MACRO DEFINITIONS AND TO ACCUMULATE REFERENCES !C FOR THE CROSS REFERENCE TABLE. THIS FILE IS TEMPORARYC AND CAN BE DELETED AFTER PROGRAM EXECUTION. C THE DEFINE FILE PARAMETERS ARE SIMILAR TO THE PREVIOUS"C DEFINE FILE. HOWEVER, THIS FILE MAY NOT BE A SEQUENTIAL FILE."$C THE FILE IS TEMPORARY AND MAY BE DELETED AFTER PROGRAM EXECUTION. $C C DEFINE FILE 8(500,128,U,MCREC)C "C THE FOLLOWING COMMENTED DEFINE FILE STATEMENT IS INCLUDED FOR "C REFERENCE. IF NECESSARY, IT MAY BE USED TO DEFINE THEC INTERMEDIATE FILE THAT THE ASSEMBLY PROGRAM USES AS A "C RANDOM ACCESS FILE. THIS FILE SHOULD BE LEFT AS A SEQUENTIAL " C FILE IF POSSIBLE. THIS FILE HOLDS A COPY OF THE ASSEMBLER C SOURCE LINE TO BE READ ON PASS 2 AND SOME VARIABLES C CALCULATED ON PASS 1 THAT ARE REQUIRED ON PASS 2. C C DEFINE FILE 7(1000,91,U,IMREC)C C !C THE USER MAY WANT TO OPEN A DISK FILE FOR THE OUTPUT OBJECT !C MODULE AT THIS POINT. SEE OPERATION NOTES FOR DETAILSC C DEFINE 4(200,128,U,IOREC) C C INITIALIZE PROGRAM VARIABLESC  CALL FTIME(LTIME)  CALL INIT  C READ DEFINITION FILE CALL INOUT(2) C PERFORM PASS 1 OF ASSEMBLY, BUILD SYMBOL TABLE IPASS = 1  CALL PASS C REWIND INTERMEDIATE FILE REWIND IMFLE C SET MAXIMUM PROGRAM COUNTER  LCMAX = LCC INITIALIZE VARIABLES FOR PASS 2  CALL INIT "C PERFORM PASS 2 OF ASSEMBLY, GENERATE LISTING AND OBJECT MODULE" IPASS = 2  CALL PASS C CHECK TO SEE IF ENTRY SYMBOL FILE IS TO BE GENERATED IF(LMAP .EQ. 0) GO TO 200  IF(NENT .EQ. 0) GO TO 200 C WRITE HEADING TO LISTING WRITE(IPRT,1000) IFORM,LTITL,IPAGE WRITE(IPRT,1020) 1020 FORMAT(32X,15HENTRY POINT MAP) IDIV = 256**(ICCNT-1)  LINE = 4C SET UP MAP ARRAY STARTING ADDRESS AND LENGTH LODLC = -2 LC = MAPAD REAL1 = NENT LCMAX = LC+REAL1 C SET UP PARAMETERS TO PRODUCE MAP FILE  IEND = 0 LEN = 1  ISAV = IPCH IPCH = KPCH KSAV = KWORD KWORD = MWORD  IOREC = 1 C INITIALIZE OBJECT WORD TO DONT CARES DO 160 I=1,KWORD IOBIN(I) = ICHRX 160 CONTINUEC FIND ENTRY POINT SYMBOLS AND OUTPUT TO MAP FILE  NN = 0 DO 195 JJ=1,NENT 165 NN = NN+1  IF(ITABS(NN) .LT. 0) GO TO 165 II = ITABS(NN)-(ITABS(NN)/8)*8 IF(II .EQ. 2) GO TO 170  GO TO 165 #C FOUND NEXT ENTRY POINT SYMBOL, PLACE VALUE IN OBJECT CODE BUFFER# 170 IVAL = ITABV(NN) C CONVERT ENTRY POINT VALUE TO DISPLAYABLE BINARY  CALL AHEX(IVAL,0) C MOVE BITS TO OBJECT CODE BUFFER  I = 1  J = KWORD-35  K = 36 IF(J .GT. 0) GO TO 172 I = 37-KWORD  J = 1  K = KWORD  172 DO 175 L=1,K IOBIN(J) = IBIN(I)  I = I+1  J = J+1 175 CONTINUEC OUTPUT CURRENT ENTRY POINT SYMBOL  CALL OUTC DECODE SYMBOL VALUE INTO DISPLAYABLE CHARACTERS  ICNT = 0 DO 190 K=1,IWORD  ID = IDIV  II = ITAB(K,NN) DO 190 I=1,ICCNT ICNT = ICNT+1 ICHAR = II@@/ID  IF(ICHAR .NE. 0) GO TO 183C PAD OUT SYMBOL WITH BLANKS LLAB(ICNT) = IBLNK  GO TO 185  183 II = II-ICHAR*ID  LLAB(ICNT) = IALPH(ICHAR) 185 IF(ICNT .GE. MLAB) GO TO 192 ID = ID/256 190 CONTINUE C DECODE SYMBOL VALUE 192 CALL AHEX(IVAL,2) C DECODE ENTRY POINT MAP ADDRESS CALL AHEX(LC,1)  IF(LINE .LT. IOLIN) GO TO 193  IPAGE = IPAGE+1  WRITE(IPRT,1000) IFORM,LTITL,IPAGE LINE = 3C DISPLAY CURRENT ENTRY POINT SYMBOL ON LISTING 193 WRITE(IPRT,1030) (IADDR(1,K),K=6,12),(LLAB(K),K=1,ICNT), 1 (IADDR(2,K),K=6,12) 1030 FORMAT(1X,7A1,2X,8A1,2X,7A1) LINE = LINE+1  LC = LC+1.195 CONTINUE IEND = 1 CALL OUT IPCH = ISAV KWORD = KSAV #C CHECK TO SEE IF SYMBOL OR CROSS REFERENCE TABLE IS TO BE CREATED#200 IF((LSYM+LREF) .EQ. 0) GO TO 400 WRITE(IPRT,1000) IFORM,LTITL,IPAGE1000 FORMAT(A1,14X,50A1,2X,5HPAGE ,I4,/,/)  IF(LREF .GT. 0) GO TO 250  WRITE(IPRT,1010) 1010 FORMAT(32X,12HSYMBOL TABLE,/)  LINE = 5 GO TO 300  250 WRITE(IPRT,1011) 1011 FORMAT(24X,21HCROSS REFERENCE TABLE,//,  1 6H LABEL,4X,4HTYPE,3X,5HVALUE,10X,10HREFERENCES) LINE = 6300 CALL SYMTAC CHECK FOR OBJECT CODE BLOCK FORMAT400 IF(LOBJ2 .EQ. 0) GO TO 900 WRITE (IPRT,1002) IFORM 1002 FORMAT(A1,15X,13HOBJECT MODULE,/)  IF(IOFLG .EQ. 0) GO TO 900 IOREC = 1  REWIND IPCH C SKIP FIRST RECORD  I = IOREC  CALL INOUT(8) IOREC = IOREC+1 505 I = IOREC  CALL INOUT(8) IOREC = I+1 C CHECK FOR END OF OBJECT MODULE IF(IOB1 .EQ. IDOLR) GO TO 900 C CHECK FOR NEW ORIGIN ADDRESS IF(IOB1 .EQ. ICHRA) GO TO 520  C INCREMENT ADDRESS IVAL = IVAL+1.  GO TO 525 C READ OBJECT MODULE ADDRESS ON 'A' RECORD520 ICOL = 3 NFLAG = 1  DO 522 I=1,10 IN(I) = IOBIN(I) 522 CONTINUE CALL NUMB(0) IVAL = CVAL-1.  GO TO 505 C CONVERT ADDRESS TO BINARY HOLLERITH  525 CALL AHEX(IVAL,1)  K = 65 IF(KWORD .GT. 64) GO TO 540  K = 1  GO TO 550 540 WRITE(IPRT,2000) (IADDR(1,I),I=6,12),(IOBIN(I),I=1,64)2000 FORMAT(1X,7A1,2X,4(16A1,1X)) 550 WRITE(IPRT,2000) (IADDR(1,I),I=6,12),(IOBIN(I),I=K,KWORD)  GO TO 505 C EJECT PAGE900 WRITE(IPRT,1001) IFORM1001 FORMAT(A1)9990 STOP END  SUBROUTINE INIT C C C THIS SUBROUTINE INITIALIZES VARIOUS C VARIABLES USED BY THE ASSEMBLER C C  DIMENSION IFLNM(10),IFLN2(10),IFBUF(256) DIMENSION NALPH(37),NTITL(31),KATT(10) INTEGER FTYPE,FLEN,ECOL  REAL ITABV(600),LC,LODLC,LCMAX,MAPAD COMMON ICRD,IPRT,IPCH,MCFLE,IMFLE,IDFLE,MCREC,IMREC,IDREC ! COMMON IOREC,MLAB,MOPC,IBIT,ICCNT,IWORD,IEND,LEND,KTERM,KPCH!" COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LOBJ,LOBJ1,LOBJ2,LINV,LERR" COMMON LMAC,LADR,LLOC,LMAC1,LMAP,LEVEL,IND(80),JMAC  COMMON ILEN,KLEN,LLEN,FLEN,KWORD,IFLD(1024),IYFLD,IZFLD  COMMON IDUP,NDUP,NFLAG,IOFLG,LWORD,LINEL,KFILE,IFORM,NERR  COMMON IFBIT,ZVAL,CVAL,JREAD,LINE,IPAGE,MERR! COMMON IERRI,IERRL,ECOL,MAC,LISN,NARG,INDET,IFCTL,NOPRO,LEN ! COMMON LTBLK,IN(80),IMBU1(11),INB(80),IALPH(37),LTIME(15) COMMON IAST,IDOLR,ISHRP,IAMP,ICOLN,IGRAT,ILESS,IUNDR,IQUOT  COMMON IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV COMMON IRPAR,ILPAR,IATT(10),JATT(6),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) " COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,IOVER " COMMON IPASS,LC,IOBIN(128),IPDEF,LODLC,LCMAX,LCMIN,NBASE,JBASE"! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,ISYM,LTAB !" COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128),MSIZE" COMMON MCNT,MXMAC,NEST,MSREC,IFLEV COMMON MCSPT,MCEPT,ICHK,LABCT,ICHAR,IFSET,MAPAD,NENT,MWORD  EQUIVALENCE (NALPH(2),NALP2)C  C SOME COMPUTERS DO NOT ACCEPT THE FULL ASCII CHARACTER SET. "C THEREFORE SOME OF THE CHARACTERS DEFINED BELOW MAY BE ILLEGAL ""C ON YOUR MACHINE. IF THIS IS THE CASE, THE ILLEGAL CHARACTERS "C SHOULD BE REPLACED BY UNIQUE VALID CHARACTERS. THE NEW$C CHARACTERS CAN THEN BE USED IN PLACE OF THE OLD ILLEGAL CHARACTERS$C " DATA NALPH( 1),NALPH( 2),NALPH( 3),NALPH( 4) /1H0,1H1,1H2,1H3/"" DATA NALPH( 5),NALPH( 6),NALPH( 7),NALPH( 8) /1H4,1H5,1H6,1H7/"" DATA NALPH( 9),NALPH(10),NALPH(11),NALPH(12) /1H8,1H9,1HA,1HB/"" DATA NALPH(13),NALPH(14),NALPH(15),NALPH(16) /1HC,1HD,1HE,1HF/"" DATA NALPH(17),NALPH(18),NALPH(19),NALPH(20) /1HG,1HH,1HI,1HJ/"" DATA NALPH(21),NALPH(22),NALPH(23),NALPH(24) /1HK,1HL,1HM,1HN/"" DATA NALPH(25),NALPH(26),NALPH(27),NALPH(28) /1HO,1HP,1HQ,1HR/"" DATA NALPH(29),NALPH(30),NALPH(31),NALPH(32) /1HS,1HT,1HU,1HV/"" DATA NALPH(33),NALPH(34),NALPH(35),NALPH(36) /1HW,1HX,1HY,1HZ/" DATA NALPH(37) /1H./ DATA NBLNK,NPLUS,NMIN,NUNDR,NQUOT /1H ,1H+,1H-,1H_,1H'/  DATA NDOLR,NCOMM,NAST,NSEMI,NCOLN /1H$,1H,,1H*,1H;,1H:/  DATA NSHRP,NAMP,NCTAB,NGRAT,NLESS /1H#,1H&,1H ,1H>,1HNUDEX<**`]` NDI`RECTXSC6RATCH m{lW@* dINIT c@INIT <<`i0 1 2 3 4 5 6 7 8 9 A B C D E F A B C D F E O N R X , * $ Z= - t t dtt<<<`])dtdtdtdtdtPttt*dt+dt,:l+,t-Pt2t3<;;`a/Ft.`/J:4dtydtRt~Zt1t8dtUt?t6dtd;;;`Ygtdtdtdtdtdtdtdtdtdtdtdtdt;;;`]dtdtdtdtt dD dtD,tdD Pdt;''`SD,tdDlLZdtDP, '`RHmh{  INOUT%c@,INOUT4.EIO..IIO..IAY..BIO..DTA..ENTR.GOTO.EXIT `FOBFLE IMFLE `S$$O$ dl. `Eё#dD$t' `B!t`I,(dtD!@,#d`C(80A1)`KM1tgd6,Mdl  J `E>dD$tB `B<t`JCdtD!,>d `E, (1X,80A1) ((`TtMd"td,d D.,[t,qdln( `EcdD$tg `Bat`O0hdtDJ,cddl `E=ydD$t} `Bwdt 44`[ ~dtD.,ydZ,dtd D.,t,dl$4 `EҁdD$t `Bt`O0dtDJ,ddl `EҭdD$t `B$dt ;;`c7dtD.,ddttgl@؉dl$ @d;11`]ٴl@6dl&0 @dڬdtdl1 `E:dD#t `BVt11`YdtD<P,dPdtЬd"tdZ,qdt,1`Jc 01!6A >SCAN c@SCAN .FAD .FSB .FMP IFIX FLOAT<<`aH ttfLdt|dt dgD l ,"dgtgdRDg,<<<`^!,dgtdgPtgdRDg,DdgDtTdDT,DdDT,DdDT,D<<<`_d?dDT,$Dgtd,K,dDlZ ,[dtDtdt<;;`bɰ^tdDlL  ,iP,qdtD,_,0DPpLPLd;**`Yct@@D,]L,tfLP,rLt|*`Ns@ @"@ Pu0h {MAP c@wMAP .FAD .EIO..IIO..DTA..EXITAHEX <<`]Qttdt dDH,"tdHt dtdDldD P,Gdt<<<`^2d t dD l LdD ,jdtdDl,jl Ztd td<;;`^4DPZDtdtdtdDlLdtdDlLZdtd; `PnPDld t DI,$d l `E0d Dt `B~t `K}d t DP,d `JjN(//,8X,4HPC ,80A1) <<`]dHt dIt t dt dD ,d t Zd Dt dt ,l "t d <;;`bYUDt d L t`"Dt d Dt d @FD4Ld l  ;`A  `EҶd Dt `B"t `Fעd t D, `E߶d Dt `B/t `Fd t D,`B<  `BCd t `KLd t D P,d `K (1X,3A1,3X,4A1,20(I4))!!`Od D2t d D2Pt d t D3,!`Jx  h WORD Kc@ WORD s.FAD .FMP .FDV ..FCMIFIX FLOAT<<`dtDD0h2t>dCLd>@DJLEtBDBtZNd>@DJt)<::``wq$qNL2Ѐ)tEdEbVtED> Z2DDtDZdDDItFdDDHDFDGtG: `FE6@{`  OUT c@vOUT !! .FAD .FMP .FDV ..FCMIFIX FLOATPOUT LOUT INOUTWORD !;;`att8Xtht7" DFhЁytdbyDFt:d ZyDGt;d:D;;;;`[!tdtAd D,),9dtAZd D,0,9dtAd DZ,7,9tAdBt;;;`c<$Z>tdtdEDtdDLdL,R L"Dytt;;;`cs_dtPD,[Ztdtd8DtL2dD0NpN;<<`bWaLLdPtDyZ,jdtdtd;D,dVD,Ed.<::`^"DGtd,,tdtdDl1dtDP,D=, d?:<<`_@bZ,, 4Zd8,dhthd>DPDh,t8,dEDVtEDEDVDU<11`X2,,>tEdBtBd@DB,,9d PtdUtEPt,1`Og@@  POUT xc@POUT  T.INOUTTAPEC ;;`a.@ZN P tXD7,F& hdDt_dstet`l_Ёetddd"eD_t_ler;<<``u!Zteddtdd`DtldLud`t`Dj,dot<60n9hd\,=,@@4fdp<<<`] XAt7tSt@D`ƀ4PLGtOdOD\lOL_dOtODX,Idh<<<`_KWL[d[tWtOdWtWdWD\lOL_dOtODX,_d:D;tTd:tP<;;`^vZtOdWtWdPZD^tUdWD\lUL]dPtPdOtODT,wtOdWtW;;;``jdWD\ldOtODW,PdYDT,3DTh[tSd;lSP @tPtO;;;`]5gt|tRtQd:DP,´ZdPD^tQd|D|DQt|dPZtPdRtRDX,d|;<<`^;ѴZt|dWtWdWD\l|L]dOtODSZ,tOdWtWdWD\lZdOtODW<<<`a)>P,DThZtSd;tMdZ"SDMtPtOt|tRtQd:DP,dP<<<`]tD^tQd|D|DQt|dPtPdRtRDWZ,d|t|dWtWdWD\l|PL]dO<`L6M-PtODS,dlV$NH `E,;dOD\t? `B9tO`K@dOtODWP,;dN`L (1X,4A1,2X,4A1,3X,80A1) `B&K`KIV  Yh` EQUATc@.EQUATD.ITOI.EIO..IIO..IAY..DTA.ERR0 .IOOP.EXIT<<`a8tdgtڅ,D0td-,D+td,D+tttftt<;;`]1PtdRDZ,8,<Dtڶ,JdDtTdDT,JdDT,OPdtTD;::`^"NtD,\ZttdTP,\tZtdtdPDlTdTPtTdT,p:<<``lZtdTtTlTڂtTdZD,~dTDtTp,DTZtdtdt<<<`_C?ZD-,2d,,0tݢd,,dDtdDldtޠD<((`XX,0t,$ Pd,dt,(`PJ"OPEN ERROR:",I5," ON FILE:",4A2%%`Uöd l0bdtfdtg%&&`W"NU`SEUN EX ma& TAPECTc@'TAPEC ;A.ENTRINOUT ;;`aPH$ A 0 0 0 0 , 4ZdDtLdDtKdDtIP,,,@tJdJDS;;;`]!lLdJtJDN,dQt<,DdKttJdJDSlJLRdJtJDM,0dP;`K,">t<,DdItt<GO `G M,  AHEX ]c@AHEX =.FAD .FSB .FMP .FDV ..FCMIFIX FLOAT<<`htXPdL,@LV,@LRtNR2PtOdO 8PP2PR<;;``( RPTPdOtOdND[lOL\ZdNtNDZP,tNdND[ldN;`FNHPtNDZ,B`I(T@ @"@h MESS Oc@AMESS }P.EIO..DTA..GOTO.EXIT,,`]ytd}$$)4?d lNM”@dM,`T{(34H SYNTAX ERROR OR ILLEGAL CHARACTER) `K|JŶ,Id lN&PMdM`PC(27H INVALID OBJECT FILE HEADER)`K|pж,Id lN$&PMdM`I\$(12H VALUE ERROR) `K|۶,Id lN-&PMdM`NA-(22H TOO MANY PROM COLUMNS) `K|,Id lN;&PMdM`Na;(22H MICROWORD WIDTH ERROR) `K|,Id lNI&PMdM`LNI(19H TOO MANY PROM ROWS)`K|,Id lNU&PMdM`I_U(12H DEPTH ERROR) `K},Id lN^&PMdM`M^(21H INVALID OBJECT INPUT)`K};,Id lNk&PMdM`Jxk(15H INVALID OPTION)`K}[,Id lNu&PM%dM`Ku(16H INVALID ADDRESS) `K}|(,Id lN&PM0dM`QF(29H MAP VALUE TOO LARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FOUND)`K}>,Id lN&PMFdM`MVu(20H BIT MAPPING OVERLAP)  `D IPt~ `AaN ARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FOTITLE LIGHTNING DECODE PROM DEF FILE ; ; &LDDEF 12101-18001 REV 2210 820524; ; GENERAL PURPOSE DEFINITION FILE ; WORD 12END  DEF292c@'DEF29@Jj.NFOP.NFCL.NFIN.NFCN@jB.DNOP.DNCL.DNIN.DNCN@~B.DSOP.DSCL.DSIN.DSCN66ܽ.EIO. .IIO. .IAY. .DTA. .FSTP.IOOP.EXIT.FFRW.FIOISYMTAINOUT PASS FTIMEINIT RHPARABREGLGBUF6;;``.Ldtdtd(td'td&tt$ !t d DJl LK;;;`ekϢd t D,$,2/)d,$ !&  d ,d%t ;<<`[!Fdt d DKl$Zd t D,d T ,,dD#t dt d DKl LJ<::`cQZd t D, $d,2/)Xd,$," !d T ,0,Bd:;;`b2Dt dt d DKl LJd t D,6P$ ,2/)d,;<<`jT-a,$D?) Pd,r,D?$)d,wz|d<))`YAU~, dD,dl   q 02 r d )`P(A1,12X,50A1,7X,5HPAGE ,I4,/,/) `M\+d,dl $  d `L$(32X,12HSYMBOL TABLE,//)`M'dt,dl 0  d 66`i0(24X,21HCROSS REFERENCE TABLE,//,6H LABEL,4X,4HTYPE,3X,5HVALUE,10X,10HREFERENCES) 6`P&dtdl Y P  d `BY(A1)`B`Q}[("OPEN ERROR ON SOURCE FILE:",I5) `Nl = 1  d d`P1l("OPEN ERROR ON LIST FILE:",I5) `Nl ; 1  d d`S|("OPEN ERROR ON DEFINITION FILE:",I5) `Nl 9 1  d d`P\("OPEN ERROR ON MACRO FILE:",I5)`Nl 7 1  d d`P/("OPEN ERROR ON XREF FILE:",I5) `N6l 5 1  d d;;`h! `" -%- ' 0  VNU\EX`bSEhUN;..`]U5`> % !DIRECTSCRATCH @. =INIT c@INIT a .FAD .FSB LABEL `E %N A R G 11`e0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . 1`QbP + - $ , * ; : # _ ' & * / ) ( &&`\C4A S S E M B L E R D E F I N I T I O N P R O G R A M &`J** - % : $ @ B Q H D ;;`^'aatadt dt l 4Pt D h t dtdt#d~td}tt ;;;`_z_Pt!t"ttd|t t+d{t,d{t-dzt dyt!tnb"tj";<<`bSa""djtjD!,"nb"tdxt.td.ttt Dt t <::`^ttdtPtttttPtttdvtdrtPtt&:;;`^1޶tjdjDljLdjtjDu,t ZttkdkDlkLdktkDt;;;`Yj,dPtdQtdRtdStdTtdUtdVtdWtd]td^td_td`t;<<`^dXtdYtdZtd[td\ttjdjDljPLdjPtjDs,!t*2l<<<`_V3tjdjDljLdjtjZD ,4dwtlTZt thdhPDldhth<..`VRDq,KthdvDhtidiD lhLdhthDp,Wa.,,`al@ 8PX3/l$&e),aa '[INOUTc@,INOUT h.EIO..IIO..IAY..BIO..DTA..ENTR.GOTO.IOCN .EXIT`C9MCFLE `C5 IDFLE `C5 IXFLE ((`Z$""GY&vzdl$+wPPd,4(`C(80A1);;`]0dt,tdDldtD,6dt}dt~dt,lЂ@d;&&`WpMlUP$d,l@؉dl$r& `EfdDtj `B>dt;;`\G&kdtD,fdZ,dD tdtdtdtd tD t d t;`Iidtdtdl `EidDt `Bht;;`_dtD,ddtd Z,,td@D6dDtd;<<`_}ttdDl LLZdtdPtD ,dtdDAD<`FTն,dl  `EݶdDt `Bt<<`_`dtD,ddtdtD ,d,BtPdtAdD<::`^Z, dPtdD,BtdtdDlLZdtdPtD:`H,dtdl5 `Eԗ)dDt- `B't<<``.dtD,)ddtdDtdDt,d , ,J@@d<<<`bNttdtdl[PwPdZdtdtdl1lwPPdd<33`^,ptdtZD ,Q,l@dl1'P d3`SP0 !?1 mRv PASS cc@PASS <<.FAD .FSB .FMP .FDV ..FCM .EIO..IIO..DTA..GOTOIFIX FLOAT .EXITLOUT MCDEFESCANSCAN XREFTLABELOPCOD<lINOUT `G'S I T X D Q E ;;`^.tttd/td+t*d+tt Pttttt td&,<;<<`_ -9<.tdDUlLbZdtD=X,>t&&O%d/T,Zd/T,V,d<<<`aXt*,Lc$gc4Zd ,,֢d ,m"&t d*DUT,u,d*t*d*<<<`\yDUT,~,d*t*dtd/t d*DUT,d*DUT,,d*t*d,<<<`aWZD*,,d/T,,L,"ІAd DZ,d t d ttd<<<``j{DDalL`PdtD ,dDWPlDL d@DVtψ&0&&dt <<<`\ֶ,Ld;D,,dTT%,dST%,edRT%,Zd:D%,,Ad4D,d<;;`d_tdD[ , $ ?$8@e$06S"t$dQD*t#d*tAd,;<<`_ D,+d$D_lLUZd$t$dPtD#,Ad9D$,d$td<;;`^5PD_ldZtD9,4,t"d,D*Z,}td*DUlL^ ,R,Yd;;;`^JStD8,H,dD]l"d*t#d#t*td#DUlLY ,o,d;<<`^w`qZtD2,ed#DUl ,,Ad"t,t",Atd*DUlL\Z ,,<<<`^dtD7Z,,td*t!td*DUlL\ ,,dZtD7,d*<<<`_}DUl ,d!t*t:,dCDD0td*t*,D,d ,<<<`cQ]̴Zd6D,d @DVt׈&ډd DWlDL $$d ,d6D<;;`^Z,d @DVtd DWtd$D DD,d6D,d DWtlD;<<`d6 ڀ#Dtd5D,tdIt ,0))$$وt/d.D/<;;``W1,3,5d.t/d/t ,dIt d,d.t,COdO$ٴd/t;<<`^;Qd,Vtdtd4DZ,dtdD[lL,d,i,dD[@<;;`]1otdD[lL|d,{,d,֢dDItdD[lL ,D;::`^T,,d/tt,DtdD[@tD,d,$t,t:::`^e/,tdtZttd ,dMt,Ģd,d DWtd.:<<`byȢD,dt$$d2D,,dDtdtd1D<<<`_P,dtAd DZ,tdEttdDZ, dZtdtD3<<<`] Z,,Dtd'td&Dtd%DZtd$DDPtd#l @Dtd<<<`^=$&DXtd'ZL @DT,7dIT,7,jd/DZD ,d,Idt<<<`cD dDX,j ,td  ,   Z tdtdDXlZdtd<<<`^B>g DXltd*DUlLYZ ,v,dtD2,ld*DUT,,d*t*<<<`]P,dD,,d,dt,d ,d DWtd.td(PDD<<<`a d @DVl t` ,dt,dDWOtl ZP&Dtd@DV<<<`^]*ZtdZDWtdڀ(DtdDtdDtPd1D,tdDXt<<<`bdtdPtd D,dDXll<XDt,( ("td<;;`]?tdDX, d/tdDPtd D,tdtdDXlLXd;;;`` PtdtD,dtD,ݢ,jtdt,d,ք<HdH;<<`d@$$وP*,2t,d ,d,jd DWl LWtqD#<<<`_dqtdGT,jZ,d @DVtq&qd DWlGtPAd D ,d t <<<`c9d   d   d @DVt( 0   d,$d/td,d*DUl<""`TͿ , d,$dl-rd"`T(/,/,28H TOTAL DEFINITION ERRORS =,I5)<<`^3dl-1d,dNt,dMt,dLt,dKt,dJt,t<;;`Yض,d/t,dIt,dt,/<<`n+&@@@    76543@1<`OpT &Rm-/v 5OPCODc@OPCODdN.ENTR<<`nL1L I S T E Q U S E T I F E L S E E N D D E F S U B W O R D E < `DC_N D M  <<`nFN O L I S T E N D I F S P A C E E J E C T T I T L E M A C R O L O C A <`CЪ.L ::`^ccdtuctPtt/ttod~trZd*DT,Zd*DT,:;;`^sd*Dl ,Yd*DlZ ,,hd*t*d,D*,^,wd*tmtqtv;<<`^Ad*DlvLZ ,,dvtvD{,d*DTZ,adqtqd*t*d,D*<<<`],V,d Dq,VdzDq,,d|trtodwtutntsdmDsDyttdo<<<`^Rڶ,dtDtldxЀnDsDZl,,dtDtldw6nDsDl,,ds<;;`_8PtsDqP,drDqZ,'dqtpdo,dxnDpDl ,,'dw n;<<`_DpDl ,,'dntnDu,Ҵ,VdxnDcdo,1,7dwnD<;;`^-%6cc0tdctd*DT,Md*DT,M,jd*Pt*d,D*;77`XMT,j,Bdt,jZd~tt,jdxt,jd}td*tdmt*,jPd|td7`Qw &0,+dd LABELc@LABEL.ITOI.ENTRERR0 XREFTSYMBL<<`ctts$dwD,ld ,itqtrdqDrDlrL~ <::`^,x#,-,%drtrZD ,,5dqtqD ,,idqtd@D}Љ$dD|:<<`bAXtd,R&Zu{ltppDvt,_l6ztl Zy#Dttd<`Mc,nhs,ndut,ndxt`M YsmR &HSYMBLc@,SYMBL<<``tttdD PdtD ,tZttd*DlL <<<`]9 ,",TdtD,dP,d D,AdtdDlLt(Pdt<::`^=PD ,2td*DlL  ,MZ,dtD,C,d D,{d:<<`][,adD,aZ,dtd ZD,j,odttdtdDlLt<11`X,d*DKlZ ,kdHtt0d*DKl0LO ,,d0;;;`]Zt0D=, dDt0d*DKl0LO  ,%Z,,d0t0D<,,ud*t*d*DK;<<`]2ZT,8D*t*Z,kd*t*d0ZDL d;D0t0d0DNt2T0,Ktt0d*DK<;;`]WOl0LM ,W,hd0t0D2,MZd*DKT,dZ,d*t*,d9D*t*dI;::`^HltpD,,d*DKT,{,d*t*t0d*DKl0LJZ ,,:<<`_d0t0D7,D*t*,k3dIZt,t0d*DKl0LJ ,,d0<<<`_MZt0D7,,k d0DL,# d0DL dDAD9,#d,Zttd*<;;`bȶt*,d*DKlZ ,d1t*ր,&$) ,#6dGt,Ptd,;::`^1궊dtdD,d!D,dD,d,t0d*DKl0LJ :;;`Z(, ,d0t0D7,,&t,.dHt,.dGt,.dFt,.dEt,.dDt;""`Nm",.dCt,.dBt,.dAt,.Pd@t"((`^k3 6&lv( ANUMB c@NUMB J+.FAD .FSB .FMP .FDV .ENTRIFIX FLOAT `D`l `D`L <<`a)!$ttdDtdDtPttttzd*DlzL<<<`^f)Z ,.,?dztzDZ,$d*tdDl ,i,d*ttzd*DlzL<::`^G  ,MZ,TdztzD,C,cd6DzDtd*t*d,D*,i,Atz:;;`^8ed*DlzLZ ,o,vdztzD,e,d*tdDl ,dt;<<`^{td*Dtdt*d*D l ,d*t*d,D*,l,d*Ptd,D*<<<`^>r,ltzdzDl*L ,,dzZtzD,d*DT,d*t*,D*<<<`\YZtd,d,dt{dt|,dDtDt,tzdzDt{dzD<<<`^kt|dzDlZ ,,dztzDP,dD,ldttzdDlzL<<<`diZ ,,dztzD{,,ld{XDz8}$0}$dD|t$<<<`ab",o,!dPtD,dD{,^tzdzD!tvxdv,Htwx<<<`a> xxdwtwDv,;$xZtwdw,[,RdztzD!Z,.tvdvtd<22`W_,fdDZ,rt,tdt,tdt,tdt,tdt 2`S@6 &d  jESCANc@ESCAN---c.FAD .FSB .FMP .FDV ..FCM.ITOI .RTOI .ENTR.GOTOERR0 IFIX FLOATLABELNUMB -<<`nE Q _ N E _ G T _ L T _ L E _ G E _ A N D _ O R _ X O R _ S H L _ S H R _ <::`c.P,tt, dtZttd*Dl ,Rtd*:;;`]x=Qt*d*DtZttdPDD,b,dtD,Zd,ndT,;<<`andD,vt,}dD,tZdD,vdtt,6,d<::`^Pt ,gdPD,t,dT,,dtdD,vdt:<<`]Lt,gdT,,d*ttd*t*d*DT,dtAdD,p,<<<`^]PtDttdDZtdtdDlL,,dtZD,d<;;`ciDt,dPtD,D,vtdXD,& $) py);<<`au@ dspdT,pdD,),pdD,%dDZ,pd,v, $<<<`_!,"tdD dtD,/td*DlLZ ,E,LdtD,;<;;`^ K,sdD,sdD,kd*ttdDlLZ ,d,kdtD;<<`]i,Z,sdD Zd*t*,9d D D,d,t tdtd,dt<<<`ed,dttdD,$p",",d<<<`a zD,dtP,dD,,dt t4PdtD,<<<`f  td dtD,dD,4,,c<;;`gRD,dD,|dt$-4;$BIPW\$af,j;<<`e\P,jd,(0  td,j,j,,",,0<;;`a">",,0,,,,Z,,dtdt,td;<<`f_Pt,tt,d! , t  ,jd!<<<`i , t   ,j Pt0  td<<<`h*B 2 td26dDtdPD,<;;`eִP,dD,∀ dPtD, ,j ,, ;;;`cl"ڀ,t,dD,v,p ,,,Z",ydZ,HtdD!t;<<`cd,2t dtD,%,  Ztd,E,2$2/d/DO l1LQd, d>D/Z,dtd.ZD,,dl<<`JD)ل!rd!`BK(A1)`HdDtdl<$!`Gd$D0DPt`BWt$`Lͫd$t$D/,d0DOt`Gd,D0DNt  `BdCt, `F  d,t,D8,`Bat0`Kd0t0D/P,d!`N[(1X,4(8A1,1X,A1,1X,7A1,2X)) <<`_qd.,,d-,/d!,'Z,/d",+,//99t-t%td"D!t(d<<<`_;ZD(,@,ot ltPt,t)t#d t P4P?d t t&d&D)t'd'DL<<<`^Z l&LMd&Pt&D,Ud)Dt)d#Pt#D,,Kdt+dD(,xd(t+<;;`^ ?xt#d#DLl*Z ,d%t%d#t)d%DKl)LLd?D#t#D+,zd;<<`\DD(t(d(,Bt&dED&t'Zd;D%,d&D%D=t'dPtd.D,dl<<`RL!rd!dDtdl<$!`F3Ƣd$DJt`B.t$`I̢d$t$D/,`FTעd$DIt `B~մdCt$ `F ^ݢd$t$D8, `EFd$DKt `Bod&t$ `Kꢊd$t$D'P,d!`Np (1X,8A1,2X,A1,3X,7A1,6X,8I6);;`]HdBD&t&d;D%Zt%d%,,t$d$DJld$t$PD/,Pt#d#DI;`M޶ld#t#D8,dt,++``88 @&^Tm#]S-Rl+ +XREFTsc@1XREFT ;A.ENTRINOUT ;;``(Bd ,hd#D",P,dD!,T,dt ,hltn;<<`^38 tktotmdkDmtldmDr llLrdmPtmD,%d t:6qdkDtkd <;;`^>t dotoZDn,#,hd"t"t!d#D",d!t!d!Drld!;`N\t!d!DrLptj`tPj`CxSp AHEX c@AHEX  .FAD .FSB .FMP .FDV ..FCM.ENTRIFIX FLOAT::`^R&B,Z",d϶tdtdtdtd,$dtdtd:<<`i!ttʼnÈ0tdÈ0Őtd<;;``\cJ02ttZdttdDtdDlLҶtd|;::`^pjlZtdtdDlLdtdtD,Xdt:<<``bD,Td,D!hZDttdPDldtD,,< `OZtdDТldtD, `N@  ] MCDEFc@MCDEF(LOUT INOUTOPCODMSCANSYMBL;;`attPtttttPAd,D*,KAdD,Id;;;`^3!DD,FdttݢdtdD lLdPtD ,+d*td*;<<`^*|?t*dDT,,Kdt,Kdtd,dt,$PUtttt<::`^qz]dDlLZdtD,]d+t*d*DT,d,yw6d+t*|:<<`^{6dT,,d*t*6dT,,d,tݶdDlLZdtD<<<``%,,d td t t܄t۶dDlLZdtD,t<<<`]%dT,dTڴP,,RtDtdDٶtd DtdD؀$D䢀t <`A֠`Q(7v&l MSCANc@MSCAN ;9.ENTRSYMBL ;;``Btd*DttdD,$dD,$dD,dD;<<`^( Z,-dtd*t*d,D*,,t dDD,7,$dZtD,/d<;;`]7>ZT,$td*DlL ,L,ndtD,Bdtd*DlPL,b;<<`]m[dtD,T,d*tZdDT,kZ,d*t*d*Zt*tdDl*L<<<`]`x,dtD,sd*DT,d*DT,d*DT,d,D*,n,<<<`_d*tdPT,$tD tZtdtdDlL ,,d<;;`^StD ,P,dt,,'D,,DtdDlZ ,d;;;`]]Ҷtd*Dl ,d*t*D*tdtdtdDldtPD,; `C,' `Lm&l MESS c@EMESS .EIO..IIO..DTA..ENTR.GOTO.EXIT::`h*Ad,ˁ$ $$1>KX$er}&dt:`O>$dlr*d`TC(8X,21H***ILLEGAL DIRECTIVE ,1H(,I2,1H))`MB,dl&8*d`S(8X,18H***ARGUMENT ERROR ,1H(,I2,1H)) `Mo,dl'&8*d`R'(8X,16H***SYNTAX ERROR ,1H(,I2,1H)) `Mț,dl9&8*d`R9(8X,16H***FORMAT ERROR ,1H(,I2,1H)) `M ,dlK&8*d`TGK(8X,20H***UNDEFINED SYMBOL ,1H(,I2,1H)) `M,dl_&8 *d!!`Xq_(8X,28H***ILLEGAL MICROWORD LENGTH ,1H(,I2,1H)) !`M'#,dlw&8-*d`V̀w(8X,24H***ILLEGAL FIELD LENGTH ,1H(,I2,1H)) `MW0,dl&8:*d`S-(8X,19H***ATTRIBUTE ERROR ,1H(,I2,1H))`MɄ=,dl&8G*d`V(8X,25H***FIELD LENGTH CONFLICT ,1H(,I2,1H))`MɴJ,dl&8T*d`S!(8X,19H***VALUE TOO LARGE ,1H(,I2,1H))`MW,dl&8a*d`R(8X,17H***ILLEGAL VALUE ,1H(,I2,1H))`M d,dl&8n*d`TH(8X,21H***ILLEGAL CHARACTER ,1H(,I2,1H))`K!q,dl&Pyd`MC(8X,17H***TABLE OVERFLOW) `KD|,dl&Pd`Q(28H***ILLEGAL CONTINUATION LINE) `Mʅ,dl &8*d`U (8X,22H***ILLEGAL FIELD TYPE ,1H(,I2,1H)) `Mʴ,dl"&8*d""`YN"(8X,31H***ADDRESS NOT ON CURRENT PAGE ,1H(,I2,1H))"`M,dl;&8*d`Rօ;(8X,17H***OVERLAY ERROR ,1H(,I2,1H))`M,dlM&8*d`T>M(8X,20H***NO DEFAULT VALUE ,1H(,I2,1H)) `M˯,dla&8d`QwEa(8X,15H***LABEL ERROR ,1H(,I2,1H))`KRȶ,dlr&Pd`Ler(8X,16H***MISSING LABEL)`KtӶ,dl~&Pd`M~(8X,18H***DUPLICATE LABEL)`K޶,dl&Pd`P(8X,24H***SYMBOL TABLE OVERFLOW)`K,dl&Pd`P(8X,23H***MACRO TABLE OVERFLOW) `B)`Bc( L)`K޶,dl&Pd`P(8X,24H***SYMBOL TABLE OVERFLOW)`K,dlFTN4$FILES(2,6)  PROGRAM DEF29 C C C C META ASSEMBLER DEFINITION PROGRAM VERSION 5.0C FOR AMD 2900, INTEL 3000, ETC. C COPYRIGHT 1980 C MICROTEC C P.O. BOX 60337 C SUNNYVALE, CALIFORNIA 94088C C PROGRAM UPDATED JULY 1980C C C THE VARIABLES PASSED IN COMMON ARE DEFINED BELOWC C C FTYPE = FIELD TYPE FOR DEFS AND SUBSC IADDR = ARRAY TO HOLD HOLLERITH ADDRESS VALUESC IALPH = ALPHANUMERIC CHARACTER SET"C IAMP = HOST COMPUTER REPRESENTATION OF A HOLLERITH AMPERSAND "C IAST = HOST REPRESENTATION OF AN ASTERISKC IATT = LEGAL FIELD ATTRIBUTES OR MODIFIERS C IBIT = NUMBER OF BITS PER HOST COMPUTER WORD C IBLNK = HOST REPRESENTATION OF A BLANKC IBUG = DEBUG PARAMETER C ICCNT = NUMBER OF CHARACTERS PER HOST COMPUTER WORD C ICNT = LINE COUNT FOR SPACE DIRECTIVEC ICOL = CURRENT COLUMN NUMBER FOR SCAN C ICHRE - CHARACTER E C ICOLN = HOST REPRESENTATION OF A COLONC ICOMM = HOST REPRESENTATION OF A COMMAC ICRD = LOGICAL UNIT NUMBER OF DEFINITION FILEC ICTAB = HOST REPRESENTATION OF A TABC IDFLE = LOGICAL UNIT NUMBER OF DEFINITION FILEC IDIV = HOST REPRESENTATION OF A DIVIDE SIGNC IDOLR = HOST REPRESENTATION OF DOLOR SIGN C IDREC = RECORD NUMBER FOR DIFINITION FILE C IEND = FLAG INDICATING END OF ASSEMBLY SOURCEC IERRS = TOTAL NUMBER OF ERRORSC IERRL = ERROR INDICATOR FOR LABELSC IERRI = ERROR INDICATOR FOR OPCODES AND OPERANDSC IERR = ERROR INDICATOR C IFBIT = MAXIMUM NUMBER OF BITS IN A FIELD C IFCOL = FIRST COLUMN OF SCANC IFLD = FIELD DEFINITION TABLEC IFORM = FORMS CONTROL CHARACTER $C IFPAR = ARRAY FOR CONDITIONAL ASSEMBLY INFORMATION DURING NESTING $"C ILEN = EXPLICIT FIELD FENGTH FOR EXPRESSIONS AND DON'T CARES " C ILPAR = HOST COMPUTER REPRESENTATION OF A LEFT PARENTHESIS C IMIN = HOST REPRESENTATION OF A MINUS SIGN C IMULT = HOST REPRESENTATION OF A MULTIPLY SIGNC IN = INPUT BUFFER (FOR SCAN) C INB = INPUT BUFFER (FOR CONTINUATION LINES) C INDET = INDEX OF LABEL INTO SYMBOL TABLEC INDEX = INDEX OF CURRENT SYMBOL INTO SYMBOL TABLE C IOLIN = NUMBER OF LINES PER OUTPUT PAGE  C IOPVA = OPCODE VALUE C IPAGE = CURRENT PAGE NUMBER C IPLUS = HOST REPRESENTATION OF A PLUS SIGNC IPRT = LOGICAL UNIT NUMBER OF OUTPUT LISTING DEVICE!C IRPAR = HOST COMPUTER REPRESENTATION OF A RIGHT PARENTHESIS !C ISEMI = HOST REPRESENTATION OF A SEMICOLONC ISHRP = HOST REPRESENTATION OF A SHARP SIGN C ISUB = NUMBER OF SUB DEFINITIONS C ISYM = NUMBER OF SYMBOLS IN SYMBOL TABLE  C ITAB = SYMBOL TABLE C ITABV = NUMERIC VALUE OF SYMBOL  C ITABS = SYMBOL TYPE, E.G. DEF,SUB,SET, OR ORDINARY SYMBOL C ITYPE = OPCODE TYPE C IQUOT = HOST COMPUTER REPRESENTATION OF A HOLLERITH QUOTE C IXCNT = NUMBER OF CROSS REFERENCE PAGES C IXPAG = CROSS REFERENCE TABLE PAGE NUMBER C IXPNT = POINTER INTO CROSS REFERENCE TABLEC IXTAB = CORE RESIDENT CROSS REFERENCE ARRAY C IXT = CROSS REFERENCE DISK RECORD C IYFLD = NEXT INDEX INTO FIELD TABLE C IZFLD = LENGTH OF FIELD TABLE "C IUNDR = HOST COMPUTER REPRESENTATION OF A HOLLERITH UNDER BAR "C IWORD = NUMBER OF WORDS IN HOST COMPUTER PER LABELC IXREC = RECORD NUMBER FOR CROSS REFERENCE FILEC JATT = FIELD ATTRIBUTES OR MODIFIERS PRESENT IN A FIELDC JBASE = DEFAULT BASE INDEXC JCOL = COLUMN THAT A LABEL ENDS IN $C JREAD = FLAG THAT INDICATES NEXT SOURCE LINE HAS ALREADY BEEN READ$ C JTYPE = SYMBOL TYPE C KLEN = IMPLICIT FIELD LENGTH FOR CONSTANTS C KTERM = LOGICAL UNIT NUMBER FOR ERROR LINE LISTINGC KWORD = NUMBER OF BITS IN A WORD"C LDEF = FLAG TO INDICATE THAT DEFINITION FILE WILL BE PRODUCED""C LERR = FLAG TO INDICATE THAT ERRORS SHOULD BE LISTED ON KTERM"#C LIF = FLAG TO INDICATE WHETHER IF STATEMENTS WILL BE EXPANDED #C LINE = OUTPUT PAGE LINE COUNTC LISN = LINE NUMBER PRINTED ON LISTINGC LLEN = EXPLICIT FIELD LENGTH FOR CONSTANTS C LOCT = OCTAL/HEXADECIMAL LIST FLAG #C LREF = FLAG TO INDICATE A CROSS REFERENCE TABLE WILL BE LISTED #C LSOR = FLAG TO INDICATE SOURCE WILL BE LISTED!C LSYM = FLAG TO INDICATE THAT A SYMBOL TABLE WILL BE LISTED !C LTAB = LENGTH OF SYMBOL TABLE C LTITL = TITLE ARRAY C MCFLE = LOGICAL UNIT NUMBER OF INTERMEDIATE FILEC MCNT = MACRO COUNT (TOTAL NUMBER OF MACROS)C MCOL = LAST COLUMN OF SCAN  C MCORE = BUFFER USED TO WRITE TO CROSS REFERENCE DISK FILE C MCREC = RECORD NUMBER FOR INTERMEDIATE FILE C MLAB = MAXIMUM LABEL LENGTHC MLCOL = LAST COLUMN PRINTED ON OUTPUT LISTING C MOPC = MAXIMUM OPCODE LENGTH C MSIZE = SIZE OF RECORDS WRITTEN TO INTERMEDIATE FILEC MSREC = MACRO FILE RECORD NUMBERC MXMAC = MAXIMUM NUMBER OF MACROSC MXREF = SIZE OF CORE RESIDENT CROSS REFERENCE ARRAY C NAME = BUFFER THAT HOLDS SYMBOLC NARG = NUMBER OF ARGUMENTS IN CURRENT MACRO CALL C NBASE = DEFAULT BASE FOR NUMBERSC ZVAL = MAXIMUM VALUE OF ANY NUMBER OR CONSTANT C NENT = NUMBER OF ENTRY POINT SYMBOLS C C C THE MAIN ROUTINE CALLS THE MAJOR SUBROUTINESC  INTEGER FTYPE,IFBUF(256) REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMM@@ON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128)C !C IF POSSIBLE, THE META ASSEMBLER DEFINITION FILE PRODUCED BY !C THE DEFINITION PROGRAM SHOULD BE A SEQUENTIAL FILE. C THIS WILL CONSERVE DISK STORAGE. HOWEVER, IF NECESSARY  C THE FILE CAN BE RANDOM ACCESS. THE FOLLOWING DEFINE FILE !C STATEMENT DEFINES THE META ASSEMBLER DEFINITION FILE AND IS !!C INCLUDED FOR INFORMATION PURPOSES ONLY. NOTE THE STATEMENT ! C IS A COMMENT. C THE DEFINITION FILE (SYMBOLIC FILE NUMBER 9) CONSISTS OF!C 500 128-WORD RECORDS. U INDICATES A BINARY FILE. THE NAME !C IDREC IS THE RECORD INDEX.!C VARIOUS COMPUTERS DEFINE FILES IN DIFFERENT WAYS. THIS FILE!C MIGHT HAVE TO BE DEFINED DIFFERENTLY ON YOUR COMPUTER. C THIS FILE MUST BE SAVED AS A PERMANENT FILE, SO IT CANC BE READ BY THE META ASSEMBLER ASSEMBLY PROGRAM. C C DEFINE FILE 9(500,128,U,IDREC)C "C THE FOLLOWING DEFINE FILE STATEMENT IS INCLUDED FOR REFERENCE " C ONLY. IT MAY BE USED TO DEFINE THE INTERMEDIATE FILE THAT C HOLDS MACRO DEFINITIONS. IT IS RECOMMENDED THAT THIS FILE C BE LEFT A SEQUENTIAL FILE.$C THE FILE IS TEMPORARY AND MAY BE DELETED AFTER PROGRAM EXECUTION. $C C DEFINE FILE 8(500,128,U,MCREC)C #C THE FOLLOWING DEFINE FILE STATEMENT DEFINES AN INTERMEDIATE FILE#!C USED TO ACCUMULATE REFERENCES FOR THE CROSS REFERENCE TABLE.!#C IF THE USER WISHES TO ACCUMULATE A LIMITED NUMBER OF REFERENCES #"C IN MEMORY, THIS FILE IS NOT REQUIRED. THIS FILE IS TEMPORARY "C AND CAN BE DELETED AFTER PROGRAM EXECUTION. C THE FILE CONSISTS OF 100 128 WORD RECORDS. U INDICATES C A BINARY FILE. THIS FILE MAY ALSO BE SEQUENTIAL. C C DEFINE FILE 7(500,128,U,IXREC)C  DIMENSION IFLNM(10),IFLN2(10) C C INITIALIZE PROGRAM VARIABLESC  C SET I/O ASSIGNMENTS C  ICRD = 5 IPRT = 6 IDFLE = 9  MCFLE = 8  IXFLE = 7  KTERM = 1 C C CONNECT TO FILES THRU RUN STRINGC  C PARM 1 = SOURCE C PARM 2 = LIST C PARM 3 = DEFINITION FILEC C GET LARGER FORMAT BUFFERC  CALL LGBUF(IFBUF,256) C  CALL RHPAR(1,IFLNM,20) DO 69 I=1,10 69 IFLN2(I)=IFLNM(I)  OPEN (UNIT=ICRD,FILE=IFLNM,IOSTAT=IERR,ERR=9995)C  CALL RHPAR(2,IFLNM,20) CALL ABREG(IA,IB) IF(IA.EQ.0) THEN IFLNM=30040B DO 75 I=2,10 75 IFLNM(I)=20040B  ENDIF  IF(IFLNM.NE.1H-) GOTO 71 IFLNM=IAND(IFLN2,377B)+23400B  DO 70 I=2,10 70 IFLNM(I)=IFLN2(I) C 71 OPEN (UNIT=IPRT,FILE=IFLNM,IOSTAT=IERR,ERR=9996)C  CALL RHPAR(3,IFLNM,20) IF(IFLNM.NE.1H-) GOTO 73 IFLNM=IAND(IFLN2,377B)+22400B  DO 72 I=2,10 72 IFLNM(I)=IFLN2(I) C 73 OPEN (UNIT=IDFLE,FILE=IFLNM,IOSTAT=IERR,ERR=9997) C ! OPEN (UNIT=MCFLE,STATUS='SCRATCH',ACCESS='DIRECT',RECL=256, ! 1 ERR=9998,IOSTAT=IERR) C ! OPEN (UNIT=IXFLE,STATUS='SCRATCH',ACCESS='DIRECT',RECL=256, ! 1 ERR=9999,IOSTAT=IERR) C C  CALL INIT C  C RECORD TIME OF DAY C  CALL FTIME(LTIME) C C READ LANGUAGE DEFINITION AND PRODUCE DEFINITION FILEC  CALL PASS  IF(LDEF .EQ. 0) GO TO 60C CREATE DEFINITION FILE CALL INOUT(4) #C CHECK TO SEE IF SYMBOL OR CROSS REFERENCE TABLE IS TO BE CREATED#60 IF((LSYM+LREF) .EQ. 0) GO TO 400 WRITE(IPRT,1000) IFORM,LTITL,IPAGE1000 FORMAT(A1,12X,50A1,7X,5HPAGE ,I4,/,/)  IF(LREF .NE. 0) GO TO 250  WRITE(IPRT,1010) 1010 FORMAT(32X,12HSYMBOL TABLE,//) LINE = 5 GO TO 300  250 WRITE(IPRT,1011) 1011 FORMAT(24X,21HCROSS REFERENCE TABLE,//,  1 6H LABEL,4X,4HTYPE,3X,5HVALUE,10X,10HREFERENCES) LINE = 6300 CALL SYMTAC EJECT PAGE400 WRITE(IPRT,1001) IFORM1001 FORMAT(A1) STOP9995 WRITE (1,'("OPEN ERROR ON SOURCE FILE:",I5)') IERR STOP 55 9996 WRITE (1,'("OPEN ERROR ON LIST FILE:",I5)') IERR STOP 55 9997 WRITE (1,'("OPEN ERROR ON DEFINITION FILE:",I5)') IERR STOP 55 9998 WRITE (1,'("OPEN ERROR ON MACRO FILE:",I5)') IERR  STOP 55 9999 WRITE (1,'("OPEN ERROR ON XREF FILE:",I5)') IERR STOP 55  END  SUBROUTINE INIT C C C THIS SUBROUTINE INITIALIZES VARIOUS C VARIABLES USED BY THE ASSEMBLER C C  DIMENSION NALPH(37),NTITL(28)  DIMENSION KATT(10),IPRE(5) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (NALP2,NALPH(2))$ DATA IPRE(1),IPRE(2),IPRE(3),IPRE(4),IPRE(5) /1HN,1HA,1HR,1HG,1H /$C  C SOME COMPUTERS DO NOT ACCEPT THE FULL ASCII CHARACTER SET. "C THEREFORE SOME OF THE CHARACTERS DEFINED BELOW MAY BE ILLEGAL ""C ON YOUR MACHINE. IF THIS IS THE CASE, THE ILLEGAL CHARACTERS "C SHOULD BE REPLACED BY UNIQUE VALID CHARACTERS. THE NEW$C CHARACTERS CAN THEN BE USED IN PLACE OF THE OLD ILLEGAL CHARACTERS$C " DATA NALPH( 1),NALPH( 2),NALPH( 3),NALPH( 4) /1H0,1H1,1H2,1H3/"" DATA NALPH( 5),NALPH( 6),NALPH( 7),NALPH( 8) /1H4,1H5,1H6,1H7/"" DATA NALPH( 9),NALPH(10),NALPH(11),NALPH(12) /1H8,1H9,1HA,1HB/"" DATA NALPH(13),NALPH(14),NALPH(15),NALPH(16) /1HC,1HD,1HE,1HF/"" DATA NALPH(17),NALPH(18),NALPH(19),NALPH(20) /1HG,1HH,1HI,1HJ/"" DATA NALPH(21),NALPH(22),NALPH(23),NALPH(24) /1HK,1HL,1HM,1HN/"" DATA NALPH(25),NALPH(26),NALPH(27),NALPH(28) /1HO,1HP,1HQ,1HR/"" DATA NALPH(29),NALPH(30),NALPH(31),NALPH(32) /1HS,1HT,1HU,1HV/"" DATA NALPH(33),NALPH(34),NALPH(35),NALPH(36) /1HW,1HX,1HY,1HZ/" DATA NALPH(37) /1H./ DATA NBLNK,NPLUS,NMIN /1H ,1H+,1H-/  DATA NDOLR,NCOMM,NAST,NSEMI,NCOLN /1H$,1H,,1H*,1H;,1H:/  DATA NSHRP,NCTAB,NUNDR,NQUOT,NAMP /1H#,1H ,1H_,1H',1H&/  DATA NMULT,NDIV,NRPAR,NLPAR /1H*,1H/,1H),1H(/ " DATA NTITL( 1),NTITL( 2),NTITL( 3),NTITL( 4) /1HA,1HS,1HS,1HE/"" DATA NTITL( 5),NTITL( 6),NTITL( 7),NTITL( 8) /1HM,1HB,1HL,1HE/"" DATA NTITL( 9),NTITL(10),NTITL(11),NTITL(12) /1HR,1H ,1HD,1HE/"" DATA NTITL(13),NTITL(14),NTITL(15),NTITL(16) /1HF,1HI,1HN,1HI/"" DATA NTITL(17),NTITL(18),NTITL(19),NTITL(20) /1HT,1HI,1HO,1HN/"" DATA NTITL(21),NTITL(22),NTITL(23),NTITL(24) /1H ,1HP,1HR,1HO/"" DATA NTITL(25),NTITL(26),NTITL(27),NTITL(28) /1HG,1HR,1HA,1HM/"$ DATA KATT(1),KATT(2),KATT(3),KATT(4),KATT(5) /1H*,1H-,1H%,1H:,1H$/$$ DATA KATT(6),KATT(7),KATT(8),KATT(9),KATT(10)/1H@,1HB,1HQ,1HH,1HD/$C C TO INCREASE THE SIZE OF THE SYMBOL TABLE AND THUS THE C NUMBER AND LENGTH OF THE SYMBOLS USED BY THE ASSEMBLERC THE USER MUST CHANGE CERTAIN VARIABLES. THE VARIABLESC THAT MUST BE CHANGED DEPEND ON THE NUMBER OF BITS C PER WORD FOR YOUR COMPUTER, THE NUMBER OF CHARACTERS C USED TO DEFINE A SYMBOL, AND THE NUMBER OF SYMBOLS IN THE C SYMBOL TABLE. THE VARIABLES THAT DEFINE THESEC CHARACTERISTICS ARE - IBIT,MLAB,ICCNT,IWORD,LTAB. C  C IBIT = NUMBER OF BITS PER HOST COMPUTER WORD (SET BY USER) C MLAB = MAXIMUM LABEL LENGTH IN CHARACTERS (SET BY USER)#C ICCNT = NUMBER OF CHARACTERS PER HOST COMPUTER WORD (CALCULATED)#C IWORD = NUMBER OF COMPUTER WORDS PER LABEL (CALCULATED) C LTAB = LENGTH OF THE SYMBOL TABLE (SET BY USER)!C THUS THE FOLLOWING VARIABLES MUST BE CHANGED OR DIMENSIONED !C AS FOLLOWS TO CHANGE THE SIZE OF THE SYMBOL TABLE C TO CHANGE THE SIZE OF A SYMBOL OR THE SYMBOL TABLEC C LTAB C ITAB(IWORD,LTAB) C ITABV(LTAB) C ITABS(LTAB) C NAME(IWORD) C  IBIT = 16  MLAB = 8 ICCNT = IBIT/8  IWORD = 1+(MLAB-1)/ICCNT LTAB = 600C C C "C TO INCREASE THE PAGE SIZE OF THE CROSS REFERENCE TABLE OR THE "#C TOTAL NUMBER OF REFERENCE PAGES PRODUCED, THE USER MUST BE AWARE#C OF THE FOLLOWING VARIABLES. C C MXREF = MAXIMUM PAGE SIZE OF CROSS REFERENCE TABLE.C IXTAB = ARRAY TO ACCUMULATE CROSS REFERENCES "C IXPAG = TOTAL NUMBER OF REFERENCE PAGES OF SIZE MXREF THAT "C WILL BE ACCUMULATED. C C THE NUMBER OF REFERENCES ON A PAGE IS (MXREF/2).C MXREF SHOULD BE DIVISIBLE BY MSIZE (CURRENTLY 128). #C IF IXPAG = 0, THEN THE DISK FILE WILL NOT BE USED AND REFERENCES#C WILL ONLY BE ACCUMULATED IN MEMORY. C TO INCREASE CROSS REFERENCE PAGE SIZE THE FOLLOWING C VARIABLES SHOILD BE CHANGED C C MXREF  C IXTAB(MXREF) C C  IXPAG = 25 MXREF = 256 MSIZE = 128 C INITIALIZE OTHER VARIABLES USED BY CROSS REFERENCE ROUTINE  IXT = 1  IXPNT = 0  IXCNT = 0  IXREC = 1 C INITIALIZE FIELD TABLE INDEX IYFLD = 0 C SET MAXIMUM NUMBER OF ENTRIES IN FIELD TABLE IZFLD = 1024 C SET STARTING AND ENDING COLUMNS FOR LINE SCAN  IFCOL = 1  MCOL = 80 C SET LAST COLUMN NUMBER PRINTED ON OUTPUT LISTING MLCOL = 80C SET MAXIMUM OPCODE LENGTH  MOPC = 6C SET MAXIMUM NUMBER OF BITS IN FIELD  IFBIT = 20 KWORD = -1C FORM MAXIMUM VALUE CONTAINABLE IN IFBIT BITS ZVAL = 1.  DO 10 I=1,IFBIT ZVAL = ZVAL+ZVAL 10 CONTINUE ZVAL = ZVAL-1. C INITIALIZE DEFINITION FILE RECORD NUMBER IDREC = 1 "C SET PAGE NUMBER AND NUMBER OF LINES PER PAGE ON OUTPUT LISTING" IOLIN = 56 IPAGE = 1  LINE = IOLIN  LISN = 0 C SET MACRO PARAMETERS  MCNT = 0 MXMAC = LTAB-1  MSREC = 1  NARG = 0C INITIALIZE NUMBER OF ENTRY POINT SYMBOLS NENT = 0C SET FORMS CONTROL CHARACTER  IFORM = NALP2 C INITIALIZE END FLAG  IEND = 0C INITIALIZE LIST FLAGS  LSOR = 1 LSYM = 1 LREF = 0 LIF = 0  LDEF = 1 LOCT = 0 LERR = 0C SET DEFAULT NUMBER BASE TO DECIMAL NBASE = 10 JBASE = 4 C SET TOTAL ERROR COUNT  IERRS = 0  C SET READ FLAG  JREAD = 0 C INITIALIZE LEGAL CONSTANT MODIFIERS  DO 15 I=1,10 IATT(I) = KATT(I) 15 CONTINUEC INITIALIZE NUMBER OF SYMBOLS IN SYMBOL TABLE ISYM = 0 ISUB = 0C INITIALIZE THE CHARACTER VARIABLES DO 40 K=1,37 IALPH(K) = NALPH(K) 40 CONTINUEC "C THE CHARACTERS LISTED BELOW ARE CHARACTERS USED INTERNALLY BY "C THE ASSEMBLER FOR SYNTAX CHECKING.C  IBLNK = NBLNK IPLUS = NPLUS IMIN = NMIN IDOLR = NDOLR ICOMM = NCOMM IAST = NAST ISEMI = NSEMI ICOLN = NCOLN IMULT = NMULT IDIV = NDIV IRPAR = NRPAR ILPAR = NLPAR ISHRP = NSHRP ICTAB = NCTAB IUNDR = NUNDR IQUOT = NQUOT IAMP = NAMP C PLACE NUMBER OF MACRO ARGUMENTS SYMBOL IN SYMBOL TABLE DO 150 I=1,5 IN(I) = IPRE(I) 150 CONTINUE ICOL = 1 CALL LABEL(0) DO 160 I=1,IWORD ITAB(I,1) = NAME(I) 160 CONTINUE ITABS(1) = 9 ITABV(1) = 0  ISYM = 1 C SET DEFAULT TITLE DO 200 LL=1,50 LTITL(LL) = IBLNK 200 CONTINUE DO 250 LL=1,28  KK = LL+10 LTITL(KK) = NTITL(LL) 250 CONTINUE RETURN END  SUBROUTINE INOUT(ICTL)C C C THIS ROUTINE PERFORMS ALL I/O FOR THE PROGRAM EXCEPTC FOR THE FINAL OUTPUT LISTING. THESE STATEMENTS MAY C HAVE TO CHANGE ON SOME MACHINES PARTICULARILY FOR DISKC I/O. TWO STATEMENTS ARE SHOWN FOR EACH DISK I/O C OPERATION. A STANDARD READ OR WRITE AS USED BY IBM, DEC, C AND SOME OTHERS, AND A CALL TO A SYSTEM I/O ROUTINE  C AS USED BY H.P. AND SOME OTHERS (FOR INFORMTIVE PURPOSES). C THE RECORD NUMBER FOR RANDOM ACCESS I/O IS PASSED INTOC THE ROUTINE VIA COMMON. C  C ENTRY PARAMETERS C ICTL - I/O CONTROL WORDC 1 = READ SOURCE C 2 = READ CROSS REFERENCE RECORD C 3 = WRITE CROSS REFERENCE FILEC 4 = WRITE DEFINITION FILE C 5 = WRITE MACRO FILEC C  DIMENSION NAMEM(3),NAMED(3),NAMEX(3),IDBUF(10) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE(IDBUF(1),REAL1) " EQUIVALENCE (IDBUF(1),IDBU1),(IDBUF(2),IDBU2),(IDBUF(3),IDBU3)"" EQUIVALENCE (IDBUF(4),IDBU4),(IDBUF(5),IDBU5),(IDBUF(6),IDBU6)"$ EQUIVALENCE (IALPH(14),IAL14),(IALPH(15),IAL15),(IALPH(24),IAL24) $ EQUIVALENCE (INB(7),INB7),(INB(8),INB8),(INB(9),INB9)  DATA NAMEM(1),NAMEM(2),NAMEM(3) /2HMC,2HFL,2HE / DATA NAMED(1),NAMED(2),NAMED(3) /2HID,2HFL,2HE / DATA NAMEX(1),NAMEX(2),NAMEX(3) /2HIX,2HFL,2HE /C  GO TO (100,200,300,400,500),ICTLC  C READ SOURCE C 100 READ(ICRD,1000,END=110) INB  1000 FORMAT(80A1) C INCREMENT LINE NUMBER  LISN = LISN+1  GO TO 990  110 DO 120 I=1,80 INB(I) = IBLNK 120 CONTINUE INB7 = IAL15 INB8 = IAL24 INB9 = IAL14  GO TO 990 C C READ CROSS REFERENCE FILE C 200 READ(U@@NIT=IXFLE'IXREC) MCORE C CALL EXEC(14,1091,MCORE,MSIZE,NAMEX,IXREC) GO TO 990 C C WRITE CROSS REFERENCE FILEC 300 WRITE(UNIT=IXFLE'IXREC) (IXTAB(J),J=1,128) C CALL EXEC(15,1091,IXTAB,MSIZE,NAMEX,IXREC) GO TO 990 C C WRITE DEFINITION FILE C $C THE WRITE STATEMENTS THAT CREATE DEFINITION FILE SHOULD BE BINARY $#C SUBTRACT NUMBER OF SUB FIELD DEFINITIONS FROM NUMBER OF SYMBOLS # 400 ISYM1 = ISYM-ISUB IDBU1 = ISYM1 IDBU2 = IYFLD IDBU3 = KWORD IDBU4 = MCNT MSREC = MSREC-1 IDBU5 = MSREC IDBU6 = NENT  II = IDRECC WRITE MICROWORD SIZE AND TABLE SIZES TO DEFINITION FILE  WRITE(IDFLE) (IDBUF(I),I=1,6) C CALL EXEC(15,1091,IDBUF,6,NAMED,IDREC) IDREC = II+1 C WRITE SYMBOL TABLE TO DEFINITION FILE  IF(ISYM .LE. 0) GO TO 450  DO 420 I=1,ISYM REAL1 = ITABV(I) IDBU3 = ITABS(I)  L = 4  DO 415 J=1,IWORD IDBUF(L) = ITAB(J,I)  L = L+1 415 CONTINUE II = IDRECC SKIP SUB DIRECTIVE NAME  IF(ITABS(I) .LE. -16384) GO TO 420 WRITE(IDFLE) (IDBUF(J),J=1,7) C CALL EXEC(15,1091,IDBUF,7,NAMED,IDREC) IDREC = II+1 420 CONTINUEC WRITE FIELD TABLE TO DEFINITION FILE450 IF(IYFLD .EQ. 0) GO TO 480 J = 1  K = 10456 IF(IYFLD .GE. K) GO TO 460 K = IYFLD  IF(IYFLD-J) 480,460,460 460 L = 1  DO 470 I=J,K IDBUF(L) = IFLD(I)  L = L+1 470 CONTINUE II = IDREC WRITE(IDFLE) (IDBUF(I),I=1,10)C CALL EXEC(15,1091,IDBUF,10,NAMED,IDREC)  IDREC = II+1  J = J+10 K = K+10 GO TO 456 C WRITE MACRO DEFINITIONS TO DEFINITION FILE480 IF(MCNT .EQ. 0) GO TO 990  C THE REWIND STATEMENT MAY HAVE TO BE REMOVED IF MACRO FILE C IS MADE A RANDOM ACCESS FILE.  REWIND MCFLE  MCREC = 1  DO 490 I=1,MSREC  II = MCREC READ (MCFLE) INB C CALL EXEC(14,1091,INB,80,NAMEM,MCREC)  MCREC = II+1  II = IDREC WRITE (IDFLE) INB C CALL EXEC(15,1091,INB,80,NAMED,IDREC)  IDREC = II+1 490 CONTINUE GO TO 990 C C WRITE LINE TO MACRO FILEC 500 WRITE (UNIT=MCFLE'MCREC) IN C CALL EXEC(15,1091,IN,80,NAMEX,MCREC)990 RETURN END  SUBROUTINE PASS C C  C THIS SUBROUTINE READS THE ASSEMBLY LANGUAGE DEFINITION AND C SAVES THE DEFINITION ON A DISK FILE. THE ROUTINE !C EXECUTES ALL ASSEMBLER DIRECTIVES AND PRODUCES A LISTING ON ! C THE LIST DEVICE C C  REAL IVAL  DIMENSION LISTS(7),LCTL(7) DIMENSION ITERM(4),NUMS(10)  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (IBLNK,ITERM(1)) EQUIVALENCE (NUMS(1),IALPH(1)) EQUIVALENCE (LCTL(1),LSOR) DATA LISTS(1),LISTS(2),LISTS(3),LISTS(4) /1HS,1HI,1HT,1HX/  DATA LISTS(5),LISTS(6),LISTS(7) /1HD,1HQ,1HE/C C INITIALIZE IF STATEMENT NESTING LEVEL NUMBER IFSET = 0  IFON = 0C INITIALIZE IF STATEMENT CONTROL FLAG IFCTL = 2 C INITIALIZE CURRENT COLUMN NUMBER 100 ICOL = IFCOL JCOL = IFCOL C SET LABEL INDICATOR (INDEX) TO ZERO  INDET = 0  INDEX = 0 C INITIALIZE ERROR INDICATOR IERRL = 0  IERRI = 0  IERR = 0C SET MODE FOR OUTPUT LISTING  LMODE = 1 C SET EXPLICIT LENGTH TO INDICATE NONE SPECIFIED ILEN = -1  IF(JREAD) 115,110,115 C READ NEXT DEFINITION LINE  110 CALL INOUT(1) C MOVE NEW LINE TO INPUT BUFFER  115 DO 118 I=1,80 IN(I) = INB(I) 118 CONTINUE JREAD = 0 C DETERMINE ASSEMBLER DIRECTIVE  120 CALL OPCOD(ICHK) C CHECK TO SEE IF THIS IS AN IF EXPANSION AND THIS LINE  C IS TO BE SKIPPED  IF(IFCTL .EQ. 2) GO TO 185 IF(IERR .NE. 2) GO TO 250 C SET ICOL TO POINT PAST LABEL ICOL = JCOL+1  GO TO 120 185 GO TO (350,200,920,240,187,986),IERRC NO OPCODE ON LINE, CHECK IF LABEL PRESENT 187 IF(INDET) 800,920,800 C CHECK TO MAKE SURE THAT TWO LABELS ARE NOT ON LINE200 IF(INDET .GT. 0) GO TO 930 C PROCESS A LABEL CALL LABEL(0)  LABST = 1  C CHECK FOR A COLON  IF(IN(ICOL) .NE. ICOLN) GO TO 900  ICOL = ICOL+1 C CHECK FOR DOUBLE COLON IF(IN(ICOL) .NE. ICOLN) GO TO 212  ICOL = ICOL+1 NENT = NENT+1  LABST = 2 212 IF(IN(ICOL) .EQ. IBLNK) GO TO 213  IF(IN(ICOL) .NE. ICTAB) GO TO 214  213 ICOL = ICOL+1  IF(ICOL-MCOL) 212,212,214 214 IF(IFCTL .NE. 2) GO TO 120 GO TO (915,220,900,916),IERRC PLACE LABEL IN SYMBOL TABLE 220 IF(ISYM .GE. LTAB) GO TO 916 ISYM = ISYM+1 INDEX = ISYM DO 225 I=1,IWORD  ITAB(I,INDEX) = NAME(I) 225 CONTINUE ITABS(INDEX) = LABST+8 ITABV(INDEX) = 0. CALL XREFT(0,0) 230 INDET = INDEX C HAVE PROCESSED LABEL, NOW FETCH OPCODE GO TO 120  C PROCESS A COMMENT 240 IF(IFCTL-2) 588,805,588 C CHECK FOR AN IF CONTROL DIRECTIVE 250 IF(ICHK .EQ. 1010) GO TO 580 IF(ICHK .EQ. 1009) GO TO 560 IF(ICHK .EQ. 1008) GO TO 255 IF(ICHK-1011) 588,600,588 255 IF(IFSET .GE. 16) GO TO 985  IFSET = IFSET+1 IFPAR(IFSET) = 0  GO TO 588 350 GO TO (400,420,440,460,480,500,520,540,560,580,  1 600,620,680,700,720,920),IOPVAC #C PROCESS TITLE DIRECTIVE -- TITLE #C 400 N = 1  ICOL1 = ICOL+49 DO 405 J=ICOL,ICOL1  IF(J .GT. MCOL) GO TO 406  LTITL(N) = IN(J)  N = N+1 405 CONTINUE406 IF(N .GT. 50) GO TO 800  DO 408 J=N,50 LTITL(J) = IBLNK 408 CONTINUE GO TO 800 C "C PROCESS LIST DIRECTIVE -- LIST"C 420 LSET = 1421 IF(ICOL-MCOL) 422,422,428  422 DO 423 I=1,7  IF(IN(ICOL)-LISTS(I)) 423,424,423 423 CONTINUE C ILLEGAL LIST OPERAND  GO TO 925 C SET CORRESPONDING LIST CONTROL FLAG  424 LCTL(I) = LSET ICOL1 = ICOL+1 ICOL = ICOL1+1 C CHECK FOR END OF ARGUMENT LIST DO 425 I=1,3  IF(IN(ICOL1)-ITERM(I)) 425,800,425425 CONTINUE IF(IN(ICOL1)-ICOMM) 925,421,925  428 LSOR = LSET  GO TO 800 C #C PROCESS NOLIST DIRECTIVE -- NOLIST#C 440 LSET = 0 GO TO 421 C "C PROCESS EQU DIRECTIVE -- EQU "C C CHECK FOR EXPLICIT EXPRESSION LENGTH 460 DO 4611 I=1,10  IF(IN(ICOL)-NUMS(I)) 4611,4612,4611 4611 CONTINUE GO TO 46194612 ILEN = 0 LCOL = ICOL C READ EXPLICIT EXPRESSION LENGTH  4613 DO 4614 I=1,10  IF(IN(ICOL)-NUMS(I)) 4614,4618,4614 4614 CONTINUEC CHECK FOR EXPRESSION SURRONUNDED BY PARENTHESIS  IF(IN(ICOL)-ILPAR) 4616,4619,4616  4616 ICOL = LCOL  ILEN = -1  GO TO 4619 4618 ILEN = ILEN*10+I-1 ICOL = ICOL+1  GO TO 4613C READ VALUE THAT LABEL IS TO BE SET TO  4619 CALL ESCAN(IVAL)  IF(IERR-1) 462,465,462C SET SYMBOL VALUE TO ZERO IF THERE WAS AN ERROR462 IF(INDET) 463,464,463 C CHECK FOR DUPLICATE LABEL 463 IF(IERRL-53) 4635,464,4635 4635 ITABV(INDET) = 0.  ITABS(INDET) = LABST+8464 GO TO (465,925,940,930,970,975,980,955,925),IERRC CHECK FOR MISSING LABEL 465 IF(INDET) 466,910,466 C CHECK FOR DUPLICATE LABEL 466 IF(IERRL-53) 467,800,467C PLACE SYMBOL'S VALUE IN TABLE  467 ITABV(INDET) = IVAL  ITABS(INDET) = KLEN*16+LABST+8 GO TO 800 C "C PROCESS SET DIRECTIVE -- SET "C C CHECK FOR DUPLICATE LABEL 480 IF(IERRL-53) 484,481,484 481 JTYPE = ITABS(INDET)  JTYPE = JTYPE-(JTYPE/8)*8 C IF LABEL IS DUPLICATE, THEN TYPE MUST BE SET IF(JTYPE-3) 800,482,800 482 IERRL = 0 484 LABST = 3  GO TO 460 C #C PROCESS SPACE DIRECTIVE -- SPACE #C  500 CALL ESCAN(IVAL)  GO TO (505,925,940,930,970,975,980,955,925),IERR 505 ICNT = IVAL  IF(ICNT-IOLIN) 515,515,510 510 ICNT = IOLIN 515 LMODE = 2  GO TO 800 C #C PROCESS EJECT DIRECTIVE -- EJECT #C 520 LMODE = 3  IF(LSOR) 525,800,525 525 LINE = IOLIN  GO TO 800 C !C PROCESS IF DIRECTIVE -- IF!C  540 CALL ESCAN(IVAL)  GO TO (542,925,940,930,970,975,980,955,925),IERR542 IFON = 2 IF(IVAL) 546,544,546 544 IFON = 1 546 IFCTL = IFON  IF(IFSET-16) 548,985,985 548 IFSET = IFSET+1  IFPAR(IFSET) = IFON+IFON GO TO 800 C "C PROCESS ELSE DIRECTIVE -- ELSE"C 560 IF(IFSET) 920,920,562 562 IFON = IFPAR(IFSET)/2  IELSE = IFPAR(IFSET)-(IFON+IFON) IF(IFON) 588,588,564 564 IF(IELSE) 566,566,920  566 IFCTL = 3-IFON  IFPAR(IFSET) = IFCTL+IFCTL+1 GO TO 800 C #C PROCESS THE ENDIF DIRECTIVE -- ENDIF #C 580 IF(IFSET-1) 920,582,584 582 IFCTL = 2  IFSET = 0  GO TO 800  584 IFSET = IFSET-1  IFCTL = IFPAR(IFSET)/2$C CHECK FOR CONDITIONAL ASSEMBLY EXPANSION THAT SHOULD NOT BE LISTED$ IF(IFCTL-1) 588,588,800  588 IF(LIF) 589,100,589 589 ITYPE = -1 GO TO 800 C C "C PROCESS THE END DIRECTIVE -- END "C 600 IEND = 1 GO TO 800 C "C PROCESS DEF DIRECTIVE -- DEF "C 620 ITYP = 0 625 IXFLD = IYFLD C SET FIELD NUMBER  JFLD = 0C INITIALIZE NUMBER OF BITS IN WORD  IWBIT = 0 C CHECK FOR MISSING LABEL  IF(INDET) 6254,6252,62546252 IERRL = 52 GO TO 62566254 IF(IERRL) 6256,6255,62566255 ITABS(INDET) = -(ITYP*16384+1) C SCAN NEXT FIELD 6256 CALL SCAN(IVAL) C IF ERROR, RESET FIELD TABLE POINTER  IF(IERR-1) 6257,6259,6257  6257 IYFLD = IXFLD 6259 GO TO (626,946,987,940,950,975,970,955,925,930,980),IERR626 IF(FTYPE-4) 6265,670,655 6265 IWBIT = IWBIT+ILEN C INCREMENT NUMBER OF FIELDS JFLD = JFLD+1  IF(JFLD-32) 627,627,950 C PLACE FIELD TYPE,LENGTH, AND ATTRIBUTES IN FIELD TABLE 627 IYFLD = IYFLD+1  IF(IYFLD .GT. IZFLD) GO TO 985C PACK DEFAULT CONSTANT TYPE INTO TWO BITS IJ = 0 J = 7  DO 629 I=1,4  IF(LATT(J)) 6295,6285,62956285 J = J+1 629 CONTINUE GO TO 62976295 IJ = I-16297 IJ = LATT(1)*128+LATT(2)*64+LATT(3)*32+LATT(4)*16+IJ IJ = LATT(5)*8+LATT(6)*4+IJ  IFLD(IYFLD) = IJ*128+(ILEN-1)*4+FTYPE  IF(FTYPE .EQ. 1) GO TO 6305  IF(FTYPE .NE. 3) GO TO 635C PLACE DEFAULT CONSTANT IN FIELD TABLE 6305 IF(IYFLD+2-IZFLD) 631,631,985  631 IF(IVAL) 632,633,633 C DONT CARE DEFAULT FOR FIELD  632 IYFLD = IYFLD+1 IFLD(IYFLD) = -1  GO TO 635 C ORDINARY CONSTANT DEFAULT FOR FIELD  633 ICON1 = IVAL/32768. REAL1 = ICON1  ICON2 = IVAL-REAL1*32768.  IYFLD = IYFLD+1 IFLD(IYFLD) = ICON1 IYFLD = IYFLD+1 IFLD(IYFLD) = ICON2 C CHECK FOR FIELD SEPARATOR  635 DO 636 I=1,3  IF(IN(ICOL)-ITERM(I)) 636,655,636 636 CONTINUE IF(IN(ICOL) .NE. ICOMM) GO TO 910  ICOL = ICOL+1  GO TO 6256C CHECK TO SEE IF WORD LENGTH IS CORRECT655 IF(KWORD-IWBIT) 6555,656,6553 6553 IF(ITYP) 656,6555,656  6555 IYFLD = IXFLD  GO TO 945 C CHECK FOR MISSING LABEL 656 IF(INDET) 658,660,658 C PUT DEF STATISTICS IN SYMBOL TABLE658 ITABS(INDET) = -(ITYP*16384+JFLD*256+IWBIT)  ITABV(INDET) = IXFLD+1 GO TO 800 C RESET FIELD TABLE INDEX  660 IYFLD = IXFLD  GO TO 910 C FOUND SUB FIELD NAME IS DEF FIELD SCAN670 JTYPE = -ITABS(INDEX)/256  KFLD = JTYPE-(JTYPE/64)*64 INDEF = ITABV(INDEX)  ILEN = -ITABS(INDEX)-JTYPE*256 IWBIT = IWBIT+ILEN JFLD = JFLD+KFLD  IF(JFLD-32) 672,672,945 C COPY SUB DEFINITION TO DEF DEFINITION  672 DO 679 I=1,KFLD JTYPE = IFLD(INDEF) INDEF = INDEF+1 IYFLD = IYFLD+1  IF(IYFLD-IZFLD) 6725,6725,985  6725 IFLD(IYFLD) = JTYPE  FTYPE = JTYPE-(JTYPE/4)*4+1  GO TO (679,675,679,674),FTYPE 674 K = 1  J = INDEF  IF(IFLD(J)) 676,675,675 675 K = 2  676 J = IYFLD+K  IF(J-IZFLD) 677,677,985  677 DO 678 J=1,K IYFLD = IYFLD+1  IFLD(IYFLD) = IFLD(INDEF)  INDEF = INDEF+1 678 CONTINUE679 CONTINUE GO TO 635 C "C PROCESS SUB DIRECTIVE -- SUB "C 680 ITYP = 1 ISUB = ISUB+1  GO TO 625 C "C PROCESS THE WORD DIRECTIVE -- WORD"C 700 IF(KWORD) 701,920,920  701 CALL ESCAN(IVAL)  GO TO (702,925,940,930,970,975,980,955,925),IERR702 IF(IVAL-128.) 704,704,980  704 KWORD = IVAL  GO TO 800 C #C PROCESS MACRO DIRECTIVE -- MACRO #C C CHECK FOR MISSING LABEL 720 IF(INDET .EQ. 0) GO TO 910C IF LABEL IS DUPLICATE, TYPE MUST BE MACRO  IF(IERRL .EQ. 0) GO TO 721 I = ITABS(INDET)-(ITABS(INDET)/8)*8  IF(I .NE. 6) GO TO 990 C SET TYPE TO MACRO 721 ITABV(INDET) = 0 ITABS(INDET) = 6  IERRL = 0 C CHECK FOR MACRO NAME TABLE OVERFLOW  IF(MCNT .GE. MXMAC) GO TO 918  MCNT = MCNT+1 #C PLACE MACRO NUMBER AND DISK STARTING RECORD NUMBER IN SYMBOL TAB# REAL1 = MSREC REAL2 = MCNT  ITABV(INDET) = REAL2+REAL1*1024.C STORE MACRO BODY ON MACRO DEFINITION DISK FILE CALL MCDEF IF(IEND .EQ. 0) GO TO 100  ITYPE = 2  GO TO 800 C C CHECK FOR FORMAT ERROR IF NO OTHER ERRORS C 800 IF(IERRI) 805,802,805 802 IF(IN(ICOL)-ICOMM) 805,935,805C WRITE LINE TO OUTPUT LISTING 805 CALL LOUT(LMODE) IF(IEND) 840,100,840 840 WRITE(IPRT,1002) IERRS1002 FORMAT(/,/,28H TOTAL DEFINITION ERRORS =,I5) WRITE(KTERM,1002) IERRS  GO TO 995 C  C SET ERROR INDICATOR C  C LABEL ERROR 900 IERRL = 51 GO TO 990  C @@ MISSING LABEL 910 IERRL = 52 GO TO 990  C DUPLICATE LABEL 915 IERRL = 53 GO TO 230  C SYMBOL TABLE FULL 916 IERRL = 54 GO TO 990 C MACRO NAME OR PARAMETER TABLE FULL918 IERRL = 55 GO TO 990  C ILLEGAL DIRECTIVE 920 IERRI = 1  GO TO 990  C ARGUMENT ERROR 925 IERRI = 2  GO TO 990 C SYNTAX ERROR - ILLEGAL EXPRESSION 930 IERRI = 3  GO TO 990  C FORMAT ERROR 935 IERRI = 4  GO TO 805  C UNDEFINED SYMBOL 940 IERRI = 5  GO TO 990 C ILLEGAL MICROWORD LENGTH945 IERRI = 6  GO TO 990  C ILLEGAL FIELD TYPE 946 IERRI = 15 GO TO 990  C ILLEGAL FIELD LENGTH 950 IERRI = 7  GO TO 990  C ATTRIBUTE ERROR 955 IERRI = 8  GO TO 990 C CONSTANT TOO LARGE FOR A HOST MACHINE REAL NUMBER 970 IERRI = 10 GO TO 990 C IMPLICIT AND EXPLICIT FIELD LENGTH CONFLICT 975 IERRI = 9  GO TO 990  C VALUE ERROR 980 IERRI = 11 GO TO 990  C TABLE OVERFLOW ERROR 985 IERRI = 13 GO TO 990 C UNEXPECTED CONTINUATION LINE986 IERRI = 14 GO TO 990  C ILLEGAL CHARACTER 987 IERRI = 12C HAVE SET ERROR CODE, NOW OUTPUT LINE990 GO TO 800 995 RETURN END  SUBROUTINE OPCOD(ICHK)C C C THIS ROUTINE CHECKS THE CURRENT ASSEMBLER DIRECTIVE TO C SEE IF IT IS LEGAL. C  C ENTRY PARAMETERS C ICOL - POINTS TO COLUMN OPCODE SCAN STARTS IN C  C EXIT PARAMETERS C ITYPE = OPCODE TYPEC -1 = COMMENT STATEMENT C 1 = ASSEMBLER DIRECTIVE C 2 = DEF OR SUB STATEMENTC IOPVA - OPCODE NUMBERC ICHK - OPCODE VALUEC ICOL - POINTS TO OPERAND FIELD IF VALID OPCODE FOUND C JCOL - POINTS TO END OF LABEL IF LABEL FOUND C IERR - ERROR STATUSC 1 = VALID DIRECTIVE C 2 = SYMBOL ENDS WITH A COLON - PRESUMED LABEL C 3 = OPCODE ERRORC 4 = COMMENT LINEC 5 = NO OPCODE ON LINE C 6 = CONTINUATION LINE C  DIMENSION ITERM(4)  DIMENSION INST(5,10),INSTE(7,7)  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (ITERM(1),IBLNK)C C THE FOLLOWING DATA TABLE DEFINES ALL LEGAL ASSEMBLERC DIRECTIVES. EACH DATA STATEMENT CONSISTS OF FOUR OR SIXC CHARACTERS REPRESENTING THE DIRECTIVE, FOLLOWED BYC THE DIRECTIVE TYPE AND ITS NUMBER C C ! DATA INST(1, 1),INST(2, 1),INST(3, 1),INST(4, 1),INST(5, 1) ! 1 /1HL,1HI,1HS,1HT,1002/! DATA INST(1, 2),INST(2, 2),INST(3, 2),INST(4, 2),INST(5, 2) ! 1 /1HE,1HQ,1HU,1H ,1004/! DATA INST(1, 3),INST(2, 3),INST(3, 3),INST(4, 3),INST(5, 3) ! 1 /1HS,1HE,1HT,1H ,1005/! DATA INST(1, 4),INST(2, 4),INST(3, 4),INST(4, 4),INST(5, 4) ! 1 /1HI,1HF,1H ,1H ,1008/! DATA INST(1, 5),INST(2, 5),INST(3, 5),INST(4, 5),INST(5, 5) ! 1 /1HE,1HL,1HS,1HE,1009/! DATA INST(1, 6),INST(2, 6),INST(3, 6),INST(4, 6),INST(5, 6) ! 1 /1HE,1HN,1HD,1H ,1011/! DATA INST(1, 7),INST(2, 7),INST(3, 7),INST(4, 7),INST(5, 7) ! 1 /1HD,1HE,1HF,1H ,2012/! DATA INST(1, 8),INST(2, 8),INST(3, 8),INST(4, 8),INST(5, 8) ! 1 /1HS,1HU,1HB,1H ,2013/! DATA INST(1, 9),INST(2, 9),INST(3, 9),INST(4, 9),INST(5, 9) ! 1 /1HW,1HO,1HR,1HD,1014/! DATA INST(1,10),INST(2,10),INST(3,10),INST(4,10),INST(5,10) ! 1 /1HE,1HN,1HD,1HM,1016/! DATA INSTE(1,1),INSTE(2,1),INSTE(3,1),INSTE(4,1),INSTE(5,1),! 1 INSTE(6,1),INSTE(7,1) /1HN,1HO,1HL,1HI,1HS,1HT,1003/! DATA INSTE(1,2),INSTE(2,2),INSTE(3,2),INSTE(4,2),INSTE(5,2),! 1 INSTE(6,2),INSTE(7,2) /1HE,1HN,1HD,1HI,1HF,1H ,1010/! DATA INSTE(1,3),INSTE(2,3),INSTE(3,3),INSTE(4,3),INSTE(5,3),! 1 INSTE(6,3),INSTE(7,3) /1HS,1HP,1HA,1HC,1HE,1H ,1006/! DATA INSTE(1,4),INSTE(2,4),INSTE(3,4),INSTE(4,4),INSTE(5,4),! 1 INSTE(6,4),INSTE(7,4) /1HE,1HJ,1HE,1HC,1HT,1H ,1007/! DATA INSTE(1,5),INSTE(2,5),INSTE(3,5),INSTE(4,5),INSTE(5,5),! 1 INSTE(6,5),INSTE(7,5) /1HT,1HI,1HT,1HL,1HE,1H ,1001/! DATA INSTE(1,6),INSTE(2,6),INSTE(3,6),INSTE(4,6),INSTE(5,6),! 1 INSTE(6,6),INSTE(7,6) /1HM,1HA,1HC,1HR,1HO,1H ,1015/! DATA INSTE(1,7),INSTE(2,7),INSTE(3,7),INSTE(4,7),INSTE(5,7),! 1 INSTE(6,7),INSTE(7,7) /1HL,1HO,1HC,1HA,1HL,1H ,1017/C  NUMOP = 10 ICHK = 0 ITYPE = 0  IOPVA = 0  ICNT = 0 IERR = 1 INSTT = 0  MLEN = 4C LOOK FOR START OF OPCODE200 IF(IN(ICOL) .EQ. IBLNK) GO TO 218  IF(IN(ICOL) .EQ. ICTAB) GO TO 218 C CHECK FOR COMMENT LINE IF(IN(ICOL)-ISEMI) 215,920,215C CHECK FOR A CONTINUATION LINE 215 IF(IN(ICOL)-IDIV) 220,950,220  218 ICOL = ICOL+1  IF(ICOL-MCOL) 200,200,930 C FOUND START OF OPCODE, NOW FIND END OF OPCODE 220 J1 = ICOL  J2 = 0 230 DO 232 I=1,4  IF(IN(ICOL)-ITERM(I)) 232,260,232 232 CONTINUE IF(IN(ICOL) .EQ. ICOLN) GO TO 940  J2 = J2+1  ICOL = ICOL+1  IF(ICOL-MCOL) 230,230,910 260 IF(J2-MOPC) 265,265,910  265 IF(J2-4) 300,300,270 270 MLEN = 6 INSTT = 1  NUMOP = 7 C CHECK OPCODE AGAINST ALL LEGAL OPCODES 300 DO 320 L=1,NUMOP DO 310 K=1,J2 K1 = J1+K-1  IF(INSTT) 302,302,304 302 IF(IN(K1)-INST(K,L)) 320,310,320304 IF(IN(K1)-INSTE(K,L)) 320,310,320 310 CONTINUE IF(J2-MLEN) 315,500,500 315 K2 = J2+1  IF(INSTT) 316,316,318 316 IF(INST(K2,L)-IBLNK) 320,500,320318 IF(INSTE(K2,L)-IBLNK) 320,500,320 320 CONTINUE GO TO 910 C FETCH INSTRUCTION TYPE AND VALUE 500 ICHK = INST(5,L)  IF(INSTT) 550,550,510  510 ICHK = INSTE(7,L) 550 ITYPE = ICHK/1000  IOPVA = ICHK-ITYPE*1000 C SCAN TO START OF ARGUMENT FIELD 600 IF(IN(ICOL) .EQ. IBLNK) GO TO 610  IF(IN(ICOL) .NE. ICTAB) GO TO 990  610 ICOL = ICOL+1  IF(ICOL-MCOL) 600,600,990  C OPCODE ERROR 910 IERR = 3 GO TO 990 C FOUND COMMENT INDICATOR 920 IERR = 4 ITYPE = -1 GO TO 990  C NO OPCODE ON LINE 930 IERR = 5 GO TO 990  C PRESUMED LABEL 940 IERR = 2 JCOL = ICOL  ICOL = J1  GO TO 990  C CONTINUATION LINE 950 IERR = 6990 RETURN END  SUBROUTINE LABEL(MODE)C C C THIS ROUTINE PROCESSES ALL SYMBOLS USED IN THE ASSEMBLY !C PROGRAM. IT SCANS THE SYMBOL TABLE TO SEE IF A GIVEN SYMBOL! C IS DEFINED OR NOT C C C  C ENTRY PARAMETERS !C MODE - INDICATES WHETHER DEFINITION OR REFERENCE OF LABEL! C 0 = DEFINITION C 1 = REFERENCE C ICOL - STARTING COLUMN OF SCAN  C EXIT PARAMETERS C CVAL - VALUE OF LABEL ON RETURNC JTYPE - SYMBOL TYPEC 1 = REGULAR SYMBOLC 2 = ENTRY POINT SYMBOL C 3 = SET SYMBOL C 4 = DEF NAME C 5 = SUB NAME C 6 = MACRO NAME C INDEX - INDEX OF SYMBOL IN TABLE C KLEN - IMPLICIT LABEL LENGTH C LLEN - EXPLICIT LABEL LENGTH C IERR - ERROR STATUSC 1 = VALID SYMBOL FOUNDC 2 = SYMBOL NOT IN TABLE C 3 = SYMBOL ERRORC 4 = SYMBOL TABLE FULL C C  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128)C  LLEN = 0 INDEX = 0  CVAL = 0. C SCAN SYMBOL, PLACE IN NAME BUFFER  CALL SYMBL IF(IERR-3) 100,920,100C CHECK TO SEE IF LABEL IS IN TABLE  100 IF(ISYM) 120,910,120 120 DO 200 I=1,ISYM DO 150 J=1,IWORD  IF(ITAB(J,I)-NAME(J)) 200,150,200 150 CONTINUE GO TO 900 200 CONTINUE GO TO 910 C SYMBOL FOUND, GET ITS VALUE AND TYPE900 INDEX = I  CVAL = ITABV(INDEX) JTYPE = ITABS(INDEX)  IF(JTYPE) 901,902,902 901 JTYPE = -JTYPE/(2**14)+4 GO TO 903 C SET LABEL LENGTH FOR ORDINARY LABELS 902 KLEN = JTYPE/16  JTYPE = JTYPE-(JTYPE/8)*8 903 IERR = 1 IF(LREF) 904,990,904 904 CALL XREFT(MODE,0)  GO TO 990  C SYMBOL NOT IN TABLE 910 IERR = 2 GO TO 990  C SYMBOL ERROR 920 IERR = 3990 RETURN END  SUBROUTINE SYMBL C C C THIS SUBROUTINE IS USED TO FORM A SYMBOL AND ITS INDEXC INTO THE SYMBOL TABLE C C  DIMENSION ITERM(4) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (ITERM(1),IBLNK)C  C ENTRY PARAMETERS C ICOL - STARTING COLUMN OF SCAN  C EXIT PARAMETERS C NAME - CONTAINS NUMERIC EQUIVALENT OF SYMBOL C ICOL = COLUMN FOLLOWING SYMBOL C IERR - ERROR STATUSC 1 = SYMBOL ENDS WITH A BLANK, COMMA, OR SEMICOLON !C 2 = SYMBOL ENDS WITH OTHER THAN BLANK,COMMA,SEMICOLON !C 3 = SYMBOL ERRORC  LABCT = 0  DO 10 J=1,IWORD NAME(J) = 0 10 CONTINUE IC1 = 1  IC2 = 1 C CHECK FOR VALID CHARACTER  100 DO 110 J=1,37  IF(IN(ICOL)-IALPH(J)) 110,130,110 110 CONTINUEC END OF SCAN IF FOUND INVALID CHARACTER IF(LABCT) 115,930,115 115 IF(IC2-ICCNT) 116,116,120  116 DO 117 J=IC2,ICCNT  NAME(IC1) = NAME(IC1)*256 117 CONTINUEC CHECK FOR BLANK OR COMMA 120 DO 122 I=1,4  IF(IN(ICOL)-ITERM(I)) 122,900,122 122 CONTINUE GO TO 920 C CHECK IF MORE CHARACTER THAN WILL FIT IN TABLE130 IF(LABCT-MLAB) 132,160,160132 IF(LABCT) 134,134,140  134 IF(J-10) 930,930,140 140 LABCT = LABCT+1  IF(IC2-ICCNT) 150,150,142  142 IC1 = IC1+1  IC2 = 1  150 IC2 = IC2+1 C FORM SYMBOL FOR PLACEMENT IN TABLE NAME(IC1) = NAME(IC1)*256+J 160 IF(ICOL-MCOL) 162,930,930  162 ICOL = ICOL+1  GO TO 100 C SYMBOL ENDS WITH A BLANK, COMMA, OR SEMICOLON 900 IERR = 1 RETURNC SYMBOL ENDS WITH OTHER THAN A BLANK, COMMA, OR SEMICOLON920 IERR = 2 RETURN C SYMBOL ERROR 930 IERR = 3 RETURN END  SUBROUTINE SCAN(IVAL) C C C THIS ROUTINE SCANS A DEFINITION FIELD FOR A DEF OR SUBC DIRECTIVE. THE FIELD TYPE AND LENGTH ARE DETERMINED. C C  C ENTRY PARAMETERS C ICOL - POINTS TO COLUMN THAT SCAN STARTS IN C EXIT PARAMETERS C ICOL - POINTS TO COLUMN THAT SCAN ENDED ON C IVAL - VALUE OF FIELD IF FIELD IS A CONSTANT C ILEN - LENGTH OF FIELD C JATT - ARRAY SPECIFING FIELD ATTRIBUTESC FTYPE - FIELD TYPE C 0 = X, DONT CARE FIELDC 1 = C, CONSTANT FIELD C 2 = V, VARIABLE FIELD C 3 = V, VARIABLE FIELD WITH DEFAULTC 4 = SUBFIELD NAME FOUND ON DEF SCAN C 5 = NO VALID FIELDS LEFTC IERR - ERROR INDICATOR  C 1 = NO ERROR C 2 = ILLEGAL FIELD TYPEC 3 = ILLEGAL CHARACTER C 4 = UNDEFINED SYMBOLC 5 = ILLEGAL FIELD LENGTHC 6 = FIELD LENGTH CONFLICT C 7 = VALUE ERROR C 8 = ATTRIBUTE ERROR C 9 = ARGUMENT ERRORC 10 = EXPRESSION ERRORC 11 = ILLEGAL NEGATIVE VALUEC  REAL IVAL  DIMENSION NUMS(16) DIMENSION JCVAL(4)  DIMENSION ITERM(4),JSYM(19)  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (IBLNK,JSYM(1))  EQUIVALENCE (IBLNK,ITERM(1)) EQUIVALENCE (NUMS(1),IALPH(1)) EQUIVALENCE (ICHRV,IALPH(32)),(ICHRX,IALPH(34)) ! EQUIVALENCE (LATT(3),LATT3),(LATT(4),LATT4),(LATT(5),LATT5) ! EQUIVALENCE (LATT(7),LATT7)  DATA JCVAL(1),JCVAL(2),JCVAL(3),JCVAL(4) /2,8,16,10/C  IVAL = 0. C INITIALIZE ATTRIBUTE AND MODIFIER ARRAYS DO 50 I=1,10 LATT(I) = 0 50 CONTINUE FTYPE = 0  ILEN = -1 C SCAN TO NON-BLANK CHARACTER 60 IF(ICOL-MCOL) 65,65,7765 IF(IN(ICOL)-IBLNK) 66,70,66 66 IF(IN(ICOL)-ICTAB) 72,70,72  70 ICOL = ICOL+@@1  GO TO 60C CHECK FOR A COMMENT LINE72 IF(IN(ICOL)-ISEMI) 120,77,120 C READ NEXT LINE, CHECK FOR CONTINUATION 77 CALL INOUT(1) LCOL = IFCOL C SCAN TO FIRST NON-BLANK CHARACTER 80 IF(LCOL-MCOL) 85,85,945 85 IF(INB(LCOL)-IBLNK) 86,87,8686 IF(INB(LCOL)-ICTAB) 90,87,90 87 LCOL = LCOL+1  GO TO 8090 IF(INB(LCOL)-IDIV) 110,92,110  92 CALL LOUT(1) C MOVE NEW LINE TO INPUT BUFFER  DO 93 I=1,80 IN(I) = INB(I) 93 CONTINUE ICOL = LCOL+1 C SCAN TO FIRST NON-BLANK CHARACTER  GO TO 60110 JREAD = 1  FTYPE = 5  GO TO 990  120 LCOL = ICOL C CHECK FOR A DECIMAL NUMBER INDICATING FIELD LENGTH DO 125 I=1,10  IF(IN(ICOL)-NUMS(I)) 125,150,125125 CONTINUE GO TO 160 C CONVERT FIELD LENGTH TO BINARY150 ILEN = 0 151 DO 152 I=1,10  IF(IN(ICOL)-NUMS(I)) 152,155,152152 CONTINUEC CHECK FOR NO FIELD SPECIFICATION DO 153 I=1,4  IF(IN(ICOL)-ITERM(I)) 153,910,153 153 CONTINUE GO TO 160  155 ILEN = ILEN*10+I-1 ICOL = ICOL+1  GO TO 151 C CHECK FIELD LENGTH TO SEE IF V OR X FIELD POSSIBLE 160 IF(ILEN) 300,180,180 C CHECK FOR DON'T CARE FIELD180 IF(IN(ICOL)-ICHRX) 200,185,200 185 ICOL = ICOL+1 C CHECK FOR A TERMINATOR DO 190 I=1,4  IF(IN(ICOL)-ITERM(I)) 190,195,190 190 CONTINUE ICOL = LCOL  GO TO 300 !C SET TYPE TO DONT CARE -- X !195 FTYPE = 0  GO TO 800 C CHECK FOR VARIABLE FIELD200 IF(IN(ICOL)-ICHRV) 300,225,300 225 ICOL = ICOL+1 C CHECK FOR A TERMINATOR DO 230 I=1,19  IF(IN(ICOL)-JSYM(I)) 230,235,230230 CONTINUE IF(IN(ICOL)-ICHRX) 2536,235,2536!C SET TYPE TO INDICATE VARIABLE FIELD -- V !235 FTYPE = 2  C CHECK FOR ATTRIBUTES 240 DO 250 I=1,6  IF(IN(ICOL)-IATT(I)) 250,260,250250 CONTINUEC CHECK FOR NUMERIC DEFAULT  DO 251 I=7,10  IF(IN(ICOL)-IATT(I)) 251,2515,251 251 CONTINUE GO TO 254  2515 ICOL = ICOL+1  IF(IN(ICOL) .EQ. ISHRP) GO TO 252  ICOL = ICOL-1  GO TO 2536 252 ICOL = ICOL+1 LATT(I) = 1  I = I-6  J = JCVAL(I) C CHANGE DEFAULT NUMBER BASE IF(I .EQ. 1) GO TO 2525  LATT7 = 0  2525 DO 253 I=1,J  IF(IN(ICOL)-IALPH(I)) 253,2535,253253 CONTINUEC CHECK FOR DON'T CARE DEFAULT IF(IN(ICOL) .NE. ICHRX) GO TO 802  ICOL = ICOL+1  GO TO 256  2535 ICOL = ICOL-2 2536 FTYPE = 3  CALL ESCAN(IVAL)  IF(IERR-1) 305,500,305C CHECK FOR DONT CARE DEFAULT 254 IF(IN(ICOL) .NE. ICHRX) GO TO 258 C TO BE A DONT CARE, NEXT COLUMN MUST BE A TERMINATOR,C OTHERWISE, IT IS A LABEL.  ICOL = ICOL+1 DO 255 I=1,4  IF(IN(ICOL)-ITERM(I)) 255,256,255 255 CONTINUE ICOL = ICOL-1  GO TO 2536256 IVAL = -1  FTYPE = 3  GO TO 550 C IF NOT A TERMINATOR, THEN ASSUME IT IS A SYMBOL  258 DO 259 I=1,4  IF(IN(ICOL)-ITERM(I)) 259,550,259 259 CONTINUE GO TO 2536C FOUND ATTRIBUTE, MARK IN ARRAY260 IF(LATT(I) .NE. 0) GO TO 940 LATT(I) = 1 C CHECK FOR ILLEGAL ATTRIBUTE COMBINATION  IF((LATT(1)+LATT(2)) .GE. 2) GO TO 940C CHECK FOR $ ATTRIBUTE  IF(LATT5 .EQ. 0) GO TO 270 LATT3 = 1  LATT4 = 1  270 ICOL = ICOL+1  GO TO 240 C CHECK FOR A NUMBER, LABEL, OR EXPRESSION300 IF(IN(ICOL)-ILPAR) 302,303,302 302 ICOL = LCOL 303 CALL ESCAN(IVAL) 305 GO TO (400,945,920,950,935,930,960,940,310),IERR"C FOUND SUB FIELD NAME -- SUB "310 FTYPE = 4  GO TO 900 !C SET FIELD TYPE TO CONSTANT -- C !400 FTYPE = 1 C CHECK TO SEE IF FIELD LENGTH HAS BEEN SPECIFIED  500 IF(ILEN) 510,520,520 510 ILEN = KLEN $C CHECK TO SEE IF ACTUAL FIELD LENGTH EQUALS SPECIFIED FIELD LENGTH $520 IF(ILEN-KLEN) 930,550,930 C SEE IF FIELD LENGTH EXCEEDS MAXIMUM ALLOWABLE 550 IF(ILEN-IFBIT) 800,800,925C CHECK TO SEE IF FIELD LENGTH EXCEEDS WORD LENGTH800 IF(ILEN-KWORD) 801,801,925 801 IF(ILEN) 802,930,802 C CHECK FOR CORRECT TERMINATION CHARACTER  802 DO 810 I=1,4  IF(IN(ICOL)-ITERM(I)) 810,900,810 810 CONTINUE GO TO 945 C  C VALID FIELD FOUND C 900 IERR = 1 GO TO 990 C  C SCAN ERRORS C  C ILLEGAL FIELD TYPE 910 IERR = 2 GO TO 990  C UNDEFINED SYMBOL 920 IERR = 4 GO TO 990 C FIELD LENGTH TOO LARGE925 IERR = 5 GO TO 990 C FIELD LENGTH CONFLICT 930 IERR = 6 GO TO 990 C NUMERIC CONSTANT TOO LARGE935 IERR = 7 GO TO 990 C FIELD OR CONSTANT ATTRIBUTE ERROR 940 IERR = 8 GO TO 990 C ARGUMENT ERROR IN FIELD 945 IERR = 9 GO TO 990 C EXPRESSION ERROR IN FIELD 950 IERR = 10  GO TO 990 C VALUE IS NEGATIVE, ILLEGAL960 IERR = 11 990 RETURN END  SUBROUTINE NUMB(MODE) C C THIS ROUTINE CONVERTS A NUMERIC CONSTANT TO BINARYC  C ENTRY PARAMETERS C NBASE - BASE OF NUMBERS WITHOUT BASE SPECIFICATIONSC ICOL - COLUMN THAT SCAN STARTS INC MODE - CONTROL PARAMETER C 0 = DON'T SCAN CONSTANT MODIFIERS C 1 = SCAN CONSTANT MODIFIERS $C NFLAG = FLAG THAT ALLOWS CONSTANTS OF THE TYPE 025H TO BE READ $ C EXIT PARAMETERS C IERR - ERROR INDICATOR C 1 = NO ERROR, NUMERIC FORMC 2 = NOT A NUMERIC FORMC 3 = NUMERIC CONSTANT ERRORC 4 = NUMERIC CONSTANT TOO LARGEC 5 = IMPLICIT AND EXPLICIT LENGTH CONFLICT C CVAL - CONTAINS CONSTANT VALUE C ICOL - POINTS TO CHARACTER AFTER CONSTANTC KLEN - IMPLICIT LENGTH OF NUMERIC CONSTANT C LLEN - EXPLICIT LENGTH OF NUMERIC CONSTANT C  REAL IVAL1,IVAL2  DIMENSION JSYM(15),JCTYP(4),JCVAL(4),JCLEN(4)  DIMENSION NUMS(16) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (NUMS(1),IALPH(1)) EQUIVALENCE (JSYM(1),IBLNK)  EQUIVALENCE (IATT(7),JCTYP(1)) DATA JCVAL(1),JCVAL(2),JCVAL(3),JCVAL(4) /2,8,16,10/ DATA JCLEN(1),JCLEN(2),JCLEN(3),JCLEN(4) /1,3,4,0/C  CVAL = 0.  IFLG = 0 NFLAG = 0 C SET DEFAULT BASE VALUE AND DIGIT LENGTH  NBASE = JCVAL(JBASE) LBASE = JCLEN(JBASE) C INITIALIZE CONSTANT'S EXPLICIT LENGTH  LLEN = 0 KKEN = 0C INITIALIZE CONSTANT'S IMPLICIT LENGTH  KLEN = 0 DO 100 I=1,10  IF(IN(ICOL)-NUMS(I)) 100,120,100100 CONTINUEC CHECK FOR A SHARP SIGN INDICATING A CONSTANT TYPE  ICOL1 = ICOL+1  IF(IN(ICOL1)-ISHRP) 910,205,910 C CHECK FOR LENGTH SPECIFIED ON CONSTANT, C FIND FIRST NON-DECIMAL NUMBER 120 N1 = ICOL  125 DO 140 I=1,10  IF(IN(ICOL)-NUMS(I)) 140,150,140140 CONTINUE GO TO 160  150 KKEN = KKEN*10+I-1 ICOL = ICOL+1  IF(ICOL-MCOL) 125,125,910 C CHECK FOR FIELD DESCRIPTOR 160 DO 170 I=1,4  IF(IN(ICOL)-JCTYP(I)) 170,180,170 170 CONTINUE!C NO FIELD DESCRIPTOR FOUND, NUMBER ASSUMED TO BE HEXIDECIMAL ! GO TO 211 C IF NEXT CHARACTER IS A SHARP, THEN NUMBER JUST SCANNEDC SPECIFIES EXPLICIT FIELD LENGTH  180 ICOL1 = ICOL+1  IF(IN(ICOL1)-ISHRP) 211,185,211  185 LLEN = KKEN 205 IFLG = 1 NCHAR = IN(ICOL) ICOL = ICOL1+1 C SKIP OVER BLANKS 207 IF(IN(ICOL)-IBLNK) 210,208,210 208 ICOL = ICOL+1  IF(ICOL-MCOL) 207,207,920 C SET STARTING COLUMN NUMBER OF CONSTANT210 N1 = ICOL 211 IF(ICOL-MCOL) 212,212,920 C CHECK FOR NUMERIC TERMINATOR 212 DO 214 I=1,15  IF(JSYM(I)-IN(ICOL)) 214,220,214214 CONTINUE IF(IN(ICOL) .EQ. IUNDR) GO TO 220  ICOL = ICOL+1  GO TO 211 C SET ENDING COLUMN NUMBER OF CONSTANT 220 ICOL1 = ICOL-1 C IF CONSTANT TYPE NOT SPECIFIED, SET BASE TO DEFAULT  IF(IFLG) 300,225,300 225 IF(NFLAG) 235,230,235  230 IFACT = NBASE JFACT = LBASE  GO TO 335  235 NCHAR = IN(ICOL1) ICOL1 = ICOL1-1  GO TO 335 C CHECK FOR CONSTANT TYPE  300 DO 310 I=1,4 IFACT = JCVAL(I) JFACT = JCLEN(I)  IF(JCTYP(I)-NCHAR) 310,335,310310 CONTINUEC C CONVERT HOLLERITH CODED NUMBER TO BINARYC 335 IF(ICOL1-N1) 920,338,338 338 DO 350 LL=N1,ICOL1 DO 340 I=1,IFACT  IF(IN(LL)-NUMS(I)) 340,345,340340 CONTINUE GO TO 920  345 IVAL1 = IFACT IVAL2 = I-1  CVAL = CVAL*IVAL1+IVAL2  KLEN = KLEN+JFACT  IF(CVAL-ZVAL) 350,350,930 350 CONTINUE IF(IFACT-10) 870,850,870C SET CONSTANT LENGTH FOR DECIMAL NUMBER 850 DO 860 I=1,IFBIT C FORM 2.**IFBIT-I J = IFBIT-I  REAL1 = 1. IF(J) 855,857,855 855 DO 856 K=1,J REAL1 = REAL1+REAL1 856 CONTINUE 857 K = CVAL/REAL1 IF(K) 865,860,865 860 CONTINUE J = -1865 KLEN = J+1"C IF AN EXPLICIT LENGTH IS SPECIFIED, THEN CHECK IMPLICIT LENGTH" 870 IF(LLEN) 880,900,880 880 IF(LLEN-KLEN) 940,900,940  C FINISHED, NO ERROR 900 IERR = 1 GO TO 990 C NOT A NUMERIC CONSTANT910 IERR = 2 GO TO 990 C NUMERIC CONSTANT ERROR920 IERR = 3 GO TO 990 C NUMERIC CONSTANT TOO LARGE930 IERR = 4 GO TO 990 C EXPLICIT - IMPLICIT LENGTH CONFLICT 940 IERR = 5990 RETURN END  SUBROUTINE ESCAN(IVAL)C C C THIS SUBROUTINE SCANS AND EVALUEATES EXPRESSIONS. THEC EXPRESSION SCAN IS ENDED BY A BLANK, COMMA, OR RIGHT C PARENTHESIS C  C ENTRY PARAMETERS C ICOL - POINTS TO START OF SCAN C NBASE - BASE OF NUMBERS WITHOUT BASE SPECIFICATIONS C EXIT PARAMETERS C IVAL - EXPRESSION VALUEC KLEN - EXPRESSION LENGTH C ICOL - POINTS TO COLUMN SCAN ENDED ONC IERR - ERROR INDICATOR "C 1 = NO ERROR, ENDS WITH RIGHT PARENTHESIS,BLANK OR COMMA"C 2 = ARGUMENT ERRORC 3 = UNDEFINED SYMBOLC 4 = EXPRESSION ERRORC 5 = NUMERIC CONSTANT TOO LARGEC 6 = FIELD LENGTH CONFLICT C 7 = EXPRESSION VALUE IS NEGATIVEC 8 = ILLEGAL CONSTANT MODIFIER C 9 = SUB FIELD NAME FOUNDC  REAL IVAL,IVAL1,IVAL2,IVAL3,JVAL,KDIV  DIMENSION JSYM(14),ITERM(4),NP(44) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (JSYM(1),IBLNK),(ITERM(1),IBLNK) DATA NP( 1),NP( 2),NP( 3),NP( 4) /1HE,1HQ,1H_,1H / DATA NP( 5),NP( 6),NP( 7),NP( 8) /1HN,1HE,1H_,1H / DATA NP( 9),NP(10),NP(11),NP(12) /1HG,1HT,1H_,1H / DATA NP(13),NP(14),NP(15),NP(16) /1HL,1HT,1H_,1H / DATA NP(17),NP(18),NP(19),NP(20) /1HL,1HE,1H_,1H / DATA NP(21),NP(22),NP(23),NP(24) /1HG,1HE,1H_,1H / DATA NP(25),NP(26),NP(27),NP(28) /1HA,1HN,1HD,1H_/ DATA NP(29),NP(30),NP(31),NP(32) /1HO,1HR,1H_,1H / DATA NP(33),NP(34),NP(35),NP(36) /1HX,1HO,1HR,1H_/ DATA NP(37),NP(38),NP(39),NP(40) /1HS,1HH,1HL,1H_/ DATA NP(41),NP(42),NP(43),NP(44) /1HS,1HH,1HR,1H_/C C SET OPERATOR FLAG TO INDICATE NONE IOPER = 0 C SET FLAG TO INDICATE NO EXPRESSION IFLG = 0 IVAL = 0.  IVAL1 = 0. ESIGN = 1  IEXP = 3 KLEN = 0 MODE = 0 IF(IN(ICOL)-ILPAR) 10,5,105 MODE = 1 ICOL = ICOL+1 10 NCHAR = IN(ICOL)  IERR = 1C C CHECK FOR SCAN TERMINATION CHARACTERC  DO 12 I=1,4  IF(NCHAR-ITERM(I)) 12,600,1212 CONTINUE IF(MODE .EQ. 0) GO TO 20 IF(NCHAR .EQ. IRPAR) GO TO 600C C CHECK FOR A PLUS SIGN C 20 IF(NCHAR-IPLUS) 50,28,5028 NSIGN = 1  GO TO 60C C CHECK FOR A MINUS SIGNC 50 IF(NCHAR-IMIN) 70,54,70 54 NSIGN = -1C CHECK FOR TWO OPERATORS IN A ROW 60 IF(IEXP-2) 64,930,64 64 IEXP = 2 IFLG = 1 IVAL = IVAL1*ESIGN+IVAL  ESIGN = NSIGN  IOPER = 0  IVAL1 = 0. GO TO 900 C C C CHECK FOR MULTIPLY SIGN 70 IF(NCHAR-IAST) 80,72,80 72 IOPER = 1  GO TO 84C  C CHECK FOR / SIGN C 80 IF(NCHAR .NE. IDIV) GO TO 90 IOPER = 2 C CHECK FOR TWO OPERATORS IN A ROW 84 IF(IEXP-2) 86,930,86 86 IEXP = 2 IFLG = 1 GO TO 900 C CHECK FOR RELATIONAL OR BOOLEAN OPERATOR90 IF(NCHAR .NE. IUNDR) GO TO 100 ICOL1 = ICOL  J = 1  92 ICOL = ICOL+1  IF(IN(ICOL) .EQ. IUNDR) GO TO 94 J = J+1  IF(J .GT. 4) GO TO 910 GO TO 92C CHECK FOR VALID OPERATOR 94 DO 96 LL=1,11 NN = (LL-1)*4 DO 95 N=1,J L = ICOL1+N  NN = NN+1  IF(IN(L) .NE. NP(NN)) GO TO 9695 CONTINUEC VALID BOOLEAN OR REALTIONAL OPERATOR FOUND, SET INDEX  IOPER = LL+2  GO TO 8496 CONTINUEC  C PROCESS THE OPERAND C 100 IF(IEXP-1) 106,930,106106 IEXP = 1 JVAL = 0. C CHECK FOR LOCATION COUNTER REFERENCE IF(NCHAR-IDOLR) 300,970,300 C CHECK FOR NUMERIC CONSTANT 300 CALL NUMB(1)  GO TO (410,400,910,940,410),IERRC CHECK FOR LEGAL LABEL  400 CALL LABEL(1)  GO TO (405,920,910),IERR C CHECK FOR MACRO NAME 405 IF(JTYPE .EQ. 6) GO TO 910C CHECK FOR SUB DIRECTIVE @@NAME IF(JTYPE-4) 410,910,406 406 IF(IOPVA-12) 4065,407,40654065 IF(IOPVA-13) 910,407,910 407 IF(IFLG) 930,975,930 410 JVAL = CVAL C C CHECK FOR CONSTANT MODIFIERSC C INITIALIZE MODIFIER ARRAY  420 DO 425 I=1,5 JATT(I) = 0 425 CONTINUE 428 DO 430 I=1,4  IF(IN(ICOL)-IATT(I)) 430,435,430430 CONTINUE GO TO 450 C IF JATT BIT ALREADY SET, CHARACTER MUST BE OPERATOR 435 IF(JATT(I)) 450,440,450 C * AND - MAY BE OPERATORS, NOT MODIFIERS  440 IF(I-2) 441,441,445 441 ICOL1 = ICOL+1 DO 442 J=1,14  IF(IN(ICOL1)-JSYM(J)) 442,445,442 442 CONTINUEC * OR - IS NOT A CONSTANT MODIFIER  GO TO 450  445 JATT(I) = 1 ICOL = ICOL+1  GO TO 428 C CHECK FOR ILLEGAL MODIFIER COMBINATIONS 450 IF(JATT(1)+JATT(2)-2) 452,970,452  C CHECK FOR $ MODIFIER 452 IF(JATT(5)) 453,455,453  453 JATT(3) = 1 JATT(4) = 1 C PERFORM OPERATIONS SPECIFIED BY CONSTANT MODIFIERSC SET LENGTH FOR MODIFIERS 455 JLEN = LLEN IF(LLEN) 459,456,459 456 JLEN = KLEN IF(ILEN) 459,457,457 457 JLEN = ILEN 459 DO 495 I=1,4  IF(JATT(I)) 460,495,460 460 GO TO (465,470,475,480),I  C INVERT CONSTANT 465 JVAL = ZVAL-JVAL  GO TO 482 C FORM TWO'S COMPLEMENT OF CONSTANT  470 JVAL = ZVAL-JVAL+1.  GO TO 482 C RIGHT JUSTIFY VALUE IN FIELD475 IF(KLEN-JLEN) 476,495,495  476 KLEN = JLEN  GO TO 495 C TRUNCATE THE CONSTANT TO SPECIFIED FIELD LENGTH  C FORM 2.**JLEN 480 IF(KLEN-JLEN) 482,482,481  481 KLEN = JLEN 482 IVAL2 = 1. DO 485 J=1,JLEN IVAL2 = IVAL2+IVAL2 485 CONTINUE K = JVAL/IVAL2  IVAL3 = K  IVAL3 = IVAL3*IVAL2 JVAL = JVAL-IVAL3 495 CONTINUE IF(MODE-2) 497,496,497 496 IVAL = JVAL  GO TO 850 497 IF(IERR-1) 498,500,498498 IF(KLEN-LLEN) 950,500,950 C "C CHECK TO SEE IF ANY ARITHMETIC OPERATIONS SHOULD BE PERFORMED "C  500 I = IOPER+1  GO TO (502,504,506,520,525,530,535,540,545,550,  1 555,560,565,570),I 502 IVAL1 = JVAL  GO TO 905 C PERFORM MULTIPLICATION 504 IVAL1 = IVAL1*JVAL  GO TO 905  506 IF(JVAL) 508,510,508 C PERFORM DIVISION 508 K = IVAL1/JVAL  IVAL1 = K  GO TO 905 510 IVAL1 = 0. GO TO 905 C PROCESS EQUAL OPERATION .EQ. 520 IF(IVAL1-JVAL) 595,590,595C PROCESS NOT EQUAL OPERATION .NE. 525 IF(IVAL1-JVAL) 590,595,590C PROCESS GREATER THAN OPERATION .GT. 530 IF(IVAL1-JVAL) 595,595,590C PROCESS LESS THAN OPERATION .LT. 535 IF(IVAL1-JVAL) 590,595,595C PROCESS LESS THAN OR EQUAL .LE. 540 IF(IVAL1-JVAL) 590,590,595C PROCESS GREATER THAN OR EQUAL .GE. 545 IF(IVAL1-JVAL) 595,590,590C PROCESS AND FUNCTION .AND.550 IC1 = 2  IC2 = 2  GO TO 580 C PROCESS OR FUNCTION .OR. 555 IC1 = 1  IC2 = 2  GO TO 580 C PROCESS XOR FUNCTION .XOR.560 IC1 = 1  IC2 = 1  GO TO 580 C PROCESS SHIFT LEFT FUNCTION .SHL. 565 REAL1 = IFBIT  IF(JVAL .GT. REAL1) GO TO 595  IC1 = JVAL IVAL2 = 2**IC1 IVAL1 = IVAL1*IVAL2  GO TO 905 C PROCESS SHIFT RIGHT FUNCTION .SHR. 570 REAL1 = IFBIT  IF(JVAL .GT. REAL1) GO TO 595  IC1 = JVAL IVAL2 = 2.**IC1 IVAL1 = IVAL1/IVAL2  GO TO 905 C PERFORM BIT PROCESSING FOR AND, OR, AND XOR 580 IVAL3 = 0  KDIV = 524288. DO 588 I=1,20 IB1 = IVAL1/KDIV IVAL2 = IB1  IVAL1 = IVAL1-IVAL2*KDIV IB2 = JVAL/KDIV IVAL2 = IB2  JVAL = JVAL-IVAL2*KDIV IB1 = IB1+IB2  IF(IB1-IC1) 586,584,582 582 IF(IB1-IC2) 586,584,586  584 IVAL3 = IVAL3+KDIV 586 KDIV = KDIV/2. 588 CONTINUE IVAL1 = IVAL3  GO TO 905 C SET REALATIONAL EXPRESSION TO A TRUE VALUE 590 IVAL = 65535.  GO TO 597 C SET REALTIONAL EXPRESSION TO A FALSE VALUE595 IVAL = 0597 IERR = 1 GO TO 990 C C CHECK FOR ILLEGAL GRAMMAR C 600 IF(IEXP-2) 730,930,910730 IVAL = IVAL+ESIGN*IVAL1  IF(IVAL-ZVAL) 740,740,940 C CHECK FOR NUMBER OR LABEL ONLY 740 IF(IFLG) 800,825,800 C SET EXPRESSION LENGTH  800 DO 810 I=1,IFBIT C FORM 2.**(IFBIT-I) J = IFBIT-I  REAL1 = 1. IF (J) 801,805,801 801 DO 802 K=1,J REAL1 = REAL1+REAL1 802 CONTINUE 805 K = IVAL/REAL1 IF(K) 820,810,820 810 CONTINUE J = -1820 KLEN = J+1 825 IF(MODE) 830,850,830 830 IF(IN(ICOL)-IRPAR) 910,831,910C CHECK FOR CONSTANT MODIFIERS AFTER RIGHT PARENTHESIS 831 ICOL = ICOL+1 JVAL = IVAL  MODE = 2 LLEN = 0 IF(ILEN) 420,835,835 835 LLEN = ILEN  GO TO 420 C CHECK FOR ILLEGAL NEGATIVE VALUE 850 IF(IVAL) 960,990,990 C  C SCAN NEXT TOKEN 900 ICOL = ICOL+1 905 IF(ICOL-MCOL) 10,10,910 C  C EXPRESSION ERRORS C  C ARGUMENT ERROR 910 IERR = 2 GO TO 990  C UNDEFINED SYMBOL 920 IERR = 3 GO TO 990  C EXPRESSION ERROR 930 IERR = 4 GO TO 990 C NUMERIC CONSTANT TOO LARGE940 IERR = 5 GO TO 990 C IMPLICIT AND EXPLICIT FIELD LENGTH CONFLICT 950 IERR = 6 GO TO 990 C VALUE IS NEGATIVE, ILLEGAL960 IERR = 7 GO TO 990  C ILLEGAL MODIFIER 970 IERR = 8 GO TO 990  C SUB FIELD NAME FOUND 975 IERR = 9990 RETURN END  SUBROUTINE LOUT(LMODE)C C C THIS SUBROUTINE IS USED TO OUTPUT THE ASSEMBLER LISTING C C  C ENTRY PARAMETERS C LMODE - OUTPUT MODE PARAMETERC 1 = NORMAL LINE C 2 = SPACE DIRECTIVE C 3 = EJECT DIRECTIVE "C LERR - FLAG INDICATING ERRORS SHOULD BE LISTED AT TERMINAL "C  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128)C  IOOUT = IPRT ISAVE = IPRT  JERR = 0C SET LIST MODE, 1=ORDINARY LINE, 2,3=ERROR LINES MODE = 1C CHECK FOR AN ASSEMBLY ERROR, ALWAYS LIST LINE IF ERROR IF(IERRL) 100,60,100 60 IF(IERRI) 100,70,100 C CHECK TO SEE IF SOURCE IS TO BE LISTED 70 IF(LSOR) 100,900,100 C CHECK OUTPUT LINE COUNT PER PAGE 100 LINE = LINE+1  IF(LINE-IOLIN) 400,400,200C EJECT TO NEXT PAGE AND PRINT TITLE200 WRITE(IPRT,1001) IFORM,LTITL,LTIME,IPAGE1001 FORMAT(A1,50A1,15A2,6H PAGE ,I4,/  1 1X,4HLINE,12X,9HSTATEMENT ,/)  IPAGE = IPAGE+1  LINE = 3400 GO TO (410,600,900),LMODE 410 GO TO (412,450,460),MODEC SCAN OFF TRAILING BLANKS 412 DO 413 I=1,MLCOL LINEL = MLCOL+1-I  IF(IN(LINEL)-IBLNK) 414,413,414 413 CONTINUE414 WRITE(IOOUT,1002) LISN,(IN(I),I=1,LINEL)1002 FORMAT(1X,I4,4X,80A1) C IF THERE IS AN ERROR, PRINT ERROR MESSAGE  MODE = 2 IF((JERR*IERRL) .NE. 0) GO TO 450  IF(IERRL) 100,420,100 420 MODE = 3 IF(IERRI) 100,470,100  450 CALL MESS(IERRL)  IF(JERR*LERR*IERRI) 460,465,460  460 CALL MESS(IERRI) 465 IF(JERR .NE. 0) GO TO 900  IERRS = IERRS+1  IF(MODE .NE. 3) GO TO 420 C CHECK TO SEE IF ERRORS ARE LISTED AT TERMINAL 470 IF(LERR*(IERRL+IERRI) .EQ. 0) GO TO 900  IF(IOOUT .EQ. KTERM) GO TO 900 IPRT = KTERM  JERR = 1 GO TO 414 C PROCESS SPACE DIRECTIVE 600 IF(LINE-IOLIN) 610,610,200 610 WRITE(IPRT,1003) 1003 FORMAT(1X) ICNT = ICNT-1 IF(ICNT) 900,900,620 620 LINE = LINE+1  GO TO 600  C CLEAR ERROR FLAGS 900 IERRI = 0  IERRL = 0  IPRT = ISAVE  RETURN END  SUBROUTINE SYMTA C C C THIS SUBROUTINE IS USED TO OUTPUT A SYMBOL TABLE OF ALL C SYMBOL USED IN THE PROGRAM AND DEFINED IN MACROSC C  REAL IVAL  DIMENSION IXOUT(600)  DIMENSION MTYPE(4),LISTS(6),LLAB(4,10) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (NAME(1),NAME1),(IXOUT(1),IXOU1) DATA LISTS(1),LISTS(2),LISTS(3),LISTS(4),LISTS(5),LISTS(6)  1 /1HA,1HE,1HX,1HD,1HS,1HM/ C  IDIV = 256**(ICCNT-1) !C SET MXLAB TO A VALUE GREATER THAN THE LARGEST ENCODED SYMBOL! MXLAB = 38*IDIV  IGX = 0 C CHECK FOR CROSS REFERENCE TABLE OVERFLOW IF(LREF) 140,140,6 6 IF(IXT) 7,140,140 7 IXT = -IXT WRITE(IPRT,1010) IXT 1010 FORMAT(34H CROSS REFERENCE OVERFLOW AT LINE ,I5) LINE = 8 IXT = 0 140 MM = 0C SET SYMBOL VALUES TO BLANKS  DO 142 I=1,4 DO 142 J=1,12 IADDR(I,J) = IBLNK 142 CONTINUE 145 NAME1 = MXLAB  IGO = 0 C GET NEXT HIGHER SYMBOL IN ALPHABETICAL ORDER LIND = 0 IF(ISYM) 150,990,150 150 DO 260 L=1,ISYM C CHECK FOR EMPTY SYMBOL TABLE POSITION  IF(ITAB(1,L)) 220,260,220  220 DO 230 K=1,IWORD  IF(ITAB(K,L)-NAME(K)) 240,230,260 230 CONTINUE 240 DO 250 K=1,IWORD NAME(K) = ITAB(K,L) 250 CONTINUE LIND = L260 CONTINUEC CHECK TO SEE IF A SYMBOL WAS FOUND IN TABLE  IF(LIND) 300,270,300 270 IGO = 1  IF(MM) 400,990,400 C DELETE SYMBOL FROM SYMBOL TABLE  300 ITAB(1,LIND) = 0  MM = MM+1  ICNT = 0C DECODE VALUE IN TABLE TO FORM OUTPUT CHARACTERS  DO 320 K=1,IWORD  ID = IDIV  DO 320 L=1,ICCNT ICNT = ICNT+1 NN = NAME(K)/ID IF(NN) 312,312,314 312 LLAB(MM,ICNT) = IBLNK  GO TO 3145314 NAME(K) = NAME(K)-NN*ID  LLAB(MM,ICNT) = IALPH(NN) 3145 IF(ICNT-MLAB) 316,321,321  316 ID = ID/256 320 CONTINUE C DECODE SYMBOL TYPE 321 NTYPE = ITABS(LIND)  IF(NTYPE) 322,323,323 322 NTYPE = -NTYPE/16384+4 GO TO 325 323 NTYPE = NTYPE-(NTYPE/8)*8  C CHECK FOR DEF OR SUB 325 IF(NTYPE-3) 326,326,330  C GET SYMBOL VALUE 326 IVAL = ITABV(LIND) CALL AHEX(IVAL,MM) 330 MTYPE(MM) = LISTS(NTYPE)C CHECK FOR SYMBOL OR CROSS REFERENCE TABLE  IF(LREF) 340,340,500 340 IF(MM-4) 145,400,400 C INCREMENT LINE COUNT AND EJECT PAGE IF NECESSARY 400 LINE = LINE+1  IF(LINE-IOLIN) 420,420,410410 WRITE(IPRT,1002) IFORM1002 FORMAT(A1) LINE = 3C OUTPUT NEXT LINE OF SYMBOL TABLE C IF IFBIT IS INCREASED, THE IADDR INDEX NEEDS TO BE CHANGED !C IN THE FOLLOWING WRITE AND FORMAT STATEMENTS TO REFLECT THE !C REQUIRED NUMBER OF OCTAL DIGITS NECESSARY FOR A SYMBOL420 WRITE(IPRT,1003) ((LLAB(II,K),K=1,ICNT),MTYPE(II), 1 (IADDR(II,L),L=6,12), II=1,MM)1003 FORMAT(1X,4(8A1,1X,A1,1X,7A1,2X))  IF(IGO) 990,140,990 C FORM CROSS REFERENCE TABLEC WRITE LAST RECORD TO FILE IF NECESSARY 500 IF(IGX) 530,510,530 510 IF(IXPNT) 530,530,515 515 IF(IXCNT) 530,530,520  520 CALL XREFT(1,1) 530 IGX = 1  LEN = 0  IXOU1 = 0  ITCNT = MXREF*IXCNT+IXPNT  IF(ITCNT-MXREF) 580,580,540  C READ PAGE FROM FILE 540 IXT = 1 C IF CROSS REFERENCE FILE IS SEQUENTIAL INCLUDE REWIND C REWIND IXFLE 550 L = MXREF/MSIZE  I1 = 0C FILL CROSS REFERENCE PAGE BUFFER DO 570 I=1,L IXREC = IXT C C THE FOLLOWING STATEMENTS READS THE CROSS REFERENCE FILE C  CALL INOUT(2) IXT = IXT+1 DO 560 M1=1,MSIZE  M2 = M1+I1 IXTAB(M2) = MCORE(M1) 560 CONTINUE I1 = I1+MSIZE 570 CONTINUE580 LL = MXREF IF(ITCNT-MXREF) 590,600,600 590 LL = ITCNT!C SEARCH CURRENT PAGE BUFFER FOR REFERENCES TO CURRENT SYMBOL ! 600 DO 620 I=1,LL,2  IF(IXTAB(I)-LIND) 620,610,620  610 LEN = LEN+1  I1 = I+1 IXOUT(LEN) = IXTAB(I1)620 CONTINUE ITCNT = ITCNT-MXREF  IF(ITCNT) 630,630,550 C OUTPUT CROSS REFERENCES 630 M1 = 1640 M2 = M1+7  IF(LEN-8) 650,660,660  650 M2 = M1+LEN-1 C INCREMENT LINE COUNT AND EJECT PAGE IF NECESSARY 660 LINE = LINE+1  IF(LINE-IOLIN) 680,670,670670 WRITE(IPRT,1002) IFORM LINE = 3 C IF IFBIT IS INCREASED, THE IADDR INDEX NEEDS TO BE CHANGED !C IN THE FOLLOWING WRITE AND FORMAT STATEMENTS TO REFLECT THE !C REQUIRED NUMBER OF OCTAL DIGITS NECESSARY FOR A SYMBOL680 WRITE(IPRT,1005) (LLAB(1,K),K=1,ICNT),MTYPE(1),  1 (IADDR(1,K),K=6,12),(IXOUT(K),K=M1,M2)1005 FORMAT(1X,8A1,2X,A1,3X,7A1,6X,8I6) M1 = M1+8  LEN = LEN-8 IF(LEN) 140,140,690 C BALNK OUT CROSS REFERANCE LINE 690 DO 700 K=1,ICNT LLAB(1,K) = IBLNK 700 CONTINUE DO 710 I=1,12 IADDR(1,I) = IBLNK 710 CONTINUE MTYPE(1) = IBLNK  GO TO 640 990 RETURN END  SUBROUTINE XREFT(MODE,NCTL) C C THIS SUBROUTINE ACCUMULATES CROSS REFERENCESC  C ENTRY PARAMETERS C MODE - INDICATES DEFINITION (0), OR REFERENCE (1) C NCTL - 1 INDICATES DO ONLY WRITE TO DISKC IXPNT - CURRENT POINTER INTO REFERENCE TABLE C C  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISE@@MI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128)C  IF(IXT) 110,10,10 10 IF(IXCNT-IXPAG) 20,40,40 20 IF(NCTL) 30,30,50 30 IF(IXPNT-MXREF) 100,50,50  40 IXT = -LISN  GO TO 110 C WRITE OUT PAGE TO FILE 50 K = MXREF/MSIZE  I1 = 0 DO 70 I=1,K DO 60 M1 = 1,MSIZE  M2 = I1+M1 IXTAB(M1) = IXTAB(M2) 60 CONTINUE IXREC = IXT C C THE CROSS REFERENCE FILE IS WRITTEN INTO BY C THE FOLLOWING STATEMENT C  CALL INOUT(3) I1 = I1+MSIZE IXT = IXT+1 70 CONTINUE IF(NCTL) 80,80,110 80 IXCNT = IXCNT+1  IXPNT = 0  IF(IXCNT-IXPAG) 100,40,40 C PUT DEFINITION OR REFERENCE IN TABLE 100 IXPNT = IXPNT+1 IXTAB(IXPNT) = INDEX IXPNT = IXPNT+1  IXTAB(IXPNT) = LISN*(MODE+MODE-1) 110 RETURN END  SUBROUTINE AHEX(IVAL,INDX)C C !C THIS SUBROUTINE CONVERTS A VALUE BETWEEN 0 AND (2**IFBIT-1) ! C INTO HEXADECIMAL OR OCTAL CHARACTERS. VALUES OUTSIDE THIS C RANGE ARE RETURNED AS ASTERISKS.C  C ENTRY PARAMETERS "C LOCT - FLAG INDICATING WHETHER VALUE IS TO BE OCTAL OR HEX "#C INDX - INDEX FOR IADDR ARRAY WHERE OUTPUT CHARACTERS ARE PUT #C IVAL - VALUE TO CONVERT C EXIT PARAMETERS C IADDR - ARRAY THAT HOLDS HEXADECIMAL OUTPUT CHARACTERS C C  REAL IVAL,IVAL1,IVAL2  DIMENSION JVAL(3) DIMENSION NUMS(16) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (NUMS(1),IALPH(1))! EQUIVALENCE (JVAL(1),JVAL1),(JVAL(2),JVAL2),(JVAL(3),JVAL3) !C C CHECK FOR LEGAL VALUE  IF(IVAL) 900,30,30 30 IF(IVAL-ZVAL) 40,40,900  C SET NUMBER BASE 40 J1 = 256 J2 = 3 J3 = 16 C INITIALIZE ADDRESS ARRAY INDEX K=4  IF(LOCT) 50,60,50 50 J1 = 512 J2 = 4 J3 = 8 K = 1 C BREAK 36 BIT REAL NUMBER INTO THREE 12 BIT INTEGERS  60 IVAL1 = IVAL/4096. JVAL1 = IVAL1/4096. IVAL1 = JVAL1  IVAL1 = IVAL-IVAL1*4096.*4096. JVAL2 = IVAL1/4096. IVAL2 = JVAL2  JVAL3 = IVAL1-IVAL2*4096. C FILL ADDRESS ARRAY WITH HOLLERITH ADDRESS  DO 80 I=1,3  J4 = J1  DO 80 J=1,J2 M1 = JVAL(I)/J4  JVAL(I) = JVAL(I)-M1*J4  J4 = J4/J3 M1 = M1+1  IADDR(INDX,K) = NUMS(M1) K = K+1 80 CONTINUEC SUPPRESS LEADING ZEROS IF LISTING IS IN HEX  IF(LOCT) 990,810,990 810 I = 11-(IFBIT-1)/4 DO 840 J=1,I  IADDR(INDX,J) = IBLNK 840 CONTINUE GO TO 990 C SET ADDRESS TO ASTERISKS 900 DO 910 J=1,12 IADDR(INDX,J) = IAST 910 CONTINUE990 RETURN END  SUBROUTINE MCDEF C C  C THIS ROUTINE IS USED FOR MACRO DEFINITIONS. IT SCANS EACH C MODEL LINE AND CHECKS FOR MACRO PARAMETERS. IT PLACESC PARAMETER MARKERS AT THESE LOCATIONS SO THEY CAN BE !C REFERENCED DURING MACRO EXPANSIONS AND REPLACED WITH ACTUAL ! C PARAMETERS. C C  C ENTRY PARAMETERS C MCNT - MACRO NUMBER C MSREC - NEXT POSITION IN MACRO FILE C EXIT PARAMETERS C IEND - SET TO ONE WHEN AN END DIRECTIVE IS FOUNDC MDISK - STARTING RECORD NUMBER OF MACROC MSREC - NEXT FREE POSITION IN MACRO FILE C MPARC - MACRO PARAMETER COUNTC C  DIMENSION MCPAR(256) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (MCPAR(1),IXTAB(256))  EQUIVALENCE (ICHRA,IALPH(11)),(ICHRT,IALPH(30)) C  IEND = 0 ICHK = 0 IPCNT = 0  IPCN1 = 0  NCNT = 0 LOC = 0 !C SCAN PROTOTYPE LINE FOR PARAMETERS AND FORM PARAMETER TABLE !20 IF(ICOL .GT. MCOL) GO TO 140100 CALL SYMBL IF(IERR .GE. 2) GO TO 130 C FOUND VALID PARAMETER, ENTER INTO TABLE  IF(NCNT-(MXREF-10)) 110,110,125  110 IPCNT = IPCNT+1 DO 120 LL=1,IWORD NCNT = NCNT+1  MCPAR(NCNT) = NAME(LL)120 CONTINUE ICOL1 = ICOL ICOL = ICOL+1  IF(IN(ICOL1) .EQ. ICOMM) GO TO 100 GO TO 140  C TOO MANY PARAMETERS 125 IERRL = 55 GO TO 140 C ILLEGAL PARAMETER LIST130 IERRI = 2 140 IF(IPCN1) 560,150,560  150 IPCN1 = IPCNT+1  GO TO 560 C READ NEXT MODEL STATEMENT AND CHECK FOR PARAMETERSC SUBSTITUTE A PARAMETER MARKER TO INDICATE RELATIVEC POSITION OF PARAMETER FOR MACRO REFERENCE  200 CALL INOUT(1)  ITYPE = -1 IERRI = 0  IERRL = 0  DO 210 LL=1,80 IN(LL) = INB(LL) 210 CONTINUEC CHECK FOR A COMMENT LINE ICOL = IFCOL  IF(IN(ICOL) .EQ. ISEMI) GO TO 500  IF(IPCNT .EQ. 0) GO TO 400 CALL MSCAN(IPCNT,1) C GET OPCODE FIELD ICOL = IFCOL 400 CALL OPCOD(ICHK) C IF A LABEL WAS FOUND, CALL OPCODE AGAIN TO GET DIRECTIVE IF(IERR .NE. 2) GO TO 475  ICOL = ICOL+1 CALL OPCOD(ICHK) C CHECK FOR LOCAL DIRECTIVE 475 IF(ICHK .NE. 1017) GO TO 500 IF(LOC .NE. 0) GO TO 500 DO 495 LL=1,80 IN(LL) = INB(LL) 495 CONTINUE GO TO 100 C  C THE FOLLOWING STATEMENT WRITES INTO THE MACRO SOURCE FILE C  500 MCREC = MSREC MSREC = MSREC+1  LOC = 1  CALL INOUT(5) C WRITE MACRO LINE TO OUTPUT LISTING 560 DO 565 I=1,80 IN(I) = INB(I) 565 CONTINUE CALL LOUT(1)  IERRI = 0 C CHECK FOR ENDM OR END INSTRUCTIONS IF(ICHK .EQ. 1016) GO TO 590 IF(ICHK .NE. 1011) GO TO 200 IEND = 1 590 IPCN1 = IPCN1-1 IPCNT = IPCNT-IPCN1  ITABS(INDET) = 16*(40*IPCNT+IPCN1)+6 INDET = 0  RETURN END  SUBROUTINE MSCAN(IPCNT,NSGO)C C  C THIS SUBROUTINE IS USED TO SCAN MODEL STATEMENTS FOR MACRO C PARAMETERS AND TO FORM THE PARAMETERS PASSED IN A MACRO C CALL INTO THE MODEL STATEMENTS, ALSO TO CALCULATE THE C NUMBER OF BYTES NEEDED FOR ABS, DATA, AND BYT DIRECTIVESC C  C ENTRY PARAMETERS C ICOL - STARTING COLUMN OF SCANC NSGO - CONTROL PARAMETER"C 1 = SCAN MODEL STATEMENTS AND PUT PARAMETER MARKERS IN"C IPCNT - NUMBER OF PARAMETERS IN MACRO PROTOTYPEC MCPAR - LIST OF MACRO PARAMETERS IF NSGO=1  C EXIT PARAMETERS C ICOL - ENDING COLUMN OF SCANC ICHAR - FINAL CHARACTER SCANNEDC C  DIMENSION IOPER(6),ISYX(16),MCPAR(256) INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) EQUIVALENCE (IOPER(1),IPLUS) EQUIVALENCE (ISYX(1),IBLNK),(MCPAR(1),IXTAB(256)) C  LLEN = 1 100 ICHAR = IN(ICOL)  IERR = 1C CHECK FOR A TERMINATOR IF(ICHAR-IBLNK) 110,140,110 110 IF(ICHAR-ICTAB) 112,140,112 112 IF(ICHAR-ISEMI) 114,900,114 114 IF(ICHAR-ICOMM) 160,130,160  130 LLEN = LLEN+1 140 ICOL = ICOL+1 150 IF(ICOL-MCOL) 100,900,900 C CHECK FOR AN OPERATOR  160 DO 170 K=1,6  IF(ICHAR-IOPER(K)) 170,140,170170 CONTINUE IF(ICHAR .EQ. IUNDR) GO TO 140 C CHECK FOR NUMERICS DO 220 K=1,10  IF(IN(ICOL)-IALPH(K)) 220,230,220 220 CONTINUEC CHECK FOR NUMERICS WITH DESCRIPTORS  DO 225 I=7,10  IF(IN(ICOL) .EQ. IATT(I)) GO TO 226 225 CONTINUE GO TO 300  226 ICOL1 = ICOL+1  IF(IN(ICOL1) .NE. ISHRP) GO TO 300 ICOL = ICOL+1 230 ICOL = ICOL+1 C SCAN FOR NUMERIC TERMINATOR  DO 240 K=1,16  IF(ISYX(K) .EQ. IN(ICOL)) GO TO 100 240 CONTINUE IF(IN(ICOL) .EQ. IAMP) GO TO 100 IF(IN(ICOL) .EQ. IQUOT) GO TO 100  IF(IN(ICOL) .EQ. IUNDR) GO TO 100  IF(ICOL-MCOL) 230,900,900 C CHECK FOR AND FETCH SYMBOL 300 ISTA = ICOL  CALL SYMBL IF(IERR .EQ. 3) GO TO 140 C PUT PARAMETER MARKERS INC CHECK IF THIS SYMBOL IS A PARAMETER PASSED IN PROTOTYPE  DO 365 K=1,IPCNT LL = (K-1)*IWORD DO 360 J=1,IWORD  LL = LL+1  IF(NAME(J)-MCPAR(LL)) 365,360,365 360 CONTINUE GO TO 370 365 CONTINUE GO TO 150 C REPLACE SYMBOL BY PARAMETER MARKER370 IF(ISTA-1) 380,380,372 C CHECK TO SEE IF QUOTE MARK INDICATING CONCATENATION EXISTS 372 ICOL1 = ISTA-1  IF(IN(ICOL1)-IQUOT) 380,375,380  375 ISTA = ICOL1 380 IF(IN(ICOL)-IQUOT) 390,385,390  385 ICOL = ICOL+1 390 IFIN = ICOL-1  IMARK = K  DO 395 K=ISTA,IFIN IN(K) = IMARK 395 CONTINUE GO TO 150 C 900 RETURN END  SUBROUTINE MESS(MESSN)C C C THIS SUBROUTINE WRITES ALL PROGRAM ERROR MESSAGES  C TO THE LIST FILE C  C ENTRY PARAMETERS C MESSN - MESSAGE NUMBER C C  INTEGER FTYPE REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128)C  IF(MESSN .GE. 50) GO TO 100 C BRANCH TO DISPLAY OPCODE OR OPERAND ERROR  GO TO (1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,  1 2100,2200,2300,2400,2500,2600,2700,2800),MESSNC BRANCH TO DISPLAY LABEL ERROR  100 MESSI = MESSN-50  GO TO (5100,5200,5300,5400,5500),MESSIC  C ILLEGAL DIRECTIVE 1100 WRITE(IPRT,1110) ICOL 1110 FORMAT(8X,21H***ILLEGAL DIRECTIVE ,1H(,I2,1H)) GO TO 99001200 WRITE(IPRT,1210) ICOL 1210 FORMAT(8X,18H***ARGUMENT ERROR ,1H(,I2,1H))  GO TO 99001300 WRITE(IPRT,1310) ICOL 1310 FORMAT(8X,16H***SYNTAX ERROR ,1H(,I2,1H))  GO TO 99001400 WRITE(IPRT,1410) ICOL 1410 FORMAT(8X,16H***FORMAT ERROR ,1H(,I2,1H))  GO TO 99001500 WRITE(IPRT,1510) ICOL 1510 FORMAT(8X,20H***UNDEFINED SYMBOL ,1H(,I2,1H))  GO TO 99001600 WRITE(IPRT,1610) ICOL 1610 FORMAT(8X,28H***ILLEGAL MICROWORD LENGTH ,1H(,I2,1H))  GO TO 99001700 WRITE(IPRT,1710) ICOL 1710 FORMAT(8X,24H***ILLEGAL FIELD LENGTH ,1H(,I2,1H))  GO TO 99001800 WRITE(IPRT,1810) ICOL 1810 FORMAT(8X,19H***ATTRIBUTE ERROR ,1H(,I2,1H)) GO TO 99001900 WRITE(IPRT,1910) ICOL 1910 FORMAT(8X,25H***FIELD LENGTH CONFLICT ,1H(,I2,1H)) GO TO 99002000 WRITE(IPRT,2010) ICOL 2010 FORMAT(8X,19H***VALUE TOO LARGE ,1H(,I2,1H)) GO TO 99002100 WRITE(IPRT,2110) ICOL 2110 FORMAT(8X,17H***ILLEGAL VALUE ,1H(,I2,1H)) GO TO 99002200 WRITE(IPRT,2210) ICOL 2210 FORMAT(8X,21H***ILLEGAL CHARACTER ,1H(,I2,1H)) GO TO 9900 2300 WRITE(IPRT,2310) 2310 FORMAT(8X,17H***TABLE OVERFLOW)  GO TO 9900 2400 WRITE(IPRT,2410) 2410 FORMAT(28H***ILLEGAL CONTINUATION LINE)  GO TO 99002500 WRITE(IPRT,2510) ICOL 2510 FORMAT(8X,22H***ILLEGAL FIELD TYPE ,1H(,I2,1H))  GO TO 99002600 WRITE(IPRT,2610) ICOL 2610 FORMAT(8X,31H***ADDRESS NOT ON CURRENT PAGE ,1H(,I2,1H)) GO TO 99002700 WRITE(IPRT,2710) ICOL 2710 FORMAT(8X,17H***OVERLAY ERROR ,1H(,I2,1H)) GO TO 99002800 WRITE(IPRT,2810) ICOL 2810 FORMAT(8X,20H***NO DEFAULT VALUE ,1H(,I2,1H))  GO TO 99005100 WRITE(IPRT,5110) JCOL 5110 FORMAT(8X,15H***LABEL ERROR ,1H(,I2,1H)) GO TO 9900 5200 WRITE(IPRT,5210) 5210 FORMAT(8X,16H***MISSING LABEL) GO TO 9900 5300 WRITE(IPRT,5310) 5310 FORMAT(8X,18H***DUPLICATE LABEL) GO TO 9900 5400 WRITE(IPRT,5410) 5410 FORMAT(8X,24H***SYMBOL TABLE OVERFLOW) GO TO 9900 5500 WRITE(IPRT,5510) 5510 FORMAT(8X,23H***MACRO TABLE OVERFLOW) 9900 RETURN END  FORMAT(8X,18H***DUPLICATE LABEL) GO TO 9900 5400 WRITE(IPRT,5410) 5410 FORMAT(8X,24H***FAULT VALUE ,1H(,I2,1H)) C GO TO 9900 C2900 WRITE(IPRT,2910) C2910 FORMAT(28H ***INVALID DEFINITION FIELD) C GO TO 9900 C3000 WRITE(IPRT,3010) C3010 FORMAT(35H ***SYMBOL OR FIELD TABLE TOO SMALL)  C GO TO 9900 @@C5100 WRITE(IPRT,5110) JCOLC5110 FORMAT(8X,15H***LABEL ERROR ,1H(,I2,1H))  C GO TO 9900 C5200 WRITE(IPRT,5210) C5210 FORMAT(8X,16H***MISSING LABEL)  C GO TO 9900 C5300 WRITE(IPRT,5310) C5310 FORMAT(8X,18H***DUPLICATE LABEL)  C GO TO 9900 C5400 WRITE(IPRT,5410) C5410 FORMAT(8X,24H***SYMBOL TABLE OVERFLOW)  C GO TO 9900 C5500 WRITE(IPRT,5510) C5510 FORMAT(8X,23H***MACRO TABLE OVERFLOW)C9900 RETURN C END150 C X ERROR OR ILLEGAL CHARACTER) `K|JŶ,Id lN&PMdM`PC(27H INVALID OBJECT FILE HEADER)`K|pж,Id lN$&PMdM`I\$(12H VALUE ERROR) `K|۶,Id lN-&PMdM`NA-(22H TOO MANY PROM COLUMNS) `K|,Id lN;&PMdM`Na;(22H MICROWORD WIDTH ERROR) `K|,Id lNI&PMdM`LNI(19H TOO MANY PROM ROWS)`K|,Id lNU&PMdM`I_U(12H DEPTH ERROR) `K},Id lN^&PMdM`M^(21H INVALID OBJECT INPUT)`K};,Id lNk&PMdM`Jxk(15H INVALID OPTION)`K}[,Id lNu&PM%dM`Ku(16H INVALID ADDRESS) `K}|(,Id lN&PM0dM`QF(29H MAP VALUE TOO LARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FOUND)`K}>,Id lN&PMFdM`MVu(20H BIT MAPPING OVERLAP)  `D IPt~ `AaN ARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FO. Zۉ[[[[[[[g.Z[ۮg...Z[ۮB.Z[ۮZۉ[[gG.wg.g..g.wo6g6[gwaZۮ[[.gG(.ߚ Zۉ[gGogGw穂N7Ng.g./gGwgw穂N7Nwww/ / gހۮwg/Rg/LgG)/Hwww['[g6o6[ [8ۉ[[[[[[[gW/$g/F [[F[ۮB/L[L[ۮg/P/Q/zg/_gGwww/zgW/c/lwgwo6gً/nwwgwg/zo6g@6g6[[wwww.PURGE [[[[ ,02d'wwԀ [dE.ttm6e6] eAD,etd,2ttl6DHm6tDHd<<,!m6e6] ,<,>,>tm6e6] ,H,J,JtdtdEt),[&,[g\_\\g\\\\\d,rdU",q\q\,d,|\]\,',dE,dE \dE\ ]]\dE \dE\]\\]\\!, \\ ,,Ț \\\\\d,dU",ט\\ 5\, SAVE PURGE \]]]  eSEc-?eSEbuQeSEeuReSEdR-5uRQKf5RKQ-HeSEb+`-HSeSEb+`uPePTeT-VuS=TeauP-# eueEu忂,-忂+-{]z]---eE-eEueEE-eEӂ@6MmMeueEm-eEmeE --eEU-|U-|U--5e-u=-g  f vfF"v,!- fF$ --  fF% f F&v] ^ 6'(fF#  f .v > f .v > f .v > - gwgG*w^2_+(.<^;_#//gG2wgG0wgG,w ^N__g.ggG0W.W.bgG,oO,w.f^f_$.k^k_/gG)W(.r.wgG0w.|gG0wgG2w ^___g.^_gG0W.W..73gG0G4.wwgG2G ??..^_%/gG1wgG0 _)w ^___g.̘^_g..g wgG0G..䘝^_&gG0wgG- gG.OgG/oO,/gG. gG/ W//73//gG+W'.=W(.lW)./g/w?.)  gwAwBwCwDwEg5wF/G______?oA_/g?訊_._T?WA/AG/f/_e?@ABCDEFA/G/с_r_A__/gwgwoH /oH //oH  0BB /o gAgoO /go_/_/gAoO go ggB/g/Ț1__A_//7_/g/g/g/g@F? @@G_ampm : . `Fri Sat Sun Mon Tue Wed Thu `Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb `6`<`d5l<`=`H, 19 `U`dGlU`V`f``/`4d1l4t1H`Rd2lD,uld2|TdtQd2l4ւHt9 ASM29 c@ ASM29@Jj.NFOP.NFCL.NFIN.NFCN@jB.DNOP.DNCL.DNIN.DNCN@~B.DSOP.DSCL.DSIN.DSCN<<.FAD .FSB .ITOI .EIO..IIO. .IAY. .DTA. .FSTPERR0 .IOCNFLOAT.EXIT.FFRW.FIOIAHEX NUMB INOUTSYMTAOUT < PASS INIT FTIME ;;`g}]#pi"t&d'dt&d"P,d,;++`[<(dl !1  2  ddl $  d+`LA (32X,15HENTRY POINT MAP)<<`d+D t 2 td t0a'd8'!ttdtdt<;;`^|dytdtyt tdDledtPDy,ttdtdD";;;``7,dD"lL"tڀ#tdT,,d@D!" td;<<`]A%Dytdtd,4dyDttdyttdDlPL dPtdt<;;`_sBdtD,6KttdtdDDttdtlt;;;`_,ad,idDl,ud"DtdDlLPAdD ,l;<<`c6tdtZD ,YdPtD,O' AdD,dt<))`Ydl !1  2  ddtdl )`FdDt  `Bdt `FĢdtD , `E̶ܾdDt `Bt`G1ѢdtD,`FڢdDt  `B"شdt `JtdtD , d`Kִ(1X,7A1,2X,8A1,2X,7A1);;``ꢂdt:''dPtD,tdtdtydD,5dl !;`M &8  b82  d`P!(A1,14X,50A1,2X,5HPAGE ,I4,/,/) `Mbd,'dl 1! d`L 1(32X,12HSYMBOL TABLE,/) `M7$dt,3dl =. d66`i=(24X,21HCROSS REFERENCE TABLE,//,6H LABEL,4X,4HTYPE,3X,5HVALUE,10X,10HREFERENCES) 6""`S>1dt5d,dl $fA @ d"`Nf(A1,15X,13HOBJECT MODULE,/) <<`a1Dd,t NZdd tVd t d t^4Zdt d)Ty,d)<;;`aeTN,n ,dtt~tdDlLZdtD,t ;..`Z  ,Y$ dtAdDyZ,t,dl t .`F͔dDt  `Bdt `FpdtD , `EރdDt `Bt`J#dtD, d`K4t(1X,7A1,2X,4(16A1,1X))`F3wdl t `FǢdDt  `BŴdt `F͢dtD , `EնdDt `BӴdt **`X`ڢdtDyP, d,Ydl $ @ d*`B+(A1)`BI00`d,@ A%$m(mCg0 INIT  c@wINIT  D.FAD .FSB .EIO..IIO..DTA..IOOP.EXIT LGBUFRHPAR11`e0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . 1`S X + - _ ' $ , * ; : # & > < * / ) ( **`_n/M E T A A S S E M B L E R A S S E M B L Y P R O G R A M *`J%* - % : $ @ B Q H D ;;`^tdt dt l 4Pt D h tZdttdԶtdtdt;;;`e@zdtdtdֶtdt$N l  d ,aN˄#;<<`k~l  d ,n+N˅9 $$ d ,{A&N<<<`k2B-O $ Pd ,` $d ,ql  <<<`_am$ d ,xN6dt$dt Pdtt!t"t#dt{tdtd͠t<<<`d#dt dt!t0tPdtD,0tt t<<<`aWtdtdttdtt'0tttPtttt<;;``DPtttt"tPt tt!t|t}Zt~DtPttt;<<`_tt#tPttt!tt%tdD lPL dPtD,t<<<`[]dDlLZdtD,dXtdYtdZtd]tyd^td_txd`tda<::`Y+t|dgtdhtditdjtdbtzdct{ddtdet}dft~d[td\tt:;;`]eDdDldtD,DtdDtdDlLZdtDP,P;`Q~k("OPEN ERROR ON SOURCE FILE:",I5) `MO(al1j d ,_`P1|("OPEN ERROR ON LIST FILE:",I5) `MO@nl1w d ,_`Qo("OPEN ERROR ON OBJECT FILE:",I5) `MOX{l1 d ,_`S("OPEN ERROR ON DEFINITION FILE:",I5) `MOpl1 d ,_`P/("OPEN ERROR ON XREF FILE:",I5) `MOl1 d ,_`Te#("OPEN ERROR ON INTERMEDIATE FILE:",I5) `MOl1 d ,_<<`j*`@" 8H XNU<<<`d6 EXSEUN' `%:`!! SEQU ENTIALSCRATCH <`I{DIRECT.,C$ )INOUTc@,INOUT$$ X.DCO .EIO..IIO..IAY..BIO..DTA..ENTR.GOTO.FSTP .EXITMESS $`C9MCFLE `C5IDFLE `C: OBFLE `C5 IMFLE ..`_$..R]$o*&ndl$7PPd,=.`C(80A1);;`\v<,tdDƢldtD,?dRtd[tdQtt,dtdl;`AX f `E7[dDt_ `BHYt<<`]͌`dtDP,[d,ZdtdtdtzdtydtdtdtAd<..`Yx} D,PAd{Dz,d,tdtdl. `EճdDt `Bt<<`_ֻdtDP,d,Zdtd@DtډdDldttd<::`^ DDlLdtdtD,dtZD,dzZ,$td:11`ZڢtAdzDZ,dztAdzDZ,$dtdl 1 `EmdDt `Bt;;`^&dtDP,d,PdttdtdDɴ lLdtdt;<<`_vdZD, d¶DtdDtP,d,Ytdtdl3PPd,<<<`b8dtdtl@dl1LPPddPtdtD,)d<55``Zt,lڂ@dlkb%d,l@6dl$5 `Ez|dDt `Bkzt<<`_odtD,|d,d tdytZdtAdDyP,tAdDy<##`R8,Ȉ 6,,,dt,dl$# `EdDt `Bt))`U:dtD,ddtdt dl ) `EжdDt `Bcδdt `NyբdtDP,dPdt  `D%(128A1) ;;``i,dtdlJ[ddt,tPdDtdDl ;<<``., ,dtPD,tdDlLdtD,dl#[<44`[*#Pddt,d tdtAdDy,8t,Sdl$K4 `E@dDtD `B->t''`TEdtDJ,@ddtdt dlg' `E2[dDt_ `BYdt ;;`b`dtDy,[ddt ,AdD,=l@؉dl$;99`dbPd,l@6dl&0PJd, , $@ 9**`_ \01! A (ey`g* PASS c@PASS "<<.FAD .FSB .FMP ..FCM.EIO..IIO..DTA..GOTOIFIX FLOAT.EXITINOUTOUT LOUT SCAN AHEX MODFYESCANLABEL<SMCCAL MCDEF OPCODMCREF`O/S I T X D Q O L B V E M A P C ;;`^""t"ttdtdtdt#tPttttt Zttd;;;`^@ttttud|,wd},^tdDlLZdtD,Od}t};;;`]^T,edtT#Z,e,wD}t}tdDlPLdZtD,j,d,;<<`a{T&,~,Ad D,,4Zdt,dtT&,td<;;`^]vidtdD lLdtD,td,T,1d,d}t|;<<`_-vdT,dT ,,ad#t, $/\md,,/T&,,d,F<;;`]^لtZdDT|,Z, dtdDT|,,dtdtT&,,;;;`\dtdDT,dDT,, dtdD, ,dT,,;<<`a#e,8 ")T&,&dӶT,YdDڂtd@@Dtd,&dDl<;;`^3LL,YT&,<,)ZtdDD lLdPtD,>dDl;;;`\2Qd@DtX`'Xdt,dD,,T&,e,dT,dT,dT;;;`_A:m,AdD,|AdĠ D,ZdD,,+AdD,jdtd;;;`ePD ,T&,,DtdT,,"b$e$+.V$$;;;`b$/oo&d%,tdDlePdtDy,t%dT,d"b;<<`g$e$+.V$g$$tdDtdtAdDP, <;;`^dDlLZdtdPtD,AdD,dtd@@Dld;;;`_tD,,tAdD,_tdDlL ,4,;dt;<<`^7D,*,CdPDldPtdttdDlL  ,QZ,dtD<;;`^nU,GdDlZ ,C, dt,t, ttdDlLZ ,s,z;<<`^rsdtDZ,i,tudttdDlL ,,dZtD,d<<<`_e?Dl ,dttu:,d̀uDDtudt,~dD",D <;;`^F,dD,d,d@Dt6ЂdDlZ,d,#dD,d@;<<`]δDtӈ6ڂdDt=dv$D=T&,dDlLZL,dضT,,d<<<``shDtl #DtdT,,tdt,eT ,,tA<;;`\H dD,dtdt,dtd,dt,֢d,#d,6dD;;;`_'PlLt= #=tdT,6,yd@Dt= =dDPltT;::`c#FP,H,/Ad D,,dtdd4Zd@Dtf  f i:;;`^vqid,+dt,ֆAdD,/dtZdtAdDP,DtdD;<<`_tl td$DtDtdDiPdDtDtdDt<;;`_lDtdDZtDt,tt0ittdZ,d,,+ ;<<`_"T ,,,PtD&X,,t$PD ,dtd,tdtd<::`^ D,jdtdDlL,dt,PtAd D,Ptt:;;`]kttDtdDTZ,dtdtdD,,dttd;;;`_ņtAdDZ,hdDT,.,YdDtdt7T ,;,;<<``m>Ztd,sdtHT ,L,2tAdD,s,hdDT,_<<<`_^Z,cdt,dDt,dT,~d,AdDP,AdD<;;`[}Z,d,d,dtdtdDtdDtdDlZL,,d;<<`_.^tD,Z,dDt,dt,tAdDX,C&dD ,<;;`^,C,d,,/dDZ@tdDlLZ|d,,d,/d;;;`^PնDtdDlPL ,D,/,Zdtt,DtdD @t;;;``~ZD,dZ,+t,քT ,,dDT, ,Cdt;::`cx"T ,, ,C ,Ctt",Xt,t$P3D :::`c6, ',s ",g'd,֢d,d@0DtT'4XT,t:<<`iY$P[D , ,g t' ,}'  '!'t<<<`h]Dh`' : '',GtPD ,0 ,sZt,<<<`dH C$LFg[s&X^dyDv,g"tdD㢊lDdtPDy,t<<<`]uζdDytdtd,dyZDttdyttdD lLdtd<<<`bGPtdtD,,d}X,/t$PD , ,sd, ,s<<<`` Z t}d#Ptt,tttdD dtD,'"D ,EdDu<<<`a-PtdyD,O;;$?\pIdDut,\C&duDۢttdDlL<;;`^gNZdtdtdtZDu,IdDl Z,gdt,$tdDl;<<`aclL ,s,zdtD,i,pdyZD,O,ִdD"tl܀&<;;``Dtd@JD舀tPttt%dDtdtl Dt;<<``Tdtl6tdtxT,,dxtx,lx P%Dxtxlt<<<``N8ͶtdD dtD,lDtdDtdD l4t<<<`_[ZdttdDlt6dDZDt d@tdtD,<<<`d\ &==dDxt,dDdt@dD4Pdt0  <<<`f0"D,dxtv<fx,d,~dtE0U U$RpLU[$gXCFs&X^d<;;`aVt`$``~yyZdD,odZD,ldtdtZD,dxDu;;;`^wP,[,tDtdtdD,ddD,dt,dxDu,[;<<`^Վ4ZdxDttdDZTe,T,T,,adDlLdtd<;;`a0PtdtDx,DZtd,d%,d,քD ,E$CCI;;;`atp&d,墊dD,嶀dDlZ ,IT&,,d,d;11`^td' tP'd,+D&,}dlr!d1`S>(/,/,26H TOTAL ASSEMBLY ERRORS =,I5)<<`^dl1!d,}dt,1dt,ydضt,Ydt,ydt,yt<<<`\1ZttdPDledZtD,5dt,ydt,ydt,ydƶt,yd<;;`YBMt,ydt,ydt,ydt,ydt,ydжt,vdt,ydt,ydt;88`Yf,ydt,yd̶t,ydt,|dt,ydt,yDtDt,"8<<`n*@ @@"@@@    <--`b~76543%@$1(mygmCem#-"" OPCODc@4OPCOD '&.GOTOLABEL <<`n>?L I S T E Q U S E T I F E L S E E N D O R G R E S D A T A D <33`ga}mU P F F I F C I F N C I F D I F N D E N D M M A P 3<<`nCN O L I S T E N D I F S P A C E E J E C T T I T L E A L I G N M A C R <`Q=.O L O C A L E X I T M <<`]ȟtdtPttt"ttdtdDT,dDT,dD<;;`_ l ,dDl ,,dPtdD,,dtdt# ;<<`]ddDT{,dDT|,d,dT,,dtdt,dtA<::`^|d DZ,WAdDZ,dttdtZttdDDtd:<<`^ ,dDtdЀDDZ,P,(dDtd6DD,P,(d<;;`_=)PtDP,dDZ,ddtd,EdDDl ,P,dd ;<<`^ 0HDDl ,P,ddtD,ZD ,dD,dtdt",d<;;`_f4ZDtd,n,td4ZDtlڂtd ZDt"t dDT;<<`\,dDT,,dtdD,,dt ,dât tt,dt <$$`Of+,dt dt#dtdD"t",dt $`U > 9 LABELc@LABEL.FAD .FDV .ITOI.ENTRERR0 IFIX XREFTSYMBL<<`btwtt8݉6dD ,̢d,ttdDֶDlL<::`^"Z ,/,'dtD,,7dtD,,dtD&,Sd,S:<<`b@ZdDtl$DhPtd,Pt d@D戀ڀdDtd<<<`bOb,pltՂDt,lڂtvl#Dtdv,td<<<`clDtֈۉ4Pd,t׈dtPD,ptעd,,d<<<`_%PtD,tdtvdD&D,ݶ,dt P,dD,<##`O-/Ƣdtdt,dt ,dඊt d t#`NO@@mg 'XSYMBLc@,SYMBL<<``ztttdD PdtD,tZttdDlL <<<`]Q ,",TdtD,dP,d D,AdtdDlLt(Pdt<::`^=PD ,2tdDlL  ,MZ,dtD,C,d D,{d:<<`]-[,adD,aZ,dtd ZD,j,odttdtdDlLt<33`X/xЀ(DdD,dZt,t ,dt ,dt Pd t3`ImC SNUMB c@NUMB J+.FAD .FSB .FMP .FDV .ENTRIFIX FLOAT `D`l `D`L <<`bk!tZdDtdDttwPttvt|dDl|L <<<`^5z*,,,=d|t|D,"dtdDlz ,k,dtt|dDl|L<;;`]H ,K,Rd|Zt|D,A,adD|DZtdtdZD,k,?t|dD;;;`^el|L ,m,td|Zt|D,c,dtdD lz ,Zdtwtd;;;`^DtdtdDl ,dPtdD,n,dtdPD,n;;;`]At|d|DlL  ,Z,d|t|D,dDT,dDT,d;;;`\<Zt,Dtd,d~,dt}dt~,dDtDtt|d|D;;;`]$ڶt}d|Dt~d|Dl ,,d|Zt|D,dZD,ndtt|d;;;`c8Dl|L ,,d|Pt|D},,nd}"D|!:dv;;;``N8D~tvb,q,#dPtD,dD},`t|4Zzd|Dtxdx;;;`b:,JtyzzzdyPtyDx,=ztydy,]P,Td|t|D,0;<<`\\Ztxdxtvdw,hdvDwZ,tt ,vdt ,vdt ,vdt ,vdt  <`S@6 Cd  xSCAN c@SCAN '' X.FAD .FSB .FMP .ENTR.GOTO IFIX FLOATMODFY ESCAN LOUT INOUTMCREF';;`cw4 PtPtudD,.dDl ,#dDà l ,';<<``#dt,dDl P,d,FT&,5,CAd D,?>,FB4,F<::`^`CFdtdD,dDl ,[dDlZ ,_dt,HdD:;;``a l ,d|,nt|t},tT&,t,{&wdt,~~td;<<`^..tT&,tdtdDƴ lLdtD,tdtt,t<<<`^ Zdttd%,,d%,zdttdDlLZ ,,dtD<;;`agT,, "tdDôlL ,,dZtD,,D;;;`a0dt,tu, tudDTe,,dttd;<<`^|DlL ,,dtD,dt,9dDà l ,9Zdttu, <;;`^t,zdDà l ,*dt,zdDà l{ ,9Zdtt%dt, <;<<`dZ;0 H H$$dt OxZD ,du,XdvtudvZDu,d<;;`^KP_Du,dyDu,tdDlLZ ,s,zdtDZ,i,t ,;::`Y1}dt ,dt ,dt ,dt ,dt ,dt ,dt ,dt d:$$`Ot,dt ,dt ,dt ,dt $&&`\@ P Cm& WESCANc@ESCAN-00.FAD .FSB .FMP .FDV ..FCM.ITOI.RTOI .ENTR.GFTN4$FILES(2,9)  PROGRAM DEF30  INTEGER FTYPE,IFBUF(256) REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LERR,NENT,IXREC  COMMON ILEN,KLEN,LLEN,KWORD,IFLD(1024),IYFLD,IZFLD! COMMON IFBIT,ZVAL,CVAL,JREAD,IN(80),INB(80),LINE,IPAGE,LISN ! COMMON NBASE,JBASE,IALPH(37),IAST,IDOLR,ISHRP,IUNDR,IQUOT COMMON ICOLN,IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV  COMMON IRPAR,ILPAR,IATT(10),JATT(5),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) "" COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,ISUB,LTAB "! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,INDET,ISYM! COMMON MCNT,MXMAC,MSREC,NARG,IAMP,LTIME(15)  COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128) DIMENSION IFLNM(10)  ICRD = 5 IPRT = 6 IDFLE = 9  MCFLE = 8  IXFLE = 7  KTERM = 1  CALL LGBUF(IFBUF,256)  CALL RHPAR(1,IFLNM,20) CALL ABREG(IA,IB)  WRITE(1,'("IA AND IB = ",I5,5X,I5)') IA,IB WRITE(1,190)(IFLNM(I),I=1,10)  190 FORMAT(10(X,K6))  OPEN (UNIT=ICRD,FILE=IFLNM,IOSTAT=IERR,ERR=9995) WRITE(1,200) 200 FORMAT("MADE IT")  GOTO 9999995 WRITE (1,'("OPEN ERROR ON SOURCE FILE:",I5)') IERR STOP 55 999  DEF30c@DEF303@Jj.NFOP.NFCL.NFIN.NFCN@jB.DNOP.DNCL.DNIN.DNCN@~B.DSOP.DSCL.DSIN.DSCN$$ %.EIO..IIO..DTA..FSTP .IOOP .EXIT.FFRW .FIOIABREGRHPARLGBUF$11`\ 3dtdtdtdtdttF $K$O1`MB ("IA AND IB = ",I5,5X,I5) `TOl0Z@dlq `E=edDti `BJct`J!jdtD,ed `E@(10(X,K6)) ))`[vIt $$ dX,l$d) `F("MADE IT") `A/n,`Q}"("OPEN ERROR ON SOURCE FILE:",I5) `P6,l1dd 99`fk" -  jNUpSEvUN`|EX!D   943,`Q}"("OPEN ERROR ON SOURCE FILE:",@@H(,I2,1H)) GO TO 9900 5200 WRITE(IPRT,5210) 5210 FORMAT(8X,16H***MISSING LABEL) GO TO 9900 5300 WRITE(IPRT,5310) 5310 FORMAT(8X,18H***DUPLICATE LABEL) GO TO 9900 5400 WRITE(IPRT,5410) 5410 FORMAT(8X,24H***SYMBOL TABLE OVERFLOW) GO TO 9900 5500 WRITE(IPRT,5510) 5510 FORMAT(8X,23H***MACRO TABLE OVERFLOW) 9900 RETURN END 00) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICRdt ,cdt ,cdt ,cd<$$`OVt ,cdt ,cdt ,cdt ,cdt -$((`^@ @@( m(-- %MODFYc@*MODFY J.FAD .FSB .FMP .FDV ..FCM .ENTR.GOTOIFIX FLOAT<<`d  t dt, t,$ dD,),<<<`g?$ dD,섒116$Ո,: 6d,X td<<<`m ^K   ZtdB 0 <<<`c{ x",0€Љ,Dv,tvP,Dv,,tv<;;`h d,2td 0ʀtd;;;`i0 ,숀'Ztd0,,;`MdtD ,t ,d t `L@@8l LOUT c@LOUT 9 .EIO..IIO..IAY..DTA..ENTR.GOTO.EXITMESS AHEX ;;`^I88dtdtttdDԢldt¢D,DT,[dT,[d;;;`^GVVT,[d,__'tdD,ud,dT,l,ud,d!,ud;22`^ tZ,dtdZD,~,dl12ird2++``(A1,50A1,15A2,6H PAGE ,I4,/1X,4HLINE,4X,4HADDR,4X,9HSTATEMENT,/)+::`adtdt80&t~dtd̶T,,dtödl 1:`F9dDt `Bdt `H(1dtD, `E,ŶdDt `Bt`KʢdtDP,d`Nd (1X,I4,2X,6A1,2X,A1,1X,80A1),,`V#բd,ddZ,dd,ddtdDy,dl.$, `E{dDt `Bt`KdtDyP,d`H.(17X,6(8A1,1X)) `JZ,ddtdl. `EԳ dDt  `Bt&&`TNdtD, dZdDy,5dl.1& `E$dDt( `B"dt ""`R)dtDyP,$d,ddl$.I" `E=dDtA `B ;dt `PvyBdtD,=ddl. a `EITdDtX `B#Rdt <<``YYdtDyP,Tddtdb,td,udtd,u, wd<::`^mya, dZ,d!t!d˶T,,ndD Z,dT,dtd:$$`S.tt,dZD,~dl6@d$`B6(1X)((`SDtd,,dt,ttPdt9(`Q= a1(l99 OUT 9c@|OUT -.FAD .FSB FLOATINOUTAHEX <<`a)td,+,md,墆d,P',ft!d!D6l!L5d!<;;`^'PD5ld!Zt!D0, dNt)dt"t:'-d3t$d4t!d!D5l$ L7;;;`^QDEd$t$d!Zt!D1,>dDt+dUt0d"tW2t!d!D5l!L6Pd!t!;;;`_0cDy,Y):',d,t!d!D6l!L5d!D5ld!t!D0,r;;;`cLdt)dyt*d,t#dt"tdyq' 'Pt!d!@D8€%;<<`^Dw&%-d3t$d#PD5l$ L7Zd#t#d$t$D/,d#D5lUd*D#t#d!t!<;;`_7âD.,dDt,dDt3dDt:$2'bt!d!D5 l!L6d!Pt!Dy,;<<`]&ⶊd"t,t!d!D5ld!Pt!Dy,dyt)dyt*t,d,t!d!<::`^UD5le ,d!D5lD ,d!D5lD,d!D5lEd!t!XDy,: `D9$P2 `R'@@(l$ SYMTAc@"SYMTAe ^j.ITOI.EIO..IIO..DTA.ERR0 .EXITINOUT XREFTAHEX  `F#.(A E X D S M ;;`_=eeteD t:tdttd,zZ,d!,d!t!dl 2;`Hq&8!d`Ut-2(34H CROSS REFERENCE OVERFLOW AT LINE ,I5)<<`^Pdtt!tttdDDlZdtD,dtۢD,dt<;;`_(ZttdZ,td D,tdDܶDlL , ,,;::`^8&ɢdtDZ,tdܴZDl LLdtZD,dPtdt:::`^ړD,d,td,,dD dtZttdttd:<<`^tdDЁtdZ,dDDl,+dDlLtd|Z<;;`_#dDDlPL d D,ClЁtdtD ,dtD;<<`_4B,dD td,RlZDt,Zlڀ#DtdD,yd ,n<<<`_4aZdD Th,g,ndD Th,m,n,d@D 鄚yd涀DlLd<22`[,dDZ,dtdZD,,dlG1d2`BG(A1)`Hdtdl$I`GUdDDt`Bt`L<dtD,dDt`GdDDt€ `Bdt `F^âdtD,`Bt`KFɢdtDP,d`NYI(1X,4(8A1,1X,A1,1X,7A1,2X)) <<`_TԢd,,d,d",ߴZ,d#,,焐tttzd #D"tߠd <<<`_ZD,,'t!l tPtttd!t 4Pd!t!tdDtdޠD<<<`^. lLdPtD, dDtdPtD,d td D,0dt<;;`^0tdDlZ ,EdtdtdDlLdDtD,2d ;<<`\wNDtd,tdDt޴ZdD,`dݶDDtdPtdD,vdl<`RjGqrddtdl$W`F~dDt`B|t`IdtD,~.`F3dDt `Bdt `FdtD, `E%dDt `Bdt `KdtDP,d`NmW(1X,8A1,2X,A1,3X,7A1,6X,8I6);;`]#dDtdDZtd,,tdDldtPD,PtdD;`MiʢldtۢD,dt.,Ue--`b7 @&ym$-,'gmC-ee ,*XREFTsc@1XREFT ;A.ENTRINOUT ;;``ՕBd!,hd$D#,P,d D",T,dt!,hl tn;<<`^h` tktotmdkDmtldmDr llLrdmPtmD,%d!t:6qdkDtkd!<;;`^>t!dotoZDn,#,hd#t#t"d$D#,d"t"d"Drld";`Nk\t"d"DrLptj`tPj`CyUp AHEX c@AHEX  .FAD .FSB .FMP .FDV ..FCM.ENTRIFIX FLOAT;;`_B,Z,dtdtdt׶dt, d,),1t;;;``"dtdtdt,1dtdⶊtdtt߉ ݈ߖtd ݈;<<`gB0ߐtdPttdttӴdD<<<`^IiځtdDlLtd|ZҠl؂tآdt,dDlL<::`^,dDlLZdtdPtDZ,edtD,a,:<<``d,DhZDttdDldtD,,tӠd<`LŶDlxdtD,`R*@ lC MCCALxc@MCCALi.FDV IFIX FLOATMSCAN<<``tt ZtAdnDZ,Cd,XdmD Al@,XdtdDs<;;`]h ldtdDsldtdDst\Zi\dtdDst\d$D\;;;`_ =dtdtDtdtDtdDwrtclcqt]dq]Dc;::`^a\tfdftbttd@DvgZtdf,p,dtedDe,dt:<<``(zdDs $flDtddeDul~ ,ddDu l} ,deteDdtdde<<<`^Ddt^d^,dD^liL Z@,IdeZtcdtdDslcLudctcDd<<<`^e,dtDbtbdb,,dD,dtPdkD D,p,Idb,<;;`^kִZ,d],,GPdkD D,ItcdtdDs dctcDb,d],;<<`^Z,GdtdZDslndjD ZD,IdtdDs ZdtdPDslhd<;;`^_tdDslhdpt^d#t`d#Zt#tal`^t_dtdDsl_Lt;;;`_0D_^D`t`l^oZt^dataDiZ, D]t]d],tdtd;`MiOvidDsd,X,Zdlt `QW g@ (Clg MCDEFc@MCDEFINOUTOPCODMSCANSYMBL;;`a)ttPtttttPAdD,KAdD ,Id;;;`^!D D,FdttآdtdD lLdPtD,+dtd;<<`^?tdDT,,Kdt,Kdtd,dt,&UdtPtt<;;`^^y]ttdD lLdtD,`dtdDT,d,|zd;<<`^X{t~dT ,,dtdT,P,d,tdDlLdt<::`^}D,,dPtdtttdtdttdT,d:99`\T,,RtZtDtԢdDtdDtdբDԀ$Dt9`R"( 67m MCREF.c@%MCREFPlINOUT::`^PPtPttdt#&\*d#tt!d!D,l!PL+d!Zt!D$,ad:;;`]WnD,t"d"tDt!d'D",d",Zd&D",d!t!d!D-,d!;;;`^1D-D),d&D"t"d!t!d!D-,,d!D-Z,,D"t"d";;;`]U,d!tdt d t d D-,,Pd D-D)P,dtD t d ;::`^!.ƢD,dD  DD,dtdD+lL-ZdtdPtD :;;`]#HZ,dtdD,l ,m,dD+lZL,d%D,d%DP,dt;88`Z.dt,mdtdtdPD+ldPtD$, ڬPd(tdt,8`J}h$ PP MSCANDc@MSCAN ;9.ENTRSYMBL <<``!BtwdD=l~Z ,d:, dD=Ztt dZD,-dD<;;`^ ,-dD,-dD,B,2,-,9d:,-dwtwdtd;<<`]>D,,-t0d0DCD,L,9d0t0D9,DdT,9t0dD=l0LB<;;`^3j[  ,aZ,d0t0D8,Wd ,,d5Pt5D,;<<`^ҴP,d0t0,,<D2,,D2t3d3D=lZ ,d3t2dD=l<;;`]b@ ,dtDt1d0t/d2t0d0D=l/d0t0ZD1,,$KXer$$d6t44:`QFR$'dl531d3`TC(8X,21H***ILLEGAL DIRECTIVE ,1H(,I2,1H))`M ,1dl5&83d3`S(8X,18H***ARGUMENT ERROR ,1H(,I2,1H)) `M,1dl5'&83 d3`R'(8X,16H***SYNTAX ERROR ,1H(,I2,1H)) `MC#,1dl59&83-d3`R9(8X,16H***FORMAT ERROR ,1H(,I2,1H)) `Mo0,1dl5K&83:d3`TGK(8X,20H***UNDEFINED SYMBOL ,1H(,I2,1H)) `Mɝ=,1dl5_&83Gd3!!`Xq_(8X,28H***ILLEGAL MICROWORD LENGTH ,1H(,I2,1H)) !`MJ,1dl5w&83Td3`V̀w(8X,24H***ILLEGAL FIELD LENGTH ,1H(,I2,1H)) `MW,1dl5&83ad3`S-(8X,19H***ATTRIBUTE ERROR ,1H(,I2,1H))`M,d,1dl5&83nd3`V(8X,25H***FIELD LENGTH CONFLICT ,1H(,I2,1H))`M\q,1dl5&83{d3`S!(8X,19H***VALUE TOO LARGE ,1H(,I2,1H))`Mʉ~,1dl5&83d3`R(8X,17H***ILLEGAL VALUE ,1H(,I2,1H))`Mʵ,1dl5&83d3`TH(8X,21H***ILLEGAL CHARACTER ,1H(,I2,1H))`Kc,1dl5&P3d3`MC(8X,17H*@@**TABLE OVERFLOW) `K,1dl5&P3d3`Q(28H***ILLEGAL CONTINUATION LINE) `M-,1dl5 &83d3`U (8X,22H***ILLEGAL FIELD TYPE ,1H(,I2,1H)) `M\,1dl5"&83d3""`YN"(8X,31H***ADDRESS NOT ON CURRENT PAGE ,1H(,I2,1H))"`Mˏȶ,1dl5;&83d3`Rօ;(8X,17H***OVERLAY ERROR ,1H(,I2,1H))`M˻ն,1dl5M&83d3`T>M(8X,20H***NO DEFAULT VALUE ,1H(,I2,1H)) `Ki,1dl5a&P3d3`Qa(28H ***INVALID DEFINITION FIELD) `K,1dl5r&P3d3`T~r(35H ***SYMBOL OR FIELD TABLE TOO SMALL)`M,1dl5&83#d3`Qwj(8X,15H***LABEL ERROR ,1H(,I2,1H))`K,1dl5&P3 d3`L(8X,16H***MISSING LABEL)`K,1dl5&P3d3`M(8X,18H***DUPLICATE LABEL)`K*,1dl5&P3#d3`P(8X,24H***SYMBOL TABLE OVERFLOW)`KP&,1dl5&P3.d3`P(8X,23H***MACRO TABLE OVERFLOW) `B*D1`Bce5 `K*,1dl5&P3#d3`P(8X,24H***SYMBOL TABLE OVERFLOW)`KP&,1dl5&P3.d3`P(8X,23H***MACRO TABLE OVERFLOW  PRM29 c@PRM29@Jj.NFOP.NFCL.NFIN.NFCN@jB.DNOP.DNCL.DNIN.DNCN@~B.DSOP.DSCL.DSIN.DSCN<<.FAD .FSB .FDV .EIO..IIO..DTA..GOTO .FSTP.IOOPIFIX FLOAT.EXIT.FFRW.FIOIMESS OUT SCAN INOUTOUTST<ZMAP EQUAT INIT LGBUF`JVM L P I H F S Q O B 55`d#o& `f4Xdf,G6d l{ &Pede5`V3 (38H META-ASSEMBLER PROM FORMATTER VER 5.0) `Jd l{ e2de`Hm6 (/,9H OPTIONS?) ::`^tgdgD ZdgtgD,dtgdgPD dgPtgD,tgdgD :<<`_Rϴ dgD dgtgD,˄tgdgDl ,,dgZtgD,, dg<;;`^_LtgtgdgDlgL ,,dgZtgD,, dgD dgZtgAdDg;;;`_ Z,dDgtu u$rrdyt\,t_dt{dgDT,(,dgtg;<<`]K+ZdgDT,8ZdgDT,6,dyt_dgtgdgDT,A,dgtg Fdf<;;``HP,dL,1~ L,ZL tzdgDT,\,dgtg adf,dL,;;;``F@h1~ L,ZL t{, dgD dgDT,|,dgtg df,dL,;;;`a71~ L,ZL trdgDT,,dgtg df,dL,~ L,d;::`^3Tu,drDtZL ,drDtLP Adg DR, ZdgDT,:;;`]JǴZdgDT,ʹZ,dgtg,dgDl ,dgtgdgto df,d|t;;;`^o,dotg df,dZtdgtgdgDl ,dgDl ,, d;;;`^t},dt}4Zd6,dt.d*tg4Zydgt*dZD,TdZD,Td;;;`bXK tg #df,Td|t.dD.,T .df0,TLb/D.h ZytVlUЂVtC;66`aB Ddf,TL |,TL4ZdD.,V,YYd l{(e`de6`Jf((/,13H DON'T CARES?)<<`_*cf hdf,nt},uD|,s,{dt}wd6,},Yd|t1todyT\,5<`N]Zt9t2d l{2e@de`N2(/,21H ENTER PROM WIDTH(S)?);;`` df,5dDT,5dt}do,dDT,d|P,,7D.h;<<`^^b|ttdDt,/dtt2tgdgDl|dgDl9 d9D|t9dgtgDt,<;;`^δZdD|,2,<ZtotsdZDT,d|Ztsds,,7dgtg df,5d;<<`]SDT,5d|,,7d2DsD,/dD|,2tgd2t2d2Dl|d2Dl9 <;;`^~m d9D|t9dgPtgDsZ,dgtgdZDT,dPt}d.D9,7d2D;::`^'D9tgd.Dg,<,7dt},7dt},7t}9d6,}tot3:vNd :`IDEl{@eK@de`N@(/,21H ENTER PROM DEPTH(S)?);;``-NQ Sdf,dDT,dt}do,dDT,d|,i,d|`P;;;`c\np/ xPZx ttdDt,dtt3tgdgDl|Zdg@Dt NqNLN;::`^ǗdgtgDt,, totsdDT,d|tsds,,dgtg df:<<`^&bP,dDTZ,dL,,d3DsD,tgd3t3d3DtшL d3@D<<<`cέ͡tшN0NLtPNdgtgDs,dgPtgdDT,Qdt}NZ /,d3<::`c<=DL0N LaLL /, ,dt},t} d6,NUDEX<**`]` NDI`RECTXSC6RATCH m{lW@* dINIT c@INIT <<`i0 1 2 3 4 5 6 7 8 9 A B C D E F A B C D F E O N R X , * $ Z= - t t dtt<<<`])dtdtdtdtdtPttt*dt+dt,:l+,t-Pt2t3<;;`a/Ft.`/J:4dtydtRt~Zt1t8dtUt?t6dtd;;;`Ygtdtdtdtdtdtdtdtdtdtdtdtdt;;;`]dtdtdtdtt dD dtD,tdD Pdt;''`SD,tdDlLZdtDP, '`RHmh{  INOUT%c@,INOUT4.EIO..IIO..IAY..BIO..DTA..ENTR.GOTO.EXIT `FOBFLE IMFLE `S$$O$ dl. `Eё#dD$t' `B!t`I,(dtD!@,#d`C(80A1)`KM1tgd6,Mdl  J `E>dD$tB `B<t`JCdtD!,>d `E, (1X,80A1) ((`TtMd"td,d D.,[t,qdln( `EcdD$tg `Bat`O0hdtDJ,cddl `E=ydD$t} `Bwdt 44`[ ~dtD.,ydZ,dtd D.,t,dl$4 `EҁdD$t `Bt`O0dtDJ,ddl `EҭdD$t `B$dt ;;`c7dtD.,ddttgl@؉dl$ @d;11`]ٴl@6dl&0 @dڬdtdl1 `E:dD#t `BVt11`YdtD<P,dPdtЬd"tdZ,qdt,1`Jc 01!6A >SCAN c@SCAN .FAD .FSB .FMP IFIX FLOAT<<`aH ttfLdt|dt dgD l ,"dgtgdRDg,<<<`^!,dgtdgPtgdRDg,DdgDtTdDT,DdDT,DdDT,D<<<`_d?dDT,$Dgtd,K,dDlZ ,[dtDtdt<;;`bɰ^tdDlL  ,iP,qdtD,_,0DPpLPLd;**`YctD,]L,tfLP,rLt|*`Ns@ @"@ Pu0h {MAP c@wMAP .FAD .EIO..IIO..DTA..EXITAHEX <<`]Qttdt dDH,"tdHt dtdDldD P,Gdt<<<`^2d t dD l LdD ,jdtdDl,jl Ztd td<;;`^4DPZDtdtdtdDlLdtdDlLZdtd; `PnPDld t DI,$d l `E0d Dt `B~t `K}d t DP,d `JjN(//,8X,4HPC ,80A1) <<`]dHt dIt t dt dD ,d t Zd Dt dt ,l "t d <;;`bYUDt d L t`"Dt d Dt d @FD4Ld l  ;`A  `EҶd Dt `B"t `Fעd t D, `E߶d Dt `B/t `Fd t D,`B<  `BCd t `KLd t D P,d `K (1X,3A1,3X,4A1,20(I4))!!`Od D2t d D2Pt d t D3,!`Jx  h WORD Kc@ WORD s.FAD .FMP .FDV ..FCMIFIX FLOAT<<`dtDD0h2t>dCLd>@DJLEtBDBtZNd>@DJt)<::``wq$qNL2Ѐ)tEdEbVtED> Z2DDtDZdDDItFdDDHDFDGtG: `FE6@{`  OUT c@vOUT !! .FAD .FMP .FDV ..FCMIFIX FLOATPOUT LOUT INOUTWORD !;;`att8Xtht7" DFhЁytdbyDFt:d ZyDGt;d:D;;;;`[!tdtAd D,),9dtAZd D,0,9dtAd DZ,7,9tAdBt;;;`c<$Z>tdtdEDtdDLdL,R L"Dytt;;;`cs_dtPD,[Ztdtd8DtL2dD0NpN;<<`bWaLLdPtDyZ,jdtdtd;D,dVD,Ed.<::`^"DGtd,,tdtdDl1dtDP,D=, d?:<<`_@bZ,, 4Zd8,dhthd>DPDh,t8,dEDVtEDEDVDU<11`X2,,>tEdBtBd@DB,,9d PtdUtEPt,1`Og@@  POUT xc@POUT  T.INOUTTAPEC ;;`a.@ZN P tXD7,F& hdDt_dstet`l_Ёetddd"eD_t_ler;<<``u!Zteddtdd`DtldLud`t`Dj,dot<60n9hd\,=,@@4fdp<<<`] XAt7tSt@D`ƀ4PLGtOdOD\lOL_dOtODX,Idh<<<`_KWL[d[tWtOdWtWdWD\lOL_dOtODX,_d:D;tTd:tP<;;`^vZtOdWtWdPZD^tUdWD\lUL]dPtPdOtODT,wtOdWtW;;;``jdWD\ldOtODW,PdYDT,3DTh[tSd;lSP @tPtO;;;`]5gt|tRtQd:DP,´ZdPD^tQd|D|DQt|dPZtPdRtRDX,d|;<<`^;ѴZt|dWtWdWD\l|L]dOtODSZ,tOdWtWdWD\lZdOtODW<<<`a)>P,DThZtSd;tMdZ"SDMtPtOt|tRtQd:DP,dP<<<`]tD^tQd|D|DQt|dPtPdRtRDWZ,d|t|dWtWdWD\l|PL]dO<`L6M-PtODS,dlV$NH `E,;dOD\t? `B9tO`K@dOtODWP,;dN`L (1X,4A1,2X,4A1,3X,80A1) `B&K`KIV  Yh` EQUATc@.EQUATD.ITOI.EIO..IIO..IAY..DTA.ERR0 .IOOP.EXIT<<`a8tdgtڅ,D0td-,D+td,D+tttftt<;;`]1PtdRDZ,8,<Dtڶ,JdDtTdDT,JdDT,OPdtTD;::`^"NtD,\ZttdTP,\tZtdtdPDlTdTPtTdT,p:<<``lZtdTtTlTڂtTdZD,~dTDtTp,DTZtdtdt<<<`_C?ZD-,2d,,0tݢd,,dDtdDldtޠD<((`XX,0t,$ Pd,dt,(`PJ"OPEN ERROR:",I5," ON FILE:",4A2%%`Uöd l0bdtfdtg%&&`W"NU`SEUN EX ma& TAPECTc@'TAPEC ;A.ENTRINOUT ;;`aPH$ A 0 0 0 0 , 4ZdDtLdDtKdDtIP,,,@tJdJDS;;;`]!lLdJtJDN,dQt<,DdKttJdJDSlJLRdJtJDM,0dP;`K,">t<,DdItt<GO `G M,  AHEX ]c@AHEX =.FAD .FSB .FMP .FDV ..FCMIFIX FLOAT<<`htXPdL,@LV,@LRtNR2PtOdO 8PP2PR<;;``( RPTPdOtOdND[lOL\ZdNtNDZP,tNdND[ldN;`FNHPtNDZ,B`I(T@ @"@h MESS Oc@AMESS }P.EIO..DTA..GOTO.EXIT,,`]ytd}$$)4?d lNM”@dM,`T{(34H SYNTAX ERROR OR ILLEGAL CHARACTER) `K|JŶ,Id lN&PMdM`PC(27H INVALID OBJECT FILE HEADER)`K|pж,Id lN$&PMdM`I\$(12H VALUE ERROR) `K|۶,Id lN-&PMdM`NA-(22H TOO MANY PROM COLUMNS) `K|,Id lN;&PMdM`Na;(22H MICROWORD WIDTH ERROR) `K|,Id lNI&PMdM`LNI(19H TOO MANY PROM ROWS)`K|,Id lNU&PMdM`I_U(12H DEPTH ERROR) `K},Id lN^&PMdM`M^(21H INVALID OBJECT INPUT)`K};,Id lNk&PMdM`Jxk(15H INVALID OPTION)`K}[,Id lNu&PM%dM`Ku(16H INVALID ADDRESS) `K}|(,Id lN&PM0dM`QF(29H MAP VALUE TOO LARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FOUND)`K}>,Id lN&PMFdM`MVu(20H BIT MAPPING OVERLAP)  `D IPt~ `AaN ARGE OR SMALL)`K}3,Id lN&PM;dM`J;(15H FILE NOT FOat`ad`a`add,tt6DHt`a L|`a6Ld<<,`a L|`a d`a  @a`,銬`a M`,銬`a  |`a d`a |`a6Leat,  e,-'xa$a-a'a.e,u+e+6a33u,4u-e5mFaEeIu+-a.e[-PaO-SxaSa\-la]aWzaTa_{a]u[{a^u\-J|aTa__ ,M-}a|-paema-paa~abjbUbWb?flbVb?bXf9b?bZf:b?b\~Ab;A. b?b^~A Ab?b`b?bb.2b?b^fmb[.2b?b^~A A.2b?b^fq.2b?b^b?bd~AA.2b?b^~A A.2b?b^fmb[b?bbfmb[b?bf.2b?b^~A A.2.2f9Vp-Vr.Vs.Vt-Vu-Vv-Vw-Vx-.b?b=b=EbBBv9Cv:Db;bhb=- x b?aa04b|b.bbzb}b.y|b}bbb.bbzbb.|bbbb>.!bb>."bbڊ~ψbϮbv.bbc( .똚bc&c / c ...bc'c / c cc   cw .]_c FALSE TRUEkcfcv/6ge/;wege/AgfGzwhghohOfAH/O /djwigxceGw@6GiHokOyk?i/b?j/Qncklwemwf/0c* wccc% ?0]]Z]Yb@ ]v }]d]ca_cn 777j^]g44Q_===4;]hA^>A_l]b6R;a][]\]]b@?@@b]mr@Ab@BAc @!>\x1]_]ea6bEb2_]^ ]C]zC]s]|]tCBC(]yH#H$]a]`G%]wFX7E6]~XEDzL''PwP:PDP!P{D8TP PONNX0TLTMTTTQTVTTOTT[TTRRxPZR<`]}]{]uIX8XaX"]oXbXc]fLKMs]xc{]n]p]q]rWZ R]W\\\\\*\}\\}Z\\33\~\\\a\\\h[ZBaAY6 [XV?VKab#]o3]p]n]u]t_]r]sc\G\J\\KaLYhvTzUYcc`{~n_ ST` [kgj!ghilmb$mlmmmw#&;&>.S22N~Њ22f2fn2v-g3BK22x o6 wzo6 w{33z3{wqo6wto6wu3k3v3n3xwrwsgs/@gqAGr/@3x36guGrGGHwz3v36gtGrGGHWz/9/=grwr/?ws/gs/\3x36guGrGGHwz3v36gtGrGGHGzwj/ho6 wzo6 Gzwjgj~3|g|o3g}o3gwj.3m3p3k3nwo6 G/o6GGGwъ336Oыwъ6GHgыgw/gG/̊6GHggw/3go3/33 j//3/33?/FORWARD EXTERNALtSm4Z4z4y4w4xd{@|k ,Lk,Q,8tltUl|6DUHl}6tmDUHdm- 66.66t6v6g6i6i6w~k k6i6y~k k6i6{6i6}6i66i66i6~k k6g6e6el6l66e.) 6gs.66.vv6..mW666666676.Ƙm\6666666676l66⊬66~爀6犬67~爀6ff.66:OUz66{6舀6.|66 26wwmz777777Ԙn7<777™7777//%/+7*777/070777ۈ7779Q77g777 77:777W77Y/]/u77777777 /777777 77 7777 777://7/wg//77:OUz77/|77ǯ2 | 7O :8, 8*8, /8,8*8,88|.:.8,8:8,8* ,, 8*8:|.:.,4 8/8&:OUz8!8/|8!8// :8r 8t8r ,J,b8r88p8r8|v8tv8r8t8p8r,D8t:,| 8w8l:OUz8g8w,<|8g8ww m::::n8::::g @~ ,Nvn8<:::m::::n8::::8:::~ ,.v 8::8 ,O vn8<:::m:::::n8::::8::: : : ,O .Pvv -- - 6-v-v9-8m:::::g @~ ,N-8v-1-4v-6v98 :9>f-B-G :-B:v9T::v9]::-m::;:9i:; :;:: -v-:;-}-fv 9:;:@---9:9/9f--: --:; --:;;~:::n9<:::m(:::;:n9::::g@~ ,Nvm(:::;:n9<:::ƙ9:::-.-9n9<:::n9:::g@~ ,NvƘn:<:::˘n::::Иm-::::n:'::::ՙ:,:::.OvƘn:8<:::˘n:>:::Иm2::::n:J::::ՙ:O:::,vƘ:Y:; .~:]n:c<:::g@~ ,NvИn:y<:::ՙ:~:;:w:~Ј:.S::OUz::ߘ{:o:::ژ{:v,|::߮2w y :::::::N;N;/!/);$N/'/)N;;; /6/;;/=/;;/_;;;;Nމ;;;;Z; NމN/~;;;;xw g/~;;/y/~;;/@@;;;;xw ;;;/0?/   //Șmq<===;<=#=mt<====;<=#=/mv<===n;<<=<;<=<;<=BNm}<===n< <<=<<<=<,$m~<== =<<=%N= NيN= t <.<=N= |舀Nى芬N== |舀Nى=>}Nމ=>==k= NމN-=>=>xu =>=-HN=--=n f >  =슮U=u= --e-銮=N---u= -͊=> =U}=-܊=> ==> }=-舀==슬=> =-=-)   vN\@]?~)>?~?N .".gm ?~????oN? ,O.c.I.R .R*+.RN?.9.?.E.`N?.`N? >gN?,>i-,>l.,>o,>r,>u/,>x0,>{1,>~2,>3 N.>/q,>(..>???N?.>???N?4NщNሀNщ?>Q??g???B?? ??????(?? ?? ??????//=? ??? ??????5ww}o6G}Hw?6G}Hg?}?/?? ????6/E?? ???????????aN /e/q7?g?N??Nщaogċ??|?.  ) .  B N?~O QvN89:?˯?/89?/ϙ;???????Nщ\@ ]@??/ FNt @@@<@<,tt@ @t@z,UN tt@-@t@{,4N@|@9@@~@@r|tNщtU@u@r@|t@utU|t@rt@Wtt@`@t@ ,Ltt@q@t@NȬwwS@CSC/G@wS@CSC-5wSwRo6GRHo6wTGRHgT?R?S,Am CUCCCCg@S ,OSwZ A#CZC -'/ A)wZA2CZC/==A--˜m FdFFFFnM~e ,Ne-EFFFF`FfFf6f6FFfF~h hFfFFfF-刀NщFfFfF-يFfF--FfF-FfFF`FfF~cF` -.\vb։F^F^ -.Dfb.DF^@6n6FF`6f6F..<..9NF~fF^fvb.CF^FF^-fb.\F`F~f։fF`FfcF`ֈF`Ԯq>q-}Invalid/Duplicate External Name:   d!FdF`FivꈀfF舀F ..刀FF늬FFH`.f.NJFFf.֊FFF튬FF~F.vꈀFF抬FFF.>. Nwwg GwOPQg@P??.?.)\@ ]GdGSGS /*/RGSGUGUGdWG7GWGf/KfG@G[GgGgGhGUGiWhGIWGdpGKGUGS/$X?X/Undefined Label: RSQNމ]])GyTG{ogGUGXGNމOQ OOQ NޯGgoG/k|GډG爀G //ΊGG g//NJGGVGGGGG爀G/ډG,GwꊬGGgGGG ?/O O O O O O<Wd,pH, |g < , H H) H+ |H|H6I\fH=II]I]I^ H? |HI_HHIa HHHIc|H HHaHI\fHhII\I\I^ Hj |HIa|HvIefH}I!I\I\I^ H |HI_|HIefHI)IfIfI^ H |HIc}HIefHI5IgIgI^ H }HIhIHIj IIHII\fHI?I\I\I^ Hʊ }HIj}HIefHIGIgIgI^ Hߊ }HIh}HIefHIQIlIlI^ H I t,# Source lines. Words of Code. Words of Body. Words of Prolog/Epilog. Words of Constants. Words of Data. Words of Variables. Words of Temporaries. >-q-tM-X-pIypI{pI}eIJJژfIJJJJ IJJJ爀 O O O O O>--X-ΘpIpIpIeIJJژfIJJJJ IJJJYIIJJJJJJJJߘgIfIIJJJJܘfIIJJJܘgI IJJJZIIJJޮ>-mTOT_FILEStatistics: Total Statistics: "STATSFile  ??OJJӀI[\O| N] NK>//$,K3^K O_KK`aK\bO|cKdK^b\O|/eK&fK(/o g K4O(O}NO~/;/Dg KDO(OgKMO(O&gKTO(O/X&"gK_O(O/c"$gKjO(O/n$/rhKrNșiKvOO\@ ]Og (j>/#KO/kKlKOONOgKO(O/cKmKj/NщO)O)Og KO(O#KO~/ݙlKOOnKO)O//ؙcKʈ //6/؊OmKj/O)O6/O)O//dK^jo>/pKqKN>/r*O&sLM,1tL O *O&OO (Og(6,0u*O&vL(O *O&O,;wL3O *O&Om O+OOOOg@0 ,O0,g&"$vogO|LaWLfNON,;m O1OOOOg@6 ,O6w7LO7ONȈN ,,xLOfLOmOOON׈O8O8@oOKLO:O~pLNON,m +O=OOOnLO=OOBg@7 ,O7,xy]fW,- a Nm 2O:OOO~OoM= ,O=-**O&ogO|dL^ogO|O *O&OM-*WwGMOGO*O&m -񟙠RR! R*VVឱR3.ܘmVVVVVVVVVVVVVV@ ,ɡ._є񤘗R]VV.ܘmVVVVVVVVVV@ ,ɤ.ѐ񦘗RVV.ܘmVVVVVVVVVVVVVVVVVVV@ ,ɦ.. RVV.፡ RVV.ܘmVWVWWWWWWWWWW @ ,ɨ.፡񪘗RVVR_W &񪘗RVW /&6H6H᱋.񲩫`񪘗SVW /*6H6Hᵋ/񶩫񃩫VW /=/=VW/<񪘗SCVV/G멫ሐtss6/S񸩫SX_W "`񪘗SaVW ṡ񪘗SiVW /6H6Hị/r񹩫S_W $`񪘗SVW /񼩫S VW//VW/񪘗SVV/񽩫V/VW/񪘗SVV`񪘗SVW /񾩫ῡ񪘗SVW /񪘗SVW/񟩫o`񪘗SVW /©`񪘗TVW ,6'/vЙ T VW TxW6.VW,vИT VV,$fk.VW,+,1VW,0vИT7VV,;f.fX.f.f.X,LTL.`'/6vИTUVW ,,]6,^vИTcVW ,W1,i,uo)6g%6W,f'/vИT|VV,.}.f.f.TW ,g@vvo%6FHo*6vFHfԋ>>,.V,VW,vИTVVv`'/vИTVW vf,f.`'/vИTVW ,,g0M6,MW0,,xTW ,xTW.f.`'/vИTVW .`'/vИTVW --M-MW/-- xU W -xUW.gAvvo%6FHo+6vFHfՋ>>-.f.f.gAvvo%6FHo,6vFHf֋>>-0.V-LVW-KvИURVV-[f.fr.f-e6'/-fvИUkVW-of%.VW-v-|VW-{vИUVV-fg>G-vfG=@--fG=-fGG-G;vf'/vЂOF6׀Og0.xVW g>G-vf.g5.g6fGة  ),-0  %( "&'*+ !$#.J}VVVV  $FNO=>?א ׉W /U/W@oWWaWWwg/qאW׉ W/g/u/}WWW/WWW/OW׏W/HQWӈډӘWWWW߈ډWԊW W//]/ŊWWg/͙,WwӊWWgWWW/s/eWWWW+/ mL6eM6Y<u,Xڂ@mNY=BXY-YOXY>6 A@mY-YBYCY>Y@Y?YAYBX-Y-YQA@X ,7,HXYDAu- XHY-YFXYDmM6eL6Y<e,eT\@]X܈X ,qeT\@]}-Xډ-,ɈX܉XފXڂ@mNY=X܂@mSY=XY-Y0td,XYGX,d,,XYIX,xXYK X XވX ,qX ,,d,XYG}-Xډ-,ɊXYI}-Xډ-XYG}- -XYI}- -4Y33X, jeXQY-QXY0 v f*[@]Z f -Z -p-Z @n'ZY|Z%Z v f -Z Z ,N(-v -@&)v YZ ZZ ZZ -f --Z ZZ -Z Z Z -gf --Zf A-ŠZ Z"f &)@.xYZ$f-)-ԈNZ .f/)-ވLZ .f,)-舀HZ .f.)-DZ .f+)-JZ .FZ ~ Z Zv-U g hQZ Z vvn6 vZ8ZZvZZf.gfAF.gn6FFFvZZ6Nvڙ6FHV.`.dfv.fv.=f.n6FFFvZZ6Nvڙ6FHFv.n6 FvfZvfnZfv.+ZZډ[[[O`pg͆A@/ [ /Z[[[[[[[[ ۣ,Zw[[g[[W./]/[[[[g/ [[.۱[[[[g[[[ۧ[[[[g[[  @[w[[g[[[[gg/cww۲6GHw[[O[[6Og??/K[[O[[g[[ @[`/[[O@@`/[[ [[g[[[[6Og̋[w.  g/ؘx[[ޙ[[gwgܯ[wwgo[gw/[d[\@ ]\<\ \Y\P\R\:\>\>\Sd7\>\Ud8\>\Wd9\<\W\@\>|B\@B\<\W|B\:BF\CCt7Dt8Et9,\: dm,b\a,ex\e\n,~\o\iz\f\q{\otm{\ptn,\|\f\qq ,L,\,\dl\,\\s,e\\\,e\\\d,t.^^>.^^>. ^^>. ^^>. ^^>. ^^>. ^^>.^^Ȯ>.^^Ю>.^^خ>.^^.^^z^^.٘|^^^^>.^^>.__%_ _w ._ _*_si /6_5_q_U/Ti_X/D/?/D_C_r_U/Ti_X_M_Vif fk_ijwU/']__Vw|}_|_|_}_A~?~/~AGA_?~~o/owgwwwwwww/________o_/g訊__Щ//G/˚/ _ ?/豉߬貉߯שּ߭//g/g?_dtdDdD,.dDldD dDldDdD dD dDl,6dD dD`?``Ș`C`dDT,NdDT,N,R`R`dD(,}``````d,i`g`tT,m,YdDt`v``d,}`}`dtdDt44dDT,,dD dDlLdDD,ttdD؂@6Ldڋ<<,`,  }eE.uum6e6aeAEՄ,eue-uum6EHm6uEHeڋ==-m6e6a---um6e6a-)-+-+ueueEuۂ)-<ۂ&->ݘ/>>ݘ//>>g/2>>ݘ/W/7ݘ//7> / /Rg//E/w_/K_/M/Qg/Qg/w>܈܉&0шc&3c&5՘/ߚ/W7W77O /7c /g/g/g?貉ۮccogw/cccgW/g訊cЩ//Gwccc// o/o//g/g/g?cttl6d6ddADz,(o6DHW,$o6DHW,$,(dt, 粆AD,Uo6DHW,UdtgֆAD,Qo6DHl6tDHddt,(l6d6d,_,d,dww,l6d6d,n,s,sww,l6d6d,},,w,l6d6d,,,wdADz,, CCTL NOCCTL SHARED EXCLUS ddddddg,gGW,,gGogG)7,gGo,ݘdd箬,dggggggg,dgw,gGW-8ege9e9e9e;g- e;egW--u=-gu=gG e>m= e@e;eDe@eFe>e>gGu@e>@B,m6e6egAG-gAG݄-{g gGm6Oϋg g gOxm6OЋg g gOxm6Oыg gOxm6Oҋ-eegwe-HPASCAL efggG-gGWGw-g-gwgGW-gGg܁gh eef--egg-gGW-옝efgG gg-o g-vf ggfGwg.g g`W..4gGӂ@7f,gggfffg.3f3g.g g`W.BfAf.gG.JgGwgGW.RgGwgGӂ@gGvWv椂G6Gfoggggggg.uw.gW.y.gG)7. fgggggggg.fgg...fgB.fg箚fgggG.wg.g..g.wo6g6ggwZfgg.gG(.ߚ fggGogGw穂N7Ng.g./gGwgw穂N7Nwww/ / gހwg/Rg/LgG)/Hwwwg'gg6o6g g8ggggggggW/$g/F ggFgB/LgLgg/P/Q/zg/_gGw w w/zgW/c/lwgwo6gً/nwwgwg/zo6g@6g6ggwwww.PURGE gggg ,02d'hldt <, d6t@tH dl:lL||l|<d :<,) d:\,4t|L||||\:T,@tTT&;jj. .2V> @;n=   ~=貂j= .%n6N=.f=蹘.5=.5f7.5f8j??nx~on? ?uFwFy Vv.j5 uVpFt.lFsa.dFrFq>? .j>o.Rfz@v?.g:{~v{jjjjj. f{fp{ ??8vvfvGivՀ.jfvGi/,/, ~Ԁg!.7d>Հn_`/B vvvn~ /2 .mEV. /f 3(f>. /Oi@Ԁ /OaԀ6Հ>>/vԀh6fffo`ge gfocEV/?Ԁ&Հf (>/2/m/> EOi@/%@Ԁ~ EOaԀbE @LUSR%OOOOOO`ZO\OONO0ON RN:O:[2Y4^:877OOO'{O7O\qZ5OO!NONV>Z.2/2j222k252l282m2;2n2>2o2A2p2D2q2G2r.T * *]2\\vU-#,  X#(p@ ,:22n6f622fvvn6FHv՘2>>.n6f62..22]22.]2V..m2.V..f2.V..Ҙ2>.ASMB, S2 /v/~W./Ao6g6333ꈀ**/ 3333333333 /*3(333333333333W/E/U/Uo6g633R3]3U3W/[/gv3/g/g3d}wW/k/p/p3p/~/~o/~W.W.W/q/r?.Pas.Stop $!"4G3ӈy3Њ33Ww͊33ڈ3Έ3 //gw͊33܈3/gwg̯3gw/  /(3/]33?/33?/?/-4m6e65,44u5 5u55͘5Θs,1**55И5ј5Ҙ5ј5h 54J55Ӊ55 -E -Eeuue Eu 4`ue,e-BeEu555ј5Ԙ5e E񈀀5}e E񈀀5׈5˜55˜ꈀf5u5 ,,e,e Eu55و,,,u,55ۈ5,e-&5555و5و5Š55 5Ę455Ӊ5Ę5Ċ55 5Ę455Ӊ5Ę5ę 4555555}Š55e55爀5Ċ55}ƈ5ĉƙ 555ω5ǘ5NJ556 h 5ǘ5"55Ӊ5ǘ5eh 55255Ӊ555:55Ӊ5555==,X-YU-M-Q55-T55ߘ5ј5Ϙ-U-`-d55-oU-h-l55-o555ј5 55~55Ӊ55--55ј5ј5 5555Ӊ55555ј5Ҙ555Ӊ555ј=,$   !# j%y6UvR6U6`Vq..m ~6W6c6d6b6cnm~X6U6g6e ,NX.vR6U6i6S6S .,.Mm 6U6c6d6b6cnn~Y6S6e ,NY.EfRvR6S6k6S.&fRvQfQZ6ZfrvQ-   6W6Uf.{6Ș.vv66ʘ66ʙ6ʙ666̙666ʙ666ʙ666ʘ 66љ66Fh 6~66Ș>>.6v.s% +/&6yw)g)WL/(y787.7.7: ,OG/(67.7H7Jg)/7<787,0'707=78/7>7 7?7A71"717By7C71717E0717C7370735?5./Ѐ7*7,&7Pywg/X77/^gW/\/^7m 77777og ,O/y777777777ꯑ?/M7&7ywg/77/gW//7Иm 77777og ,O/ǘ7Ԙ?/'759pgA@/77;77</77=77<?/tY։8WdY,&8W ,,&8W@6l68,,,tY,%8W88W,dY,EdV,28W8,Ex858f8<8888f8C8N888p8E8W8L8L\8ZdZl8[tV88L,A. B. Ema. Pas.Stop Invalid/Duplicate External Name:  d!8N89989tgtgtd,,d 8td,d,td,m 6DHdGdtd 8|d ;t,\889 td8tgt,@8W-WwA-8-8W--8gwCw;> --Ɉ;>;F;F;s-;F;u-;w-;x;F@6o6;n;n;F;s;F;y;>-.W-.;xo6g6;n;m\98;p -;xo6g6;n;n-.o6g6;nW-.o6Og. o6Og;w;n;{;no6g6;n;{;n.+W.+....gw@.0gw@W.4.9 ;:.Eg\@ ];|;:;: .K.;:;F;F;~O`.;F;.`gA.;F;~ C:j;C.;F;.|.|W.y.|;x.~;@;F;~C;C;F;:.E.v;..:;q.;@;.:;;}gwCw;> // ;>;s/;w;<;=?=?F.g;8k8s8{8;];e;H;P 012&;ywg/;;/gW//;ܘm ;;;;;og ,O/Ә;?//';;w/c;_?/s/gl/p;/@@ <<1<26<)<)<3!>P<5<+<)<7|-<+-<)<9 <$<)<;<)"<).<.,  >P=*=%#T>T=,--Vj,R,gy=.,g=0=1=2nR =%~=%ꈀ>T=3,n,n,ሀ>T=5,u,y,y=7=*,{=8Vj,,y=.,=*,nR =%~=%$,Ȋ>P=*=#=#=9 ,MD,Ș}<=#,Ȋ=#=9Vj,,Vj,Ȉ=#6,,=#4,,ř%<=#>T=5,,,ә=;=*,՘=<>P===%}=%-Vj,,슬y=.,,=7=*nR =%~=%=7=0.< ==?=*6=!=@ =!=5fU ==!=*=!=4=B=2"=!=C'=',</ $nR =O~=OQ=Q-EfS @ v=`}=`b=b-T =j==6===!==fS} @ v== ===="==-e ==ሀ=Й#==Њ=--Vj--e-e-==-===Q==b=˜fSvS-e--˭=҈҉=uu-%y>\>Py>^~VvRvSy>`Vl..&>yVl..y>b>W>>W>\>VvR>P ..O>P>`Vj.!.D.7'>$.D>P>dVivW>2>P>W>V.Dnm.D>P>dVh."Vi.%Vj.%Vk.%.3>P>f>PfRvR.Y>Y-  vy>>>V.{.>>.>>@6n6>vf>fv.n56.v6vɘ>Fh >  _>~˘>˘>>.>._?:7Gl898/98h ?<  ?:?< `Wk..?C?D?E8Gmh ?<  ?:?<<8GkGmh ?>  ?:?> ?>?8h ?<  ?:?</48Gl8.د@?@.65/P79/e65/V/[?Yg?[79/e?cf@?e:?gh?h/Fg/r/xe?w??/}e?}??gwh???e???h????ww/n.@+??爀?֘mK?????oي?? ,O/Әf?????銬??@o?U???گ?݈݉?/ =  ??w???)tD,,f@@ ]@@@@@@@,@@ˆ@@ ,.,i@@m @@@@@l|@@ ,L,a@@V,O,a@ʊ@@|@@͈@@@ꊬ@@@,(@@V,p,m @@@@@l|@@͈@ ,L,@ʊ@@͈@|@@͈@͈@@@Dt,<,  @@yBn-*@@BnBp@Bq~Bq@@BnBrBrV--Br-=+A Br-5BrBsBqBtꊬyBu6 veA!BeBwvdnd BfA,BfBnBfBfBq,A7BoA@}wV-G-U-AIv`f`-N-Uf` veBeAX~{(A]vcAafc-lBxBr-oBrꊬyBn-V-y-}BrBy-BrBxBqBq-yBz-.ABn-/A-.ABr-BvB|Bq~-ϘBrB}BqBtꊬyBu6 veABeBwvdnd BfABfBnBfBfBq0Aљ1Aә+ABn*AyBn.0A+ABr,A2AV--BrB~-BrBBqBq.(BrBsBqBtꊬyBu6 veBBeBwvdnd BfBBfBnBfBfBq3B*Bo._yBfB:Bf@nBt4BEBhBn6f6BBfBu6 vdfAFd.]fvdBdk>k,-!2& Bh 2w5w6g4AG5.g6..w6.g5w5.oB6G5H> .> .W.W.W.W.W.W.W.W.W.W...g6/%g5 C`W..G5w9oB6G5H @C7g5W4.oB6g5GHh  C7C7/g5Gw9oB6G5Hw:oB6G5GH G:h C7g9//C9C8g9GGwg9G CGw/3C4g4Gwg4 CGwϯ<C;;w4.ډC̈C /M/CC wg/Y//_)W/)W/c/p?/pCCЙ@CpCCC݊CCИCxCgAG΄/ACCCCC[\]CCCw/,D.,,,d,fDDDDD,fDDDDD,JD0,",E,EdD,:dD,:eD/DDeD4DDeD9DD,DeD?DDhDDDD,JhDJDD,DPDD,BDUDDDDCD^DDD,DD,DD|ĘhDmDeDrDD⊬DD|ĘhD{D,DD|ęCDDD,fDDDDD,fDDDDD,l,DT,dT,|T,T,,,l,dT,T,KT,QT,_,DňʼnDdlD,TRUEFALSE STRING POINTER '# /Dz}'E - ufE EF'F'F(-u∀E㊄4---fEEF)F)F(-ۈE㊄>-#-+-+fE*EF*F*F(-ۈE㊄8-2-:-:fE9EF+F+F(-ۈE㊄.-A-I-IfEHFF)F)F(-ۈE㊄0-P-X-XfEWFF*F*F(-ۙDE[E-efEdFF*F*F(-e-uEkE-ufEtF F,F,F(-u-ĘfEF F,F,F(-ۘfEFF+F+F(-ۘfEFF)F)F(-ۘfEFF-F-F(-ۘfEFF'F'F(-ۘfEFF,F,F(-ۘfEFF*F*F(-ۘfEF!F-F-F(-ۘfEF#F)F)F(-n<-ۊEF.V3-xV4-V5-V6-V7-V8-V9-V:-V;--eEF0F(eE戀Euf5u,*NIL* INTEGER REALLONGREALBOOLEAN CHARTEXTSTRINGSCALARSUBRANGEPOINTER SET ARRAY RECORDFILETAG VARIANT  F .C.FFeFLFhFQFfFXFFFFF]FFeFbFFaFeFpFgFF ,N.FFFbbF ..FFFF.~bb. FFzFF{FF.=|FF:  fFG0GEGEGFhFGEfFG2GGGGGFhFGEfFG4GHGHGFeFGFfFG7GEGEGFhFGEeFGIGFfFG9GHGHGFfFQGKGJGFfGGK -/KB/-舀KKKK/KKeIKKJKKKeJKKKK˜JKeJKKKK˜hJKeJ"KKKKr.0fJ0KKKKKK.=fJ=KLLKSJAKKw/g.[KL.TfJSKLLK.[fJ[KLLKpJ]/KLKÊKL@TKUJqKKŘfJxKKKKKLKÊKL@TKUJKKŘfJKKKKKLKJKKKpJKLKJK/fJKKKKKLKJKKKpJ/fJKKKKKLKJKKKpJ֊KLKJK/KLKJKKKfJKKKKKLKKKKKpKKLKK KÊKLKKK/pKKLKÙVK#KÊKLKK-K/g/DfK8KKKKKLKKDKKKpKFg/SKLKKSK/KLKK`KKKpKbKLKKlK/KL@TKWKxKʼnKØKKKpKKLKKKÊKLKKK/X/KL G.CH.^I.J.K.L/M/.N/TO/m//KKzKKɘ{KȈK-ܘ|KKɯF PACKED STANDARDDECLARED.. OF TO OF OF OF   / KňN ,. NNNNxN"L NeL%NzN{NN|6 G5,/,IN@nN{NN|6 vYLANNpLCeLHNzN~,TN@nN{YLTNNeLYNzNNNNZLeNNxNeLjNzN-fLrN1NNN-fLzN3NNNNN,NNNSLNNxvNN~N NN~[LNN,֊NNNNN@nN{ULNNNNW+,,ֈN NNNNW,,,֊NN~NN~ [LNN -NN,fLN8NNN,fLNeOcOWoW  ***Od/K/K/O*/VxOROf *YgY/[wX?YXwW/6s/OOo  ***/xO~O *g/w?w/gg/h/Ohg?/d/eOOdgiOw/g//g/əOhO/hgOw/OOܘOw/OjOk6g76579?/dir ind ind2bindbnd2cnstvar exprcondbrsl=tru=flseq0 ne0 <0 >=0 <=0 >0 skpfskpt3way+ @ and := binfbinxbynxcasecasl^ set-/ fbuffcalfor fornforlfspcid indxind ind2in set*.. lit lab mod * neg noopnot or packpcalrnge= >= > <= < ~= =fls=tru=0 >=0 <0 ~=0 reg selnset storstru- st<=subscnvtset+unpkwith<=0 >0 cserjumpputlQQ}e FuݘfPQQQe ,N-ueV,,ϙ`PQ-aeV,,劬QQ}݈Q QيQ}ޙ[PQQ-aeV,,QQ@nRYPQQ-aeV,-4fQQQQQQ QيQ}ݘQQfQQRRQR QيQ}ݘQ#QfQ*QRRQQR}ݘhQ3Q-aeV-8-aQىQߊQQ}ݘQEQeQJRQQR}ݘhQSQeQXRQQR}ݘhQaQeQfR QQR  FuݘfQuQQQQR  -~-eQRRQR QߙSQQQu܊QR Qߙ#QQ߉QߘQQQeQRQQR FuݘfQQQQfQQRRQQR}ݘhQQfQQRRQQR-ؘfQQRRQQ∀Q, low hi ., regs , R    / , P*QPP fmvPRQRbVm.).NRQRdRURU .6.N#R9RURSRSRf.B.E.EvP.NRSRh.L.N.NflvPfPXRWWRQfnvP. SS S:.|.zw .RSS&S(SS...S S...#RSS..S4..S6....#RSS...gw g w S S!RS S SLSg/G*G.w8.S S"RSS SLSRS S SLSg/G*G.w8/W,..S S#.S S$g/G*G.w8/xRS%/g W+.}W,.}W-..SS.o0 SS ?SBS68g8/:w7?87w6/0SX"SILgL/NwK?LKSI/Cg/_S/g/egw/ggws/eSoSSeStSSgwhS}SSl/eSSSeSSSgwhSSSg/w?w/Y*+- SSS6Sg/S SߊSg/gW//ъSSሀ4ሀS SߊSሀS܉ SSSSڈSگS∀SwވSS/ dF, l\6 tH,l\6 tITTITFtHdH,1tItGl\6DGD^D^tJTCTX6LJtJeT.TJTZU&U*U*U?e#U*UAe$U*UCe%U(UCU,U*}.U,.U(UC}.U&.2U//u#0u$1u%,U& d-Qd-SjUVT-Hs-geU_UtUhl-geUgUtUhjej-lui=jiuh-W Ue-}eu-eueuRUUEujUe-u=u-u e-UUUUeuUe-u=u-Pas.s-ϘeUUUl-ϘeUUUܭe-u=u-s-hUUUl-hUUUe-u=u-sl.eVV V mV+- s.TMVlf*F  ** f ."v> v. s.IfZVJFYvKfV:KVWVWVXl.IfZVJFYvKfVIKVWVWVXMfM.OvL>MLvJ.+s.keVcVnVol.keVkVnVol.[ s.fVzVVVVhVVVl.fVVVVVhVVVf.v>v.p=D=Ds.fVVVVVl.fVVVVV.,I,I V5VVØf.v>f.v>vv.gQw%w$gOO#@W&gPO"@ W&6G$HoK6w&G$Hg&?$?%.iWGgNW"GLw%G#w-m W(WJWIW-nW%W(WIW.gMoN@%W"GL@g%WH5g5/7w3?5g5/=w4?53w"4w#.>W.s/ffW\WsWgWtl/ffWfWsWgWtigi/kwh?ihwg/RWW/}WWg/w?g/w?wׄW/u+gGws/eWWWƘeWWWl/eWWWƘeWWWƯg/w?w/.ss/TnWWl**g/w?g/w?ww/w?wgq?,MXx XcXv|e'Xe,ZXcXx|eXcXzXfXeXf,ZXcXx|eXe,ZmXeXX~X|X}l|fXcXxX ,LfthXDXhX,HXc,ZxXLX,ZXcXT,$T,T, T,,IXcXT,a,bjdj,lti[\AD?D/VDAG\A[\?DD[p^?^iPwnot[k[n[p^[rsr?r`r?r  r?rrt[`H7[@@] ]7}] ]9] \]6]]]] ]9]o\]]] ];UV,&,\+]L]=]?]]]eT] ]@}]]Be] ]D]]]7}]]} ]B ]]F}]eUR,b,p]]9}6]]F,eUS,t,]]9}4]]FeS] ]BUR,,]]F}]]Fe,] ];UU,,] ]9]]}]] ]@@mN]8]]BeN]8] ]9]H ,MO,] ]9]"}\]",] ]9]"#\]"]F,,,슮]}6,]}4]@ ]]"]D ]]$]]]"]$]] ] (]&&] 'u]J] ,  ]]_^4#]`^4~*-^? _^=~,-^? _^=^,-^? _^=^=~4^,4-x]^B-f*W-bW-kW-v-_^4f*5v368wf38-g-v08v1v2f*AF0-f2-F1h ^6  ^4^6fDF0-v2-f0v0f1v1-f2-䊮ߕ8@v6 6w-88-g.%ߕ5@v6 65F*A9."f*.v6v05F0GGh ^8  ^4^8fDF0>0>6.5F*5.%x^%^Cߔj:>:-W^+_q __o_`__b _]7G8w98.g.8h _d  _b_d_8Gh _d  _b_dd_`_qWd..8GGh _d  _b_d _d_`_s_d...ۊ_`_oW_..wߕd_]d.ۊ_`_oW..g_W.ъ_`_oW..g_W..wߕd_]dg.8h _d  _b_d   _]_]8G8.\g/X9GA5/N9G9_`_od9h _f  _b_fgd_`_qf9Gh _h  _b_hgf_s _`_oh9GGh _j  _b_jgh/Qx_Q_uߕj_]jߔkl?l.E_ /l_/:_95//x___ߓ_/vPdN _^6G ߂lN[PdN _^G ߂6N[kdFADG,AdFtE,CdGtEdEJ`HHtFItGftE,6ddADe,_detc,addtcdch`fftdgteftc,Tfj,y`ybⷙqbbfvfnދbf,rbbnbvs`bnbrqbbnbf,qbbnbfvqbbnbfvfvfvfFvf,f Fvtbwbnf退bFvu`bbrb{qbbwbf,ފbnbwnfbFv-f Fvqbbnf-f Fvvbnbnf退bFvu`bbrb{nfbfvFv>,fkVvfk-abf-'fAFlvf-DfjFn@Fvha5bbvFlvJa=bbvkfkvfv-lhaHbbvfFlvJaRbkbvkfkFvvf-lfnbf-erbbnbsalbnbrfk-rvk-ufvbwbڙsa|bwb{vfvf--f-f Fvvbwbwf退bFvuabb{b{fvf bv-wbnbnbwuabb{brbrqbbnbf-͙vbnbnbәuabbr`brfvf6-fv-fFFvbjb-f-fFnf-fFnF-vvfFn>>-.if.4vfvfVk..fFnⷙxbbrvfFnNfybbbsb#bbub)bbrbbrub/bbr`brFv>.f.ifFnmf.GfFn.MfFnf bFnNf bNfFⷮbvjvkvlvm,r@PPb_`brb{b +-.0'dd@dd"d#ldd$ld"L@dl%d&dAe(e^eue%&|LD``!,e,e,elLlG|d t@ <,mli|L\u,x| < <` lL|D<D<DlLi,tt <<,dBttT ,dT,Dt$,diDt,ALL T,dDt,1,p,u<,LdL |L` DlLd l d Ad -$h A-!dC-Sd-UdD-;Dl|l-J-@Dl-JE]!-UL-U   D-Udt dlc(lG(^}tiLa-o-o -rmtceullldl`=-{dlddDtldPGud-ddmڋdmGeT-eudlQmd ulu=-dP-lu-ludlddDtldPGl||led$tlGlG@tttt t!v FhddcTITLE LIGHTNING DECODE PROM DEF FILE ; ; &LDDEF 12101-18001 REV 2210 820524; ; GENERAL PURPOSE DEFINITION FILE ; WORD 12END nFv, f.Df,fFv,-vfnv~fnv~fnv~fnv~fvf.DfF.Df fQQD9h:,O,>,E,Jfvfvfv,Nfvfv,Mfv~~~f,i~6t[t_tctgj@~j@~j@~j@~ fFvf`Fvf`FvAfn! @v.@f ~ V,f,fV,vfvfvf,fV,vfvf,fV.pv~~~vFFvf&.@PzF.DhN~Ftfvꗂ@>>,.Df.pf.pf vvvfjA~fvfvfvfFvv斀ꗀAΙ n~>ƙ>^,,斀ꗀAΙ >>,nfN~6 "~vj F vn N~ -(~n6~n ~vfFvf.DnFv.Df.tf.pfF ffvfv>nf -`~ nfF vFN >-O>-^->f^-c-fHf-r5j-r>f>-f-~jANv -^-NfF vF -~>--f-F斀jA~vfn^-斀jAfN FN F~nNFNFNv~-Fv~eFvvkvnz~vfnz~vf>nvf-֭f&vf-nFvfnFvFv~jB5~j5 ujjB5~j5 ujfP@vf@vf@vf@v> D``A V.<ff f&vfn QFv >._>._>fV.ZV.W._6.\ vN~fV.e.s&6vAjfnA @.xfAn @~ ~~ ~.jjjjjjj@P@%ZVV S;WSSLOGWiVlVMUOGUU? YO;Z2] UO}sGZw](y'([+OY[ W5S8{WWVYC}Xj RSRXV>\O076Z63>Y75;7TdbcaeO?hC[DU2T[t[ bO2O(O)O*O+O,O-O.O/O0OO1EL DN" }O3TMI?KIc?QFUTVugfYNZbhWf7hd&i0hf][^[F^J^tzJOWVVVWDW?W2VVW9W1W7W0W8W/ }PW:W5zV(yW.VV^VVPW!VW"VW#VW$VVUWCVW%W&VrWEW'VsW(Vw~k_~RS S S+S.S1SHSTSZSSSSSSSSSSR*3Ru]h]]gfbcde] 3~[Z\W\\g$b_hbciihjj@i#&;&s,0<,me10_1.,,u011,_1 ,M,011.101_1__1ed00_?01tem1,+|0m 11111n1-1111101m 11111e@} ,Mu1K11U-O-R1Q-Km 111111n1`111e@} ,Mum 11111n1}111ř61111Řm 11111n1111e@} ,M- -+11z11̘{1m1{1u- |11̭2 1111 nf2 1122 Vv222 >-' 2|'.G.63.43.GW7.#.(>3.,83.:3 HW6.9.<G.>G.IW6.C.H03.蘒2M33333333I 37h 33I 37` 3333!33#333%g933'03) 33233+3-33)333 333333!33#333%33'633)3) 3333.3. 33I.o;#.W6.W7.W8.?W:.-.230333 3 .1 ASSEMBLER DEFINITION PROGRAM 12:12 PM THU., 24 JUNE, 1982 PAGE 1 . LINE STATEMENT   0 END    TOTAL DEFINITION ERRORS = 0 (1 ASSEMBLER DEFINITION PROGRAEND  END$ PROGRAM DEF30  INTEGER FTYPE,IFBUF(256) REAL ITABV(600) COMMON ICRD,IPRT,MCFLE,IDFLE,KTERM,IXFLE,MCREC,IDREC,MSIZE  COMMON MLAB,MOPC,IBIT,ICCNT,IWORD,IERRL,IERRI,IEND,IFORM COMMON4 ; 5 ; GENERAL PURPOSE DEFINITION FILE 6 ; 7 WORD 12  8 END   TOTAL DEFINITION ERRORS = 0 (1 LIGHTNING DECODE PROM DEF FILE PAGE 2 (   SYMBOL TABLE   NARG A 00000 1  8 END   TOTAL DEFINITION ERRORS = 0 (1 LIGHTNING DECODE PROM DEF FILE PAGE 2 ( 5-u5 55-557=,  7 7 7 7 7wؘ56wܘ5:7ܘ5@ ,/w6wݘm:8 848-8/808182n6?8 8-88,6_7 7 7튬785 6/8 8;.78? .9 6978?  6E8 8A.7837芬78B@ 86g.awo 7튬7838 6l8 7 6q8 8D7튄7.w.}7튄7.|  78 8H77/ /77/ 78 8E/#77 867 /)/I7.8<8)8*778 8 8B 868 8I868 8Kg7Iu7wwg/V7Vg. 7b8 8,7e7ݘm8 878-82n7q?8 8-87t87w7wg/7g-7wݘ78<8)8*778 8 8Kg77777// 78 8F77?8>/777ۘ77gذuu7މ_777ޘ77 78 8=K87z78|782+ )  '1 3kf 7|877887878]?8xtn8f8n8y,t8o8jz8g8o,Y|8g8oo' u994999y899,u,m998979496m?} 999 ,M ,m9!98979496m@}"999 ,M",u89u 89u e U ,e ,,҈69,ֈ4999<}#89;9#99 9@mA9>899 9 eA9>9 }# #899 e&9$$9%9u,z 899!9 u7wguuI=I-Bw ; ; ; ; ; ;m;;;;;;Әn9t?;;;go;m;;;;ՙ9;;9_;;; w9;;-;;݈;!w9;;ڊ;;݈;;;;;ሀ -Ê;;6m&;;;;;o;;ሀ; ,O-銬;;ሀ;}9;-w9;;I9 wm,;;;;;;Әn:?;;;: ;;;/u: m.;;;;;;Әn:?;;;go;:"_;;;ሀ;;;ሀ; :8;;.F;;ሀ;&:E;;.Gw:L;;I:Nm9;;;;;g@ ,Owm9;;;;Әn:q?;;;:v;;;..ww.ww."#.$.y%.~.:mG;;;;Әn:?;;;go;:_;;;ሀ;;;ሀ;ę :;;.Ɗ;;ሀ;&:;;.w:;;I:.w&w:;;?/u:ߘ:;;;;;݊ ;;:;;;;;݈;;g:w;;g;wĊ;;g;;;;;;;;;;; ;;;$;;;(;;;_;.I;0';2;;݈@o;;@?I;B;G;;;;;N;;;;;݊ ;;;[;;;;;݈g;;i;;;_;o;r;;u;; /{/;;/B;;z;;-L|;;Ư2-., 376 Y s;|z;;;;;Wtq< >>>>Θn=?>>>=>>>.Hm >>>>>Θn=?>>>fn>.=_>>>Ј>>>~>>/v=>>.H0v=>>.H=>>>>=>>>_=>>1-.>>.v.gv>>ffW..2>>fv\@ ]>>>و>>~>>>~ >>~>>>~浂N36Nv.N.S>Pv.[.[vx>[>f-&v>g>>>j?fAH.v .~pv\@ ]>.W..\@ ]>Ј>4>>Fv>.zf.>>z>>-|>>®2 ,;6>|W..5>m k????n>????g@ ,O  ? ?/?=?/??/>#/W/'?/g@/qA/vB/C/{D/E/F/l/'?*???/%??z??֘{?o?.|??֯2 m ??Ѐ??|?  !"#$%&'()*+,-./@@ t@.@@,@@@ t@B@@,@@@@Tt@X@@,@@@@@@@|@@@@,{,,@@|0<, @@@B@@@_@_@@@dl@, @A&A@@AAU6t@@A,@At@@A ,@AA @A&A|@<, 3AA2A3BA&AA&_A&_AA )A(e(m5A4- A!A9_A܈ u̘AGAA-_A܈AUu̘AYAA-u̘nAfAAA͙AkAAA-_A܈A㈀A͙fA|AAA u̘AAA-AA舀A͘AAAA͉AƊAA}̈Aʉ̊_A}̊AA舀A͘AAAA͉AȘAA_AAAƈAȉ_AAemA-72 1AABBzBoBoB|WvqBBqB~._BoBBrBBzBt BBrBtvqBBqB.0BoBBrTB+BBrvqB0BqBm BqBBBzBn~rBBzB| ,NrvtBPBtBBoBBtBBz~vBtvBBz..i.n.nBBgw>w-.|BB2 7B ,O//Y_CCW/)/-C,C/0)C0C/cC4C/cmHCCCCnCACCCCCDC/cmKCCCCnCQCCCCgCTC/coę#/cW/EW/5W/1W//UnCiCCCg@ ,OwnCCCC6CCCC//CCzCC{CoC/|CC2  CC ubC|/CCzCC/Ř|CCүҙtC|/CCzCC/ۘ|CC昌CC?/CC?/DE|DETtmDE"E E!nDGDE DDDED,mDE&E%E#E$m8|DE ,L,_DE'KtDBDE)td,^DE*,^DE,,XDE.K,YtD^DE),atDEL,h,DE0DDE0D,y,xtDDE2d,슬DE3DDE3DD ,,܈D ,,܊DEM,,ɊDE0DDE0EyDDE,ŠDE'|DE'TtDDE,DDDDE5DDE5D,D ,刀D tDDE7-EDzDE{ED{ED,|DE 2   ~Dun-YEoEEKun-fEoEEqtESEqun-fun-f-fEoEN-UO-H:GHGHH>H]^H=H /S/uHH; /\/umuHH8HAH@H=_`HH;HB ,`amuHH?H>HH GHHDH /ڊHH;HEHGH //HHBM//m}HH8H>HCHH bGH /GG_HGGHH aGHHG/GЊHH;Hc/G_H aGHHGNaGHH@d0H%GzGH&{H%lJH=e|GH&&" A 2 g~HHGH 17HI,ȊHIHHjIIHHHI @mI HI eI ,H슄V,,tHHII HHHU,,NJHIU,,ǘHIIIHeHII|HHI|HI HI|H,h%tHHIHIHHIIHHHI |HH_HHFTN4,L $FILES(2,6)  PROGRAM ASM29 C C META ASSEMBLER ASSEMBLY PROGRAM VERSION 5.0C FOR AMD 2900, INTEL 3000, ETC. C COPYRIGHT 1980 C MICROTEC C P.O. BOX 60337 C SUNNYVALE, CALIFORNIA 94088 C C PROGRAM UPDATED JULY 1980C C C THE VARIABLES PASSED IN COMMON ARE DEFINED BELOWC C C CVAL = THE VALUE OF A NUMERIC CONSTANT OR LABELC ECOL = COLUMN IN WHICH ERROR WAS DETECTED C FLEN = LENGTH OF DEFINITION FIELD CURRENTLY BEING SCANNED C FTYPE = FIELD TYPE FOR DEFS AND SUBSC IADDR = ARRAY TO HOLD HOLLERITH ADDRESS VALUESC IALPH = ALPHANUMERIC CHARACTER SET"C IAMP = HOST COMPUTER REPRESENTATION OF A HOLLERITH AMPERSAND "!C IAST = HOST COMPUTER REPRESENTATION OF A HOLLERITH ASTERISK!C IATT = LEGAL FIELD ATTRIBUTES OR MODIFIERS C IBIT = NUMBER OF BITS PER HOST COMPUTER WORD  C IBLNK = HOST COMPUTER REPRESENTATION OF A HOLLERITH BLANK C IBUG = DEBUG PARAMETER C ICCNT = NUMBER OF CHARACTERS PER HOST COMPUTER WORD C ICHAR = CURRENT CHARACTER POINTED TO IN INPUT BUFFERC ICHK = CURRENT OPCODE VALUEC ICNT = LINE COUNT FOR SPACE DIRECTIVE C ICOLN = HOST COMPUTER REPRESENTATION OF A HOLLERITH COLON C ICOMM = HOST COMPUTER REPRESENTATION OF A HOLLERITH COMMA C ICOL = CURRENT COLUMN NUMBER FOR SCANC ICRD = LOGICAL UNIT NUMBER OF DEFINITION FILEC ICTAB = HOST COMPUTER REPRESENTATION OF A TAB CHARACTER C IDFLE = LOGICAL UNIT NUMBER OF DEFINITION FILE#C IDIV = HOST COMPUTER REPRESENTATION OF A HOLLERITH DIVIDE SIGN ##C IDOLR = HOST COMPUTER REPRESENTATION OF A HOLLERITH DOLLAR SIGN #C IDREC = RECORD NUMBER FOR DIFINITION FILE C IDUP = DELAYED DUP DIRECTIVE COUNT C IEND = FLAG INDICATING END OF ASSEMBLY SOURCEC IERRL = ERROR INDICATOR FOR LABELSC IERRI = ERROR INDICATOR FOR OPCODES AND OPERANDSC IERR = ERROR INDICATOR C IERRS = TOTAL NUMBER OF ERRORSC IFBIT = MAXIMUM NUMBER OF BITS IN A FIELD C IFCOL = FIRST COLUMN OF SCANC IFCTL = IF CONTROL FLAG C IFLD = FIELD DEFINITION TABLEC IFORM = FORMS CONTROL CHARACTER $C IFPAR = ARRAY FOR CONDITIONAL ASSEMBLY INFORMATION DURING NESTING $C IFSET = IF NESTING LEVEL#C IGRAT = HOST COMPUTER REPRESENTATION OF A HOLLERITH GRATER THAN #"C ILEN = EXPLICIT FIELD FENGTH FOR EXPRESSIONS AND DON'T CARES ""C ILESS = HOST COMPUTER REPRESENTATION OF A HOLLERITH LESS THAN " C ILPAR = HOST COMPUTER REPRESENTATION OF A LEFT PARENTHESIS #C IMBU1 - TEMPORARY BUFFER FOR VARIBLES SAVED IN INTERMEDIATE FILE# C IMFLE = LOGICAL UNIT NUMBER OF OPTIONAL INTERMEDIATE FILE "C IMIN = HOST COMPUTER REPRESENTATION OF A HOLLERITH MINUS SIGN"C IMREC = RECORD NUMBER FOR OPTIONAL INTERMEDIATE FILE$C IMULT = HOST COMPUTER REPRESENTATION OF A HOLLERITH MULTIPLY SIGN $C IN = INPUT BUFFER (FOR SCAN) C INB = INPUT BUFFER (FOR CONTINUATION LINES) C IND = ARRAY USED TO NOLD LINE TO BE DUPLICATEDC INDEX = INDEX OF CURRENT SYMBOL INTO SYMBOL TABLE C INDET = INDEX OF LABEL INTO SYMBOL TABLEC IOBIN = OBJECT MODULE RECORD BUFFER $C IOFLG = FLAG THAT INDICATES NOTHING WRITTEN TO OBJECT MODULE FILE $C IOLIN = NUMBER OF LINES PER OUTPUT PAGE  C IOPVA = OPCODE VALUE C IOREC = RECORD NUMBER FOR OUTPUT OBJECT MODULE FILE C IOVER = INSTRUCTION OVERLAY INDICATOR C IPAGE = CURRENT PAGE NUMBER C IPASS = PASS FLAG, 1=PASS 1, 2=PASS 2 C IPCH = LOGICAL UNIT NUMBER OF OUTPUT OBJECT MODULE "C IPDEF = FLAG THAT INDICATES SYMBOL MUST BE DEFINED BEFORE USE ""C IPLUS = HOST COMPUTER REPRESENTATION OF A HOLLERITH PLUS SIGN "C IPRT = LOGICAL UNIT NUMBER OF OUTPUT LISTING DEVICE!C IRPAR = HOST COMPUTER REPRESENTATION OF A RIGHT PARENTHESIS !"C ISEMI = HOST COMPUTER REPRESENTATION OF A HOLLERITH SEMICOLON ""C ISHRP = HOST COMPUTER REPRESENTATION OF A HOLLERITH SHARP SIGN"C ISYM = NUMBER OF SYMBOLS IN SYMBOL TABLE  C ITAB = SYMBOL TABLE C ITABS = SYMBOL TYPE, E.G. DEF,SUB,SET, OR ORDINARY SYMBOL C ITABV = NUMERIC VALUE OF SYMBOL  C ITYPE = OPCODE TYPE C IQUOT = HOST COMPUTER REPRESENTATION OF A HOLLERITH QUOTE "C IUNDR = HOST COMPUTER REPRESENTATION OF A HOLLERITH UNDER BAR "C IWORD = NUMBER OF WORDS IN HOST COMPUTER PER LABELC IXCNT = NUMBER OF CROSS REFERENCE PAGES C IXPNT = POINTER INTO CROSS REFERENCE TABLEC IXPAG = CROSS REFERENCE TABLE PAGE NUMBER C IXTAB = CORE RESIDENT CROSS REFERENCE ARRAY C IXT = CROSS REFERENCE DISK RECORD C IYFLD = NEXT INDEX INTO FIELD TABLE C IZFLD = LENGTH OF FIELD TABLE "C JATT = FIELD ATTRIBUTES OR MODIFIERS PRESENT IN A SUBSTIUTION"C JBASE = DEFAULT BASE INDEXC JMAC = MACRO LEVEL NUMBER OF DUP DIRECTIVE C JCOL = COLUMN THAT A LABEL ENDS IN $C JREAD = FLAG THAT INDICATES NEXT SOURCE LINE HAS ALREADY BEEN READ$ C JTYPE = SYMBOL TYPE !C KFILE = FLAG THAT INDICATES WHETHER INTERMEDIATE FILE EXISTS!C KLEN = IMPLICIT FIELD LENGTH FOR CONSTANTS C KPCH = LOGICAL UNIT NUMBER OF ENTRY POINT MAPC KTERM = LOGICAL UNIT NUMBER FOR ERROR LINE LISTINGC KWORD = NUMBER OF BITS IN A WORDC LABCT = NUMBER OF CHARACTERS IN SYMBOL JUST SCANNED "C LADR = FLAG TO INDICATE ADDRESS SHOULD BE LISTED FOR COMMENTS"C LATT = FIELD ATTRIBUTES PRESENT IN A DEFINITION FIELDC LC = ASSEMBLY PROGRAM COUNTERC LCMAX = MAXIMUM ADDRESS ASSEMBLED C LCMIN = MINIMUM ADDRESS ASSEMBLED "C LDEF = FLAG TO INDICATE THAT DEFINITION FILE WILL BE PRODUCED"!C LEN = LENGTH OF CURRENT ASSEMBLER INSTRUCTION OR DIRECTIVE!C LEND = FLAG INDICATING END OF CURRENT SOURCE LINEC LEVEL = MACRO LEVEL NUMBER"C LERR = FLAG TO INDICATE THAT ERRORS SHOULD BE LISTED ON KTERM"#C LIF = FLAG TO INDICATE WHETHER IF STATEMENTS WILL BE EXPANDED #C LINE = OUTPUT PAGE LINE COUNT C LINEL = LENGTH OF SOURCE LINE WITH TRAILING BLANKS DELETED "C LINV = FLAG TO INDICATE OBJECT MODULE BITS ARE TO BE INVERTED"C LISN = LINE NUMBER PRINTED ON LISTINGC LLEN = EXPLICIT FIELD LENGTH FOR CONSTANTS $C LLOC = FLAG TO INDICATE LOCAL SYMBOLS SHOULD BE INCLUDED IN TABLE$#C LMAC = FLAG TO INDICATE MACRO CALLS WILL BE EXPANDED ON LISTING#!C LMAC1 = LIST FLAG INDICATING ONLY MACRO CODE LINES BE LISTED!!C LMAP = FLAG TO INDICATE ENTRY POINT MAP SHOULD BE GENERATED!#C LOBJ = FLAG TO INDICATE WHETHER OBJECT MODULE IS TO BE PRODUCED#"C LOBJ1 = FLAG TO INDICATE INTERLEAVED LISTING IS TO BE PRODUCED"#C LOBJ2 = FLAG TO INDICATE OBJECT MODULE IS TO BE LISTED IN BLOCK #C LOCT = OCTAL/HEXADECIMAL LIST FLAG C LODLC = ADDRESS OF LAST OBJECT MODULE WORD ASSEMBLED#C LREF = FLAG TO INDICATE A CROSS REFERENCE TABLE WILL BE LISTED #C LSOR = FLAG TO INDICATE SOURCE WILL BE LISTED!C LSYM = FLAG TO INDICATE THAT A SYMBOL TABLE WILL BE LISTED !C LTAB = SYMBOL TABLE LENGTH C LTBLK = LAST NON-BLANK COLUMN IN INPUT BUFFER  C LTITL = TITLE ARRAY C LWORD = LENGTH OF OBJECT MODULE RECORDS C MAC = FLAG INDICATING CURRENT LINE IS MACRO EXPANSION C MAPAD = ENTRY POINT MAP STARTING ADDRESSC MCFLE = LOGICAL UNIT NUMBER OF INTERMEDIATE FILEC MCNAM = MACRO NAME TABLEC MCNT = MACRO COUNT (TOTAL NUMBER OF MACROS)C MCOL = LAST COLUMN OF SCAN  C MCORE = BUFFER USED TO WRITE TO CROSS REFERENCE DISK FILE C MCREC = RECORD NUMBER FOR INTERMEDIATE FILE C MCEPT = MACRO BUFFER ENDING POINTER C MCSPT = MACRO BUFFER STARTING POINTER C MDISK = TABLE OF STARTING RECORD NUMBERS FOR MACROS C MERR = ERROR INDICATOR FROM LABEL ROUTINEC MLAB = MAXIMUM LABEL LENGTHC MLCOL = LAST COLUMN PRINTED ON OUTPUT LISTING C MOPC = MAXIMUM OPCODE LENGTH C MPARC = NUMBER OF PARAMETERS IN A MACRO DEFINITIONC MSIZE = SIZE OF RECORDS WRITTEN TO INTERMEDIATE FILEC MSREC = MACRO FILE RECORD NUMBERC MWORD = WIDTH OF ENTRY POINT MAPPING ARRAYC MXMAC = MAXIMUM NUMBER OF MACROSC MXREF = SIZE OF CORE RESIDENT CROSS REFERENCE ARRAY C NAME = BUFFER THAT HOLDS SYMBOLC NARG = NUMBER OF ARGUMENTS IN CURRENT MACRO CALL C NBASE = DEFAULT BASE FOR NUMBERSC NDUP = DUP DIRECTIVE COUNT C NENT = NUMBER OF ENTRY POINT SYMBOLS C NERR = SYMBOL ROUTINE ERROR FLAG C NEST = MACRO NESTING FLAG"C NFLAG = SCAN FLAG THAT ALLOWS '3F5H' TYPE CONSTANTS TO BE READ""C NOPRO = FLAG INDICATING LINE SHOULD NOT BE PROCESSED ON PASS 2"C ZVAL = MAXIMUM VALUE OF ANY NUMBER OR CONSTANT C C C THE MAIN ROUTINE CALLS THE MAJOR SUBROUTINESC  DIMENSION IFBUF(256)  REAL IVAL  DIMENSION IBIN(128),LLAB(10) INTEGER FTYPE,FLEN,ECOL  REAL ITABV(600),LC,LODLC,LCMAX,MAPAD COMMON ICRD,IPRT,IPCH,MCFLE,IMFLE,IDFLE,MCREC,IMREC,IDREC ! COMMON IOREC,MLAB,MOPC,IBIT,ICCNT,IWORD,IEND,LEND,KTERM,KPCH!" COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LOBJ,LOBJ1,LOBJ2,LINV,LERR" COMMON LMAC,LADR,LLOC,LMAC1,LMAP,LEVEL,IND(80),JMAC  COMMON ILEN,KLEN,LLEN,FLEN,KWORD,IFLD(1024),IYFLD,IZFLD  COMMON IDUP,NDUP,NFLAG,IOFLG,LWORD,LINEL,KFILE,IFORM,NERR  COMMON IFBIT,ZVAL,CVAL,JREAD,LINE,IPAGE,MERR! COMMON IERRI,IERRL,ECOL,MAC,LISN,NARG,INDET,IFCTL,NOPRO,LEN ! COMMON LTBLK,IN(80),IMBU1(11),INB(80),IALPH(37),LTIME(15) COMMON IAST,IDOLR,ISHRP,IAMP,ICOLN,IGRAT,ILESS,IUNDR,IQUOT  COMMON IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV COMMON IRPAR,ILPAR,IATT(10),JATT(6),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IA@@!DDR(4,12) " COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,IOVER " COMMON IPASS,LC,IOBIN(128),IPDEF,LODLC,LCMAX,LCMIN,NBASE,JBASE"! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,ISYM,LTAB !" COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128),MSIZE" COMMON MCNT,MXMAC,NEST,MSREC,IFLEV COMMON MCSPT,MCEPT,ICHK,LABCT,ICHAR,IFSET,MAPAD,NENT,MWORD  EQUIVALENCE (ICHRA,IALPH(11)),(ICHRX,IALPH(34))  EQUIVALENCE (IOB1,IOBIN(1)),(IBIN(1),IADDR(1,1))C !C IF POSSIBLE, THE META ASSEMBLER DEFINITION FILE PRODUCED BY !C THE DEFINITION PROGRAM SHOULD BE A SEQUENTIAL FILE. C THIS WILL CONSERVE DISK STORAGE. HOWEVER, IF NECESSARY  C THE FILE CAN BE RANDOM ACCESS. THE FOLLOWING DEFINE FILE !C STATEMENT DEFINES THE META ASSEMBLER DEFINITION FILE AND IS !!C INCLUDED FOR INFORMATION PURPOSES ONLY. NOTE THE STATEMENT ! C IS A COMMENT. C THE DEFINITION FILE (SYMBOLIC FILE NUMBER 9) CONSISTS OF!C 500 128-WORD RECORDS. U INDICATES A BINARY FILE. THE NAME !C IDREC IS THE RECORD INDEX.!C VARIOUS COMPUTERS DEFINE FILES IN DIFFERENT WAYS. THIS FILE!C MIGHT HAVE TO BE DEFINED DIFFERENTLY ON YOUR COMPUTER. C C DEFINE FILE 9(500,128,U,IDREC)C #C THE FOLLOWING DEFINE FILE STATEMENT DEFINES AN INTERMEDIATE FILE#!C USED TO HOLD MACRO DEFINITIONS AND TO ACCUMULATE REFERENCES !C FOR THE CROSS REFERENCE TABLE. THIS FILE IS TEMPORARYC AND CAN BE DELETED AFTER PROGRAM EXECUTION. C THE DEFINE FILE PARAMETERS ARE SIMILAR TO THE PREVIOUS"C DEFINE FILE. HOWEVER, THIS FILE MAY NOT BE A SEQUENTIAL FILE."$C THE FILE IS TEMPORARY AND MAY BE DELETED AFTER PROGRAM EXECUTION. $C C DEFINE FILE 8(500,128,U,MCREC)C "C THE FOLLOWING COMMENTED DEFINE FILE STATEMENT IS INCLUDED FOR "C REFERENCE. IF NECESSARY, IT MAY BE USED TO DEFINE THEC INTERMEDIATE FILE THAT THE ASSEMBLY PROGRAM USES AS A "C RANDOM ACCESS FILE. THIS FILE SHOULD BE LEFT AS A SEQUENTIAL " C FILE IF POSSIBLE. THIS FILE HOLDS A COPY OF THE ASSEMBLER C SOURCE LINE TO BE READ ON PASS 2 AND SOME VARIABLES C CALCULATED ON PASS 1 THAT ARE REQUIRED ON PASS 2. C C DEFINE FILE 7(1000,91,U,IMREC)C C !C THE USER MAY WANT TO OPEN A DISK FILE FOR THE OUTPUT OBJECT !C MODULE AT THIS POINT. SEE OPERATION NOTES FOR DETAILSC C DEFINE 4(200,128,U,IOREC) C C INITIALIZE PROGRAM VARIABLESC  CALL FTIME(LTIME)  CALL INIT  C READ DEFINITION FILE CALL INOUT(2) C PERFORM PASS 1 OF ASSEMBLY, BUILD SYMBOL TABLE IPASS = 1  CALL PASS C REWIND INTERMEDIATE FILE REWIND IMFLE C SET MAXIMUM PROGRAM COUNTER  LCMAX = LCC INITIALIZE VARIABLES FOR PASS 2  CALL INIT "C PERFORM PASS 2 OF ASSEMBLY, GENERATE LISTING AND OBJECT MODULE" IPASS = 2  CALL PASS C CHECK TO SEE IF ENTRY SYMBOL FILE IS TO BE GENERATED IF(LMAP .EQ. 0) GO TO 200  IF(NENT .EQ. 0) GO TO 200 C WRITE HEADING TO LISTING WRITE(IPRT,1000) IFORM,LTITL,IPAGE WRITE(IPRT,1020) 1020 FORMAT(32X,15HENTRY POINT MAP) IDIV = 256**(ICCNT-1)  LINE = 4C SET UP MAP ARRAY STARTING ADDRESS AND LENGTH LODLC = -2 LC = MAPAD REAL1 = NENT LCMAX = LC+REAL1 C SET UP PARAMETERS TO PRODUCE MAP FILE  IEND = 0 LEN = 1  ISAV = IPCH IPCH = KPCH KSAV = KWORD KWORD = MWORD  IOREC = 1 C INITIALIZE OBJECT WORD TO DONT CARES DO 160 I=1,KWORD IOBIN(I) = ICHRX 160 CONTINUEC FIND ENTRY POINT SYMBOLS AND OUTPUT TO MAP FILE  NN = 0 DO 195 JJ=1,NENT 165 NN = NN+1  IF(ITABS(NN) .LT. 0) GO TO 165 II = ITABS(NN)-(ITABS(NN)/8)*8 IF(II .EQ. 2) GO TO 170  GO TO 165 #C FOUND NEXT ENTRY POINT SYMBOL, PLACE VALUE IN OBJECT CODE BUFFER# 170 IVAL = ITABV(NN) C CONVERT ENTRY POINT VALUE TO DISPLAYABLE BINARY  CALL AHEX(IVAL,0) C MOVE BITS TO OBJECT CODE BUFFER  I = 1  J = KWORD-35  K = 36 IF(J .GT. 0) GO TO 172 I = 37-KWORD  J = 1  K = KWORD  172 DO 175 L=1,K IOBIN(J) = IBIN(I)  I = I+1  J = J+1 175 CONTINUEC OUTPUT CURRENT ENTRY POINT SYMBOL  CALL OUTC DECODE SYMBOL VALUE INTO DISPLAYABLE CHARACTERS  ICNT = 0 DO 190 K=1,IWORD  ID = IDIV  II = ITAB(K,NN) DO 190 I=1,ICCNT ICNT = ICNT+1 ICHAR = II/ID  IF(ICHAR .NE. 0) GO TO 183C PAD OUT SYMBOL WITH BLANKS LLAB(ICNT) = IBLNK  GO TO 185  183 II = II-ICHAR*ID  LLAB(ICNT) = IALPH(ICHAR) 185 IF(ICNT .GE. MLAB) GO TO 192 ID = ID/256 190 CONTINUE C DECODE SYMBOL VALUE 192 CALL AHEX(IVAL,2) C DECODE ENTRY POINT MAP ADDRESS CALL AHEX(LC,1)  IF(LINE .LT. IOLIN) GO TO 193  IPAGE = IPAGE+1  WRITE(IPRT,1000) IFORM,LTITL,IPAGE LINE = 3C DISPLAY CURRENT ENTRY POINT SYMBOL ON LISTING 193 WRITE(IPRT,1030) (IADDR(1,K),K=6,12),(LLAB(K),K=1,ICNT), 1 (IADDR(2,K),K=6,12) 1030 FORMAT(1X,7A1,2X,8A1,2X,7A1) LINE = LINE+1  LC = LC+1.195 CONTINUE IEND = 1 CALL OUT IPCH = ISAV KWORD = KSAV #C CHECK TO SEE IF SYMBOL OR CROSS REFERENCE TABLE IS TO BE CREATED#200 IF((LSYM+LREF) .EQ. 0) GO TO 400 WRITE(IPRT,1000) IFORM,LTITL,IPAGE1000 FORMAT(A1,14X,50A1,2X,5HPAGE ,I4,/,/)  IF(LREF .GT. 0) GO TO 250  WRITE(IPRT,1010) 1010 FORMAT(32X,12HSYMBOL TABLE,/)  LINE = 5 GO TO 300  250 WRITE(IPRT,1011) 1011 FORMAT(24X,21HCROSS REFERENCE TABLE,//,  1 6H LABEL,4X,4HTYPE,3X,5HVALUE,10X,10HREFERENCES) LINE = 6300 CALL SYMTAC CHECK FOR OBJECT CODE BLOCK FORMAT400 IF(LOBJ2 .EQ. 0) GO TO 900 WRITE (IPRT,1002) IFORM 1002 FORMAT(A1,15X,13HOBJECT MODULE,/)  IF(IOFLG .EQ. 0) GO TO 900 IOREC = 1  REWIND IPCH C SKIP FIRST RECORD  I = IOREC  CALL INOUT(8) IOREC = IOREC+1 505 I = IOREC  CALL INOUT(8) IOREC = I+1 C CHECK FOR END OF OBJECT MODULE IF(IOB1 .EQ. IDOLR) GO TO 900 C CHECK FOR NEW ORIGIN ADDRESS IF(IOB1 .EQ. ICHRA) GO TO 520  C INCREMENT ADDRESS IVAL = IVAL+1.  GO TO 525 C READ OBJECT MODULE ADDRESS ON 'A' RECORD520 ICOL = 3 NFLAG = 1  DO 522 I=1,10 IN(I) = IOBIN(I) 522 CONTINUE CALL NUMB(0) IVAL = CVAL-1.  GO TO 505 C CONVERT ADDRESS TO BINARY HOLLERITH  525 CALL AHEX(IVAL,1)  K = 65 IF(KWORD .GT. 64) GO TO 540  K = 1  GO TO 550 540 WRITE(IPRT,2000) (IADDR(1,I),I=6,12),(IOBIN(I),I=1,64)2000 FORMAT(1X,7A1,2X,4(16A1,1X)) 550 WRITE(IPRT,2000) (IADDR(1,I),I=6,12),(IOBIN(I),I=K,KWORD)  GO TO 505 C EJECT PAGE900 WRITE(IPRT,1001) IFORM1001 FORMAT(A1)9990 STOP END  SUBROUTINE INIT C C C THIS SUBROUTINE INITIALIZES VARIOUS C VARIABLES USED BY THE ASSEMBLER C C  DIMENSION IFLNM(10),IFBUF(256) DIMENSION NALPH(37),NTITL(31),KATT(10) INTEGER FTYPE,FLEN,ECOL  REAL ITABV(600),LC,LODLC,LCMAX,MAPAD COMMON ICRD,IPRT,IPCH,MCFLE,IMFLE,IDFLE,MCREC,IMREC,IDREC ! COMMON IOREC,MLAB,MOPC,IBIT,ICCNT,IWORD,IEND,LEND,KTERM,KPCH!" COMMON LSOR,LIF,LSYM,LREF,LDEF,LOCT,LOBJ,LOBJ1,LOBJ2,LINV,LERR" COMMON LMAC,LADR,LLOC,LMAC1,LMAP,LEVEL,IND(80),JMAC  COMMON ILEN,KLEN,LLEN,FLEN,KWORD,IFLD(1024),IYFLD,IZFLD  COMMON IDUP,NDUP,NFLAG,IOFLG,LWORD,LINEL,KFILE,IFORM,NERR  COMMON IFBIT,ZVAL,CVAL,JREAD,LINE,IPAGE,MERR! COMMON IERRI,IERRL,ECOL,MAC,LISN,NARG,INDET,IFCTL,NOPRO,LEN ! COMMON LTBLK,IN(80),IMBU1(11),INB(80),IALPH(37),LTIME(15) COMMON IAST,IDOLR,ISHRP,IAMP,ICOLN,IGRAT,ILESS,IUNDR,IQUOT  COMMON IBLNK,ICTAB,ISEMI,ICOMM,IPLUS,IMIN,IMULT,IDIV COMMON IRPAR,ILPAR,IATT(10),JATT(6),LATT(10),IFPAR(16)" COMMON ICOL,IFCOL,MCOL,MLCOL,IOLIN,ICNT,LTITL(50),IADDR(4,12) " COMMON ITYPE,JTYPE,FTYPE,IERR,IERRS,IOPVA,JCOL,IBUG,IOVER " COMMON IPASS,LC,IOBIN(128),IPDEF,LODLC,LCMAX,LCMIN,NBASE,JBASE"! COMMON ITAB(4,600),ITABS(600),ITABV,NAME(4),INDEX,ISYM,LTAB !" COMMON IXTAB(512),MXREF,IXT,IXPNT,IXCNT,IXPAG,MCORE(128),MSIZE" COMMON MCNT,MXMAC,NEST,MSREC,IFLEV COMMON MCSPT,MCEPT,ICHK,LABCT,ICHAR,IFSET,MAPAD,NENT,MWORD  EQUIVALENCE (NALPH(2),NALP2)C  C SOME COMPUTERS DO NOT ACCEPT THE FULL ASCII CHARACTER SET. "C THEREFORE SOME OF THE CHARACTERS DEFINED BELOW MAY BE ILLEGAL ""C ON YOUR MACHINE. IF THIS IS THE CASE, THE ILLEGAL CHARACTERS "C SHOULD BE REPLACED BY UNIQUE VALID CHARACTERS. THE NEW$C CHARACTERS CAN THEN BE USED IN PLACE OF THE OLD ILLEGAL CHARACTERS$C " DATA NALPH( 1),NALPH( 2),NALPH( 3),NALPH( 4) /1H0,1H1,1H2,1H3/"" DATA NALPH( 5),NALPH( 6),NALPH( 7),NALPH( 8) /1H4,1H5,1H6,1H7/"" DATA NALPH( 9),NALPH(10),NALPH(11),NALPH(12) /1H8,1H9,1HA,1HB/"" DATA NALPH(13),NALPH(14),NALPH(15),NALPH(16) /1HC,1HD,1HE,1HF/"" DATA NALPH(17),NALPH(18),NALPH(19),NALPH(20) /1HG,1HH,1HI,1HJ/"" DATA NALPH(21),NALPH(22),NALPH(23),NALPH(24) /1HK,1HL,1HM,1HN/"" DATA NALPH(25),NALPH(26),NALPH(27),NALPH(28) /1HO,1HP,1HQ,1HR/"" DATA NALPH(29),NALPH(30),NALPH(31),NALPH(32) /1HS,1HT,1HU,1HV/"" DATA NALPH(33),NALPH(34),NALPH(35),NALPH(36) /1HW,1HX,1HY,1HZ/" DATA NALPH(37) /1H./ DATA NBLNK,NPLUS,NMIN,NUNDR,NQUOT /1H ,1H+,1H-,1H_,1H'/  DATA NDOLR,NCOMM,NAST,NSEMI,NCOLN /1H$,1H,,1H*,1H;,1H:/  DATA NSHRP,NAMP,NCTAB,NGRAT,NLESS /1H#,1H&,1H ,1H>,1H1dt5d,dl $fA @ d"`Nf(A1,15X,13HOBJECT MODULE,/) <<`a1Dd,t NZdd tVd t d t^4Zdt@@* d)Ty,d)<;;`aeTN,n ,dtt~tdDlLZdtD,t ;..`Z  ,Y$ dtAdDyZ,t,dl t .`F͔dDt  `Bdt `FpdtD , `EރdDt `Bt`J#dtD, d`K4t(1X,7A1,2X,4(16A1,1X))`F3wdl t `FǢdDt  `BŴdt `F͢dtD , `EնdDt `BӴdt **`X`ڢdtDyP, d,Ydl $ @ d*`B+(A1)`BI00`d,@ A%$m(mCg0 /INIT nc@INIT !! .FAD .FSB .EIO..IIO..DTA. .IOOP.EXIT LGBUFRHPARABREG!11`e0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z . 1`Sb + - _ ' $ , * ; : # & > < * / ) ( **`_n/M E T A A S S E M B L E R A S S E M B L Y P R O G R A M *`J%* - % : $ @ B Q H D ;;`^td;t d7t l 4P7t D h tZd:ttd2td.td9t;;;`_d'td8td7td6t $X&t d Dll LmZd t D", %` ;::`cư$?EB<#d ,-$X&1& d ,Bd5tXdt d PDml4d :;;`\6>Zt D",8d1TX,F,Xd0ND3tXdt d Dml Lld t D",Lf;;;`a?Zl ?E B<#d ,DŽn2X&d1TX,r,d0ND/tXdt d Dml ;;;`hI{PLld Xt D",x- ?$EB< P#d ,.X0& $?EB;;;`i<#d ,l ?[ a-<#d , $?[T$ <#d ;<<`]̰,N-d,t$d+t d*tt!t"t#d)t{td(td(td't d&t<<<`d0t d t PD,pPtt ttd%td<;;`b8 ttdtt`'PtttttPtttt;<<``/tt"tPt tt!t|t}Zt~DtPttttt#t<;;`^OPttt!tt%t d Dkl PLjd Pt D",[t d Dil Lh;<<`[]!md t D!,idbtdctddtdgtydhtditxdjtdkt|dqtdr<<<`Ztdstdttdltzdmt{dntdot}dpt~detdftt d Dgld <11`Xqt D ,t d$D t d Dgl LfZd t DP,1`Q~u("OPEN ERROR ON SOURCE FILE:",I5) `MQlR1  d ,`P1("OPEN ERROR ON LIST FILE:",I5) `MQlP1  d ,`Qo'("OPEN ERROR ON OBJECT FILE:",I5) `MQlN1  d ,`S("OPEN ERROR ON DEFINITION FILE:",I5) `MQlL1  d ,`P0("OPEN ERROR ON XREF FILE:",I5) `MRlJ1  d ,`Te-("OPEN ERROR ON INTERMEDIATE FILE:",I5) `MRlH1  d ,<<`kO`@" 8H%- ' 0 <<<`dw:`X|NU EXSEUN' t%N`!, ! SEQU ENTIALSC<`PP^ RATCH DIRECT.,C$M W )INOUTc@,INOUT$$ X.DCO .EIO..IIO..IAY..BIO..DTA..ENTR.GOTO.FSTP .EXITMESS $`C9MCFLE `C5IDFLE `C: OBFLE `C5 IMFLE ..`_$..R]$o*&ndl$7PPd,=.`C(80A1);;`\v<,tdDƢldtD,?dRtd[tdQtt,dtdl;`AX f `E7[dDt_ `BHYt<<`]͌`dtDP,[d,ZdtdtdtzdtydtdtdtAd<..`Yx} D,PAd{Dz,d,tdtdl. `EճdDt `Bt<<`_ֻdtDP,d,Zdtd@DtډdDldttd<::`^ DDlLdtdtD,dtZD,dzZ,$td:11`ZڢtAdzDZ,dztAdzDZ,$dtdl 1 `EmdDt `Bt;;`^&dtDP,d,PdttdtdDɴ lLdtdt;<<`_vdZD, d¶DtdDtP,d,Ytdtdl3PPd,<<<`b8dtdtl@dl1LPPddPtdtD,)d<55``Zt,lڂ@dlkb%d,l@6dl$5 `Ez|dDt `Bkzt<<`_odtD,|d,d tdytZdtAdDyP,tAdDy<##`R8,Ȉ 6,,,dt,dl$# `EdDt `Bt))`U:dtD,ddtdt dl ) `EжdDt `Bcδdt `NyբdtDP,dPdt  `D%(128A1) ;;``i,dtdlJ[ddt,tPdDtdDl ;<<``., ,dtPD,tdDlLdtD,dl#[<44`[*#Pddt,d tdtAdDy,8t,Sdl$K4 `E@dDtD `B->t''`TEdtDJ,@ddtdt dlg' `E2[dDt_ `BYdt ;;`b`dtDy,[ddt ,AdD,=l@؉dl$;99`dbPd,l@6dl&0PJd, , $@ 9**`_ \01! A (ey`g* PASS c@PASS "<<.FAD .FSB .FMP ..FCM.EIO..IIO..DTA..GOTOIFIX FLOAT.EXITINOUTOUT LOUT SCAN AHEX MODFYESCANLABEL<SMCCAL MCDEF OPCODMCREF`O/S I T X D Q O L B V E M A P C ;;`^""t"ttdtdtdt#tPttttt Zttd;;;`^@ttttud|,wd},^tdDlLZdtD,Od}t};;;`]^T,edtT#Z,e,wD}t}tdDlPLdZtD,j,d,;<<`a{T&,~,Ad D,,4Zdt,dtT&,td<;;`^]vidtdD lLdtD,td,T,1d,d}t|;<<`_-vdT,dT ,,ad#t, $/\md,,/T&,,d,F<;;`]^لtZdDT|,Z, dtdDT|,,dtdtT&,,;;;`\dtdDT,dDT,, dtdD, ,dT,,;<<`a#e,8 ")T&,&dӶT,YdDڂtd@@Dtd,&dDl<;;`^3LL,YT&,<,)ZtdDD lLdPtD,>dDl;;;`\2Qd@DtX`'Xdt,dD,,T&,e,dT,dT,dT;;;`_A:m,AdD,|AdĠ D,ZdD,,+AdD,jdtd;;;`ePD ,T&,,DtdT,,"b$e$+.V$$;;;`b$/oo&d%,tdDlePdtDy,t%dT,d"b;<<`g$e$+.V$g$$tdDtdtAdDP, <;;`^dDlLZdtdPtD,AdD,dtdDld;;;`_tD,,tAdD,_tdDlL ,4,;dt;<<`^7D,*,CdPDldPtdttdDlL  ,QZ,dtD<;;`^nU,GdDlZ ,C, dt,t, ttdDlLZ ,s,z;<<`^rsdtDZ,i,tudttdDlL ,,dZtD,d<<<`_e?Dl ,dttu:,d̀uDDtudt,~dD",D <;;`^F,dD,d,d@Dt6ЂdDlZ,d,#dD,d@;<<`]δDtӈ6ڂdDt=dv$D=T&,dDlLZL,dضT,,d<<<``shDtl #DtdT,,tdt,eT ,,tA<;;`\H dD,dtdt,dtd,dt,֢d,#d,6dD;;;`_'PlLt= #=tdT,6,yd@Dt= =dDPltT;::`c#FP,H,/Ad D,,dtdd4Zd@Dtf  f i:;;`^vqid,+dt,ֆAdD,/dtZdtAdDP,DtdD;<<`_tl td$DtDtdDiPdDtDtdDt<;;`_lDtdDZtDt,tt0ittdZ,d,,+ ;<<`_"T ,,,PtD&X,,t$PD ,dtd,tdtd<::`^ D,jdtdDlL,dt,PtAd D,Ptt:;;`]kttDtdDTZ,dtdtdD,,dttd;;;`_ņtAdDZ,hdDT,.,YdDtdt7T ,;,;<<``m>Ztd,sdtHT ,L,2tAdD,s,hdDT,_<<<`_^Z,cdt,dDt,dT,~d,AdDP,AdD<;;`[}Z,d,d,dtdtdDtdDtdDlZL,,d;<<`_.^tD,Z,dDt,dt,tAdDX,C&dD ,<;;`^,C,d,,/dDZ@tdDlLZ|d,,d,/d;;;`^PնDtdDlPL ,D,/,Zdtt,DtdD @t;;;``~ZD,dZ,+t,քT ,,dDT, ,Cdt;::`cx"T ,, ,C ,Ctt",Xt,t$P3D :::`c6, ',s ",g'd,֢d,d@0DtT'4XT,t:<<`iY$P[D , ,g t' ,}'  '!'t<<<`h]Dh`' : '',GtPD ,0 ,sZt,<<<`dH C$LFg[s&X^dyDv,g"tdD㢊lDdtPDy,t<<<`]uζdDytdtd,dyZDttdyttdD lLdtd<<<`bGPtdtD,,d}X,/t$PD , ,sd, ,s<<<`` Z t}d#Ptt,tttdD dtD,'"D ,EdDu<<<`a-PtdyD,O;;$?\pIdDut,\C&duDۢttdDlL<;;`^gNZdtdtdtZDu,IdDl Z,gdt,$tdDl;<<`aclL ,s,zdtD,i,pdyZD,O,ִdD"tl܀&<;;``Dtd@JD舀tPttt%dDtdtl Dt;<<``Tdtl6tdtxT,,dxtx,lx P%Dxtxlt<<<``N8ͶtdD dtD,lDtdDtdD l4t<<<`_[ZdttdDlt6dDZDt d@tdtD,<<<`d\ &==dDxt,dDdt@dD4Pdt0  <<<`f0"D,dxtv<fx,d,~dtE0U U$RpLU[$gXCFs&X^d<;;`aVt`$``~yyZdD,odZD,ldtdtZD,dxDu;;;`^wP,[,tDtdtdD,ddD,dt,dxDu,[;<<`^Վ4ZdxDttdDZTe,T,T,,adDlLdtd<;;`a0PtdtDx,DZtd,d%,d,քD ,E$CCI;;;`atp&d,墊dD,嶀dDlZ ,IT&,,d,d;11`^td' tP'd,+D&,}dlr!d1`S>(/,/,26H TOTAL ASSEMBLY ERRORS =,I5)<<`^dl1!d,}dt,1dt,ydضt,Ydt,ydt,yt<<<`\1ZttdPDledZtD,5dt,ydt,ydt,ydƶt,yd<;;`YBMt,ydt,ydt,ydt,ydt,ydжt,vdt,ydt,ydt;88`Yf,ydt,yd̶t,ydt,|dt,ydt,yDtDt,"8<<`n*@ @@"@@@    <--`b~76543%@$1(mygmCem#-"" OPCODc@4OPCOD '&.GOTOLABEL <<`n>?L I S T E Q U S E T I F E L S E E N D O R G R E S D A T A D <33`ga}mU P F F I F C I F N C I F D I F N D E N D M M A P 3<<`nCN O L I S T E N D I F S P A C E E J E C T @@+T I T L E A L I G N M A C R <`Q=.O L O C A L E X I T M <<`]ȟtdtPttt"ttdtdDT,dDT,dD<;;`_ l ,dDl ,,dPtdD,,dtdt# ;<<`]ddDT{,dDT|,d,dT,,dtdt,dtA<::`^|d DZ,WAdDZ,dttdtZttdDDtd:<<`^ ,dDtdЀDDZ,P,(dDtd6DD,P,(d<;;`_=)PtDP,dDZ,ddtd,EdDDl ,P,dd ;<<`^ 0HDDl ,P,ddtD,ZD ,dD,dtdt",d<;;`_f4ZDtd,n,td4ZDtlڂtd ZDt"t dDT;<<`\,dDT,,dtdD,,dt ,dât tt,dt <$$`Of+,dt dt#dtdD"t",dt $`U > 9 LABELc@LABEL.FAD .FDV .ITOI.ENTRERR0 IFIX XREFTSYMBL<<`btwtt8݉6dD ,̢d,ttdDֶDlL<::`^"Z ,/,'dtD,,7dtD,,dtD&,Sd,S:<<`b@ZdDtl$DhPtd,Pt d@D戀ڀdDtd<<<`bOb,pltՂDt,lڂtvl#Dtdv,td<<<`clDtֈۉ4Pd,t׈dtPD,ptעd,,d<<<`_%PtD,tdtvdD&D,ݶ,dt P,dD,<##`O-/Ƣdtdt,dt ,dඊt d t#`NO@@mg 'XSYMBLc@,SYMBL<<``ztttdD PdtD,tZttdDlL <<<`]Q ,",TdtD,dP,d D,AdtdDlLt(Pdt<::`^=PD ,2tdDlL  ,MZ,dtD,C,d D,{d:<<`]-[,adD,aZ,dtd ZD,j,odttdtdDlLt<33`X/xЀ(DdD,dZt,t ,dt ,dt Pd t3`ImC SNUMB c@NUMB J+.FAD .FSB .FMP .FDV .ENTRIFIX FLOAT `D`l `D`L <<`bk!tZdDtdDttwPttvt|dDl|L <<<`^5z*,,,=d|t|D,"dtdDlz ,k,dtt|dDl|L<;;`]H ,K,Rd|Zt|D,A,adD|DZtdtdZD,k,?t|dD;;;`^el|L ,m,td|Zt|D,c,dtdD lz ,Zdtwtd;;;`^DtdtdDl ,dPtdD,n,dtdPD,n;;;`]At|d|DlL  ,Z,d|t|D,dDT,dDT,d;;;`\<Zt,Dtd,d~,dt}dt~,dDtDtt|d|D;;;`]$ڶt}d|Dt~d|Dl ,,d|Zt|D,dZD,ndtt|d;;;`c8Dl|L ,,d|Pt|D},,nd}"D|!:dv;;;``N8D~tvb,q,#dPtD,dD},`t|4Zzd|Dtxdx;;;`b:,JtyzzzdyPtyDx,=ztydy,]P,Td|t|D,0;<<`\\Ztxdxtvdw,hdvDwZ,tt ,vdt ,vdt ,vdt ,vdt  <`S@6 Cd  xSCAN c@SCAN '' X.FAD .FSB .FMP .ENTR.GOTO IFIX FLOATMODFY ESCAN LOUT INOUTMCREF';;`cw4 PtPtudD,.dDl ,#dDà l ,';<<``#dt,dDl P,d,FT&,5,CAd D,?>,FB4,F<::`^`CFdtdD,dDl ,[dDlZ ,_dt,HdD:;;``a l ,d|,nt|t},tT&,t,{&wdt,~~td;<<`^..tT&,tdtdDƴ lLdtD,tdtt,t<<<`^ Zdttd%,,d%,zdttdDlLZ ,,dtD<;;`agT,, "tdDôlL ,,dZtD,,D;;;`a0dt,tu, tudDTe,,dttd;<<`^|DlL ,,dtD,dt,9dDà l ,9Zdttu, <;;`^t,zdDà l ,*dt,zdDà l{ ,9Zdtt%dt, <;<<`dZ;0 H H$$dt OxZD ,du,XdvtudvZDu,d<;;`^KP_Du,dyDu,tdDlLZ ,s,zdtDZ,i,t ,;::`Y1}dt ,dt ,dt ,dt ,dt ,dt ,dt ,dt d:$$`Ot,dt ,dt ,dt ,dt $&&`\@ P Cm& WESCANc@ESCAN-00.FAD .FSB .FMP .FDV ..FCM.ITOI.RTOI .ENTR.GOTOERR0 IFIX FLOATMODFY LABEL NUMB 0<<`nE Q _ N E _ G T _ L T _ L E _ G E _ A N D _ O R _ X O R _ S H L _ S H R _ <::`c.P,t}tm,n pdtrZtvtedDl ,Rted:;;`]xQtdDtZt tldlPDD,b,dltlD,Zde,ndT,;<<`a[ndD,vt,}dD,tZdDr,Rdtrtmnp,6,d<::`^Ppt} n,CdxPD,t},dT,,dt}dDr,Rdtr:<<`]Ntm,CdT,,dtthdtdDT,dhthAdDh,L,<<<`^ZPtDttdDZtdtdDlL,,dtZDh,d<<<``<Dt},dPtD,Dr,RtrfdTy,,9'fdttl<<<`cdlDth jdh,"dltijjjdiPtiDh,fjtidi,5<<<`e1}+P,,dltlD,thdhtv,X&<D $MDLUM GMd MOLAdD<<<`a׈PP,L`ftl dlD dltlD,ZtldDllL ,p,wdl<;;`^}qtlD,f,dlD,dDl,dtthdDlhLZ ,,;;;`]4dhthD,,dlD Zdt,ddDD,^d,ttdwt~;;;`_rdw,dvt~ZDe,dT",,dxt~ f~ZD ,adDe,͈f;<<`gTa4P,,?D P,dwDvX,Xd}tl$l$ %$,38=B ]fn,Fn<<<`eM fn,Fdf,n2ftidin,Fn,FnZ f,,n f,,<<<`cnn f,,Ԉn "f,,Ԉ0n f,Ԡ,ψn f,,dtydtw,yty<<<`e:dtw,ytytw,ydjj "f,Ԉfty y {n{n,Fd<<<`j~y_jj "f,Ԉftyy {0n{n,Fsutlnutx<;;`gdx{0{u nnfZutzdz{{BufډfdxDztxdyDx;<<`e,,dwDx,sus0uudltlD,sn,F,,؈<;;`cv ,t ,cdDr,R,Lp0n,,0, P,Udm,$ZtldlDth;;;`c~jdhP,ti0jjjditiDh,,2jtidi,!,dltl;<<``PD,Zthdhtvde,?dDlZ ,Ldt,6fdtetwdu<<<`[V;,Xdutw,X,,[,cdPtdD,L,Rdt ,cdt ,cdt ,cd<$$`OVt ,cdt ,cdt ,cdt ,cdt -$((`^@ @@( m(-- %MODFYc@*MODFY J.FAD .FSB .FMP .FDV ..FCM .ENTR.GOTOIFIX FLOAT<<`d  t dt, t,$ dD,),<<<`g?$ dD,섒116$Ո,: 6d,X td<<<`m ^K   ZtdB 0 <<<`c{ x",0€Љ,Dv,tvP,Dv,,tv<;;`h d,2td 0ʀtd;;;`i0 ,숀'Ztd0,,;`MdtD ,t ,d t `L@@8l LOUT c@LOUT 9 .EIO..IIO..IAY..DTA..ENTR.GOTO.EXITMESS AHEX ;;`^I88dtdtttdDԢldt¢D,DT,[dT,[d;;;`^GVVT,[d,__'tdD,ud,dT,l,ud,d!,ud;22`^ tZ,dtdZD,~,dl12ird2++``(A1,50A1,15A2,6H PAGE ,I4,/1X,4HLINE,4X,4HADDR,4X,9HSTATEMENT,/)+::`adtdt80&t~dtd̶T,,dtödl 1:`F9dDt `Bdt `H(1dtD, `E,ŶdDt `Bt`KʢdtDP,d`Nd (1X,I4,2X,6A1,2X,A1,1X,80A1),,`V#բd,ddZ,dd,ddtdDy,dl.$, `E{dDt `Bt`KdtDyP,d`H.(17X,6(8A1,1X)) `JZ,ddtdl. `EԳ dDt  `Bt&&`TNdtD, dZdDy,5dl.1& `E$dDt( `B"dt ""`R)dtDyP,$d,ddl$.I" `E=dDtA `B ;dt `PvyBdtD,=ddl. a `EITdDtX `B#Rdt <<``YYdtDyP,Tddtdb,td,udtd,u, wd<::`^mya, dZ,d!t!d˶T,,ndD Z,dT,dtd:$$`S.tt,dZD,~dl6@d$`B6(1X)((`SDtd,,dt,ttPdt9(`Q= a1(l99 OUT 9c@|OUT -.FAD .FSB FLOATINOUTAHEX <<`a)td,+,md,墆d,P',ft!d!D6l!L5d!<;;`^'PD5ld!Zt!D0, dNt)dt"t:'-d3t$d4t!d!D5l$ L7;;;`^QDEd$t$d!Zt!D1,>dDt+dUt0d"tW2t!d!D5l!L6Pd!t!;;;`_0cDy,Y):',d,t!d!D6l!L5d!D5ld!t!D0,r;;;`cLdt)dyt*d,t#dt"tdyq' 'Pt!d!@D8€%;<<`^Dw&%-d3t$d#PD5l$ L7Zd#t#d$t$D/,d#D5lUd*D#t#d!t!<;;`_7âD.,dDt,dDt3dDt:$2'bt!d!D5 l!L6d!Pt!Dy,;<<`]&ⶊd"t,t!d!D5ld!Pt!Dy,dyt)dyt*t,d,t!d!<::`^UD5le ,d!D5lD ,d!D5lD,d!D5lEd!t!XDy,: `D9$P2 `R'@@(l$ SYMTAc@"SYMTAe ^j.ITOI.EIO..IIO..DTA.ERR0 .EXITINOUT XREFTAHEX  `F#.(A E X D S M ;;`_=eeteD t:tdttd,zZ,d!,d!t!dl 2;`Hq&8!d`Ut-2(34H CROSS REFERENCE OVERFLOW AT LINE ,I5)<<`^Pdtt!tttdDDlZdtD,dtۢD,dt<;;`_(ZttdZ,td D,tdDܶDlL , ,,;::`^8&ɢdtDZ,tdܴZDl LLdtZD,dPtdt:::`^ړD,d,td,,dD dtZttdttd:<<`^tdDЁtdZ,dDDl,+dDlLtd|Z<;;`_#dDDlPL d D,ClЁtdtD ,dtD;<<`_4B,dD td,RlZDt,Zlڀ#DtdD,yd ,n<<<`_4aZdD Th,g,ndD Th,m,n,d@D 鄚yd涀DlLd<22`[,dDZ,dtdZD,,dlG1d2`BG(A1)`Hdtdl$I`GUdDDt`Bt`L<dtD,dDt`GdDDt€ `Bdt `F^âdtD,`Bt`KFɢdtDP,d`NYI(1X,4(8A1,1X,A1,1X,7A1,2X)) <<`_TԢd,,d,d",ߴZ,d#,,焐tttzd @@,#D"tߠd <<<`_ZD,,'t!l tPtttd!t 4Pd!t!tdDtdޠD<<<`^. lLdPtD, dDtdPtD,d td D,0dt<;;`^0tdDlZ ,EdtdtdDlLdDtD,2d ;<<`\wNDtd,tdDt޴ZdD,`dݶDDtdPtdD,vdl<`RjGqrddtdl$W`F~dDt`B|t`IdtD,~.`F3dDt `Bdt `FdtD, `E%dDt `Bdt `KdtDP,d`NmW(1X,8A1,2X,A1,3X,7A1,6X,8I6);;`]#dDtdDZtd,,tdDldtPD,PtdD;`MiʢldtۢD,dt.,Ue--`b7 @&ym$-,'gmC-ee ,*XREFTsc@1XREFT ;A.ENTRINOUT ;;``ՕBd!,hd$D#,P,d D",T,dt!,hl tn;<<`^h` tktotmdkDmtldmDr llLrdmPtmD,%d!t:6qdkDtkd!<;;`^>t!dotoZDn,#,hd#t#t"d$D#,d"t"d"Drld";`Nk\t"d"DrLptj`tPj`CyUp AHEX c@AHEX  .FAD .FSB .FMP .FDV ..FCM.ENTRIFIX FLOAT;;`_B,Z,dtdtdt׶dt, d,),1t;;;``"dtdtdt,1dtdⶊtdtt߉ ݈ߖtd ݈;<<`gB0ߐtdPttdttӴdD<<<`^IiځtdDlLtd|ZҠl؂tآdt,dDlL<::`^,dDlLZdtdPtDZ,edtD,a,:<<``d,DhZDttdDldtD,,tӠd<`LŶDlxdtD,`R*@ lC MCCALxc@MCCALi.FDV IFIX FLOATMSCAN<<``tt ZtAdnDZ,Cd,XdmD Al@,XdtdDs<;;`]h ldtdDsldtdDst\Zi\dtdDst\d$D\;;;`_ =dtdtDtdtDtdDwrtclcqt]dq]Dc;::`^a\tfdftbttd@DvgZtdf,p,dtedDe,dt:<<``(zdDs $flDtddeDul~ ,ddDu l} ,deteDdtdde<<<`^Ddt^d^,dD^liL Z@,IdeZtcdtdDslcLudctcDd<<<`^e,dtDbtbdb,,dD,dtPdkD D,p,Idb,<;;`^kִZ,d],,GPdkD D,ItcdtdDs dctcDb,d],;<<`^Z,GdtdZDslndjD ZD,IdtdDs ZdtdPDslhd<;;`^_tdDslhdpt^d#t`d#Zt#tal`^t_dtdDsl_Lt;;;`_0D_^D`t`l^oZt^dataDiZ, D]t]d],tdtd;`MiOvidDsd,X,Zdlt `QW g@ (Clg MCDEFc@MCDEFINOUTOPCODMSCANSYMBL;;`a)ttPtttttPAdD,KAdD ,Id;;;`^!D D,FdttآdtdD lLdPtD,+dtd;<<`^?tdDT,,Kdt,Kdtd,dt,&UdtPtt<;;`^^y]ttdD lLdtD,`dtdDT,d,|zd;<<`^X{t~dT ,,dtdT,P,d,tdDlLdt<::`^}D,,dPtdtttdtdttdT,d:99`\T,,RtZtDtԢdDtdDtdբDԀ$Dt9`R"( 67m MCREF.c@%MCREFPlINOUT::`^PPtPttdt#&\*d#tt!d!D,l!PL+d!Zt!D$,ad:;;`]WnD,t"d"tDt!d'D",d",Zd&D",d!t!d!D-,d!;;;`^1D-D),d&D"t"d!t!d!D-,,d!D-Z,,D"t"d";;;`]U,d!tdt d t d D-,,Pd D-D)P,dtD t d ;::`^!.ƢD,dD  DD,dtdD+lL-ZdtdPtD :;;`]#HZ,dtdD,l ,m,dD+lZL,d%D,d%DP,dt;88`Z.dt,mdtdtdPD+ldPtD$, ڬPd(tdt,8`J}h$ PP MSCANDc@MSCAN ;9.ENTRSYMBL <<``!BtwdD=l~Z ,d:, dD=Ztt dZD,-dD<;;`^ ,-dD,-dD,B,2,-,9d:,-dwtwdtd;<<`]>D,,-t0d0DCD,L,9d0t0D9,DdT,9t0dD=l0LB<;;`^3j[  ,aZ,d0t0D8,Wd ,,d5Pt5D,;<<`^ҴP,d0t0,,<D2,,D2t3d3D=lZ ,d3t2dD=l<;;`]b@ ,dtDt1d0t/d2t0d0D=l/d0t0ZD1,,.<..9=