C C C META ASSEMBLER ASSEMBLY PROGRAM VERSION 5.0 C 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 1980 C C C THE VARIABLES PASSED IN COMMON ARE DEFINED BELOW C C C CVAL = THE VALUE OF A NUMERIC CONSTANT OR LABEL C ECOL = COLUMN IN WHICH ERROR WAS DETECTED C FLEN = LENGTH OF DEFINITION FIELD CURRENTLY BEING SCANNED C FTYPE = FIELD TYPE FOR DEFS AND SUBS C IADDR = ARRAY TO HOLD HOLLERITH ADDRESS VALUES C 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 BUFFER C ICHK = CURRENT OPCODE VALUE C 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 SCAN C ICRD = LOGICAL UNIT NUMBER OF DEFINITION FILE C 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 SOURCE C IERRL = ERROR INDICATOR FOR LABELS C IERRI = ERROR INDICATOR FOR OPCODES AND OPERANDS C IERR = ERROR INDICATOR C IERRS = TOTAL NUMBER OF ERRORS C IFBIT = MAXIMUM NUMBER OF BITS IN A FIELD C IFCOL = FIRST COLUMN OF SCAN C IFCTL = IF CONTROL FLAG C IFLD = FIELD DEFINITION TABLE C 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 DUPLICATED C INDEX = INDEX OF CURRENT SYMBOL INTO SYMBOL TABLE C INDET = INDEX OF LABEL INTO SYMBOL TABLE C 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 LABEL C IXCNT = NUMBER OF CROSS REFERENCE PAGES C IXPNT = POINTER INTO CROSS REFERENCE TABLE C 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 INDEX C 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 MAP C KTERM = LOGICAL UNIT NUMBER FOR ERROR LINE LISTING C KWORD = NUMBER OF BITS IN A WORD C 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 FIELD C LC = ASSEMBLY PROGRAM COUNTER C 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 LINE C 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 LISTING C 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 ADDRESS C MCFLE = LOGICAL UNIT NUMBER OF INTERMEDIATE FILE C MCNAM = MACRO NAME TABLE C 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 ROUTINE C MLAB = MAXIMUM LABEL LENGTH C MLCOL = LAST COLUMN PRINTED ON OUTPUT LISTING C MOPC = MAXIMUM OPCODE LENGTH C MPARC = NUMBER OF PARAMETERS IN A MACRO DEFINITION C MSIZE = SIZE OF RECORDS WRITTEN TO INTERMEDIATE FILE C MSREC = MACRO FILE RECORD NUMBER C MWORD = WIDTH OF ENTRY POINT MAPPING ARRAY C MXMAC = MAXIMUM NUMBER OF MACROS C MXREF = SIZE OF CORE RESIDENT CROSS REFERENCE ARRAY C NAME = BUFFER THAT HOLDS SYMBOL C NARG = NUMBER OF ARGUMENTS IN CURRENT MACRO CALL C NBASE = DEFAULT BASE FOR NUMBERS C 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 SUBROUTINES C REAL IVAL DIMENSION IBIN(128),LLAB(10) INTEGER FTYPE,FLEN,ECOL REAL ITABV(500),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(500),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) 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,500),ITABS(500),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) OPEN(UNIT=9,IOSTAT=IOS,STATUS='OLD', + ACCESS='SEQUENTIAL',FILE='DEFFILE.BIN',FORM='UNFORMATTED') OPEN(UNIT=8,IOSTAT=IOS,STATUS='SCRATCH', + ACCESS='DIRECT',RECL=512,FORM='UNFORMATTED') OPEN(UNIT=5,IOSTAT=IOS,STATUS='OLD', + ACCESS='SEQUENTIAL',FILE='EXAMPLE.ASM',FORM='FORMATTED') OPEN(UNIT=6,IOSTAT=IOS,STATUS='NEW', + ACCESS='SEQUENTIAL',FILE='OUTPUT.TXT',FORM='FORMATTED') 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 TEMPORARY C 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) COMMENTED_OUT C C THE FOLLOWING COMMENTED DEFINE FILE STATEMENT IS INCLUDED FOR C REFERENCE. IF NECESSARY, IT MAY BE USED TO DEFINE THE C 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) OPEN(UNIT=7,IOSTAT=IOS,STATUS='SCRATCH', + ACCESS='SEQUENTIAL',FORM='UNFORMATTED') 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 DETAILS C C DEFINE 4(200,128,U,IOREC) OPEN(UNIT=4,IOSTAT=IOS,STATUS='NEW', + ACCESS='SEQUENTIAL',FILE='OBJECT.BIN',FORM='FORMATTED') C C INITIALIZE PROGRAM VARIABLES 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 = LC C 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 = 4 C 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 CONTINUE C 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 CONTINUE C OUTPUT CURRENT ENTRY POINT SYMBOL CALL OUT C 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 183 C 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 = 3 C 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,IPAGE 1000 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 = 6 300 CALL SYMTA C CHECK FOR OBJECT CODE BLOCK FORMAT 400 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' RECORD 520 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 PAGE 900 WRITE(IPRT,1001) IFORM 1001 FORMAT(A1) STOP END SUBROUTINE INIT C C C THIS SUBROUTINE INITIALIZES VARIOUS C VARIABLES USED BY THE ASSEMBLER C C DIMENSION NALPH(37),NTITL(31),KATT(10) INTEGER FTYPE,FLEN,ECOL REAL ITABV(500),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(500),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) 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,500),ITABS(500),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>,1H