PROGRAM RCA C C C C C R C A C C CROSS ASSEMBLER FOR THE RCA 1802 MICROPROCESSOR C C C C PROGRAM - RCA C C VERSION - V01 C C MACHINE - PDP 11/10 C C DATE- NOVEMBER 1977 C C AUTHOR- WAYNE BOWDISH C C C C C C C MODIFIED BY: C C W. B.18-JUN-78 C INSTALLED NEW GETFIL ROUTINE TO IMPLEMENT CSI C CORECTIONS TO P1SUDO, P2SUDO, XPRSIN FOR LARGE C ( IE 16 BIT ) VALUES OF EXPRESIONS C C C B. L. TINNEY MARCH 1980 C INSTALLED ON RSX-11M AT CCIW C USING F4P. THE DATA STATEMENT UNDER F4P DOESN'T ALLOW FOR IMPLIED C LISTS, THEREFORE, TO FILL UP THE LARGE ARRAYS, UP TO 40 CONT- C INUATION LINES ARE NEEDED. THIS IS DONE IN THE COMMAND LINE: C C >F4P RCA,RCA=RCA/CO:60. C C C B. L. TINNEY AUGUST 1980 C CLEANED UP A BIT BY EXPANDING SYMBOLS TO 12 CHARACTERS, C USE OF AN END OF LINE INDICATOR, ABSCOD TO 6 WORDS. C ADDED EXTENDED INSTRUCTIONS +SHL AND +SHR WHICH HAVE C AS AN OPERAND THE NUMBER (1 TO 4) OF SHIFTS TO MAKE. C C B. L. TINNEY JANUARY 1981 C ADDED 2 INSTRUCTIONS: .ASCIN (REPLACES .ASCIT) C +TRR C .ASCIN is the standard .ASCII psuedo-op except the last C byte has the high (negative) bit set. C +TRR is an extended instruction to transfer the contents C from 1 register to another. The sequence is: C Eg. +TRR RA,R8 becomes GHI RA 9A C PHI R8 B8 C GLO RA 8A C PLO R8 A8 C C B. L. TINNEY APRIL 1981 C ADDED AN ERRLIST PAGE BEFORE THE SYMBOL TABLE C ADDED A SYMBOL CROSS REFERENCE CAPABILITY C C C C O M M O N D E F I N I T I O N S C C THE FOLLOWING DEFINES ALL LABELED COMMON VARIABLES. THE LABELED COMMON C BLOCKS ARE LISTED IN ALPHABETICAL ORDER WITH VARIABLES WITHIN EACH C BLOCK IN ORDER OF OCCURANCE, NOT ALPHABETICAL ORDER C C BSUCOM C KEYCHR- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C SPECIAL CHARACTERS USED BY THE ASSEMBLER.THE DIGITS 0 C AND 9 AND THE CAPITAL LETTERS A AND Z ARE ALSO INCLUDED C FOR LIMIT CHECKING THE DIGITS AND LETTERS.NOTE THAT IF C THE ASSEMBLER IS TO BEIMPLEMENTED ON A COMPUTERWHICH C USES EBCDIC, THE ALPHABETIC CHARACTER CHECK WILL HAVE TO C BE MODIFIED. C REMIDX- INTEGER VARIABLE WHICH IS AN INDEX TO THE LAST CHARACTER C CHECKED IN THE REMAIN ARRAY ( SEE SRCLIN BLOCK ). C RADIX- INTEGER VARIABLE CONTAINING THE PRESENT DEFAULT RADIX. C RADIX IS INITIALIZE TO TEN BUT MAY BE CHANGED WITH THE C .RADIX PSEUDO-OP. C C FLAGS C IFFLAG- INTEGER VARIABLE WHICH CONTAINS THE PRESENT STATUS (TRUE C OR FALSE) OF THE PRESENT CONDITIONAL ASSEMBLY SECTION IF C THE ASSEMBLER IS CURRENTLY IN A CONDITIONAL ASSEMBLY (IE C A .IFXXX STATEMENT. A TRUE CONDITION IS INDICATED BY A 0 C IN IFFLAG WHILE 1 REPRESENTS A FALSE CONDITION. C IFCNT- INTEGER VARIABLEWHICH CONTAINS A COUNT OF THE PRESENT C LEVEL OF CONDITIONAL ASSEMBLY. C LSTFLG- INTEGER VARIABLE WHICH CONTAINS THE LISTING OPTION FLAGS C SET UP BY THE .LIST AND .NLIST PSEUDO-OPS. C C C IODEVS C SRCUNT- INTEGER VARIABLE CONTAINING THE LOGICAL UNIT ( CHANNEL ) C NUMBER OF THE DEVICE CONTAINING THE SOURCE INPUT FILE. C LSTUNT- INTEGER VARIABLE CONTAINING THE LOGICAL UNIT ( CHANNEL ) C NUMBER OF THE DEVICE WHICH WILL CONTAIN THE LISTING FILE C OR ZERO IF NO LISTING FILE IS DESIRED. C BINUNT- INTEGER VARIABLE CONTAINING THE LOGICAL UNIT ( CHANNEL ) C NUMBER OF THE DEVICEWHICH WILL CONTAIN THE BINARY FILE C OR ZERO IF NO BINARY OUTPUT IS REQUIRED. C C C C LSTHDG C LINCNT- INTEGER VARIABLEWHICH CONTAINS THE LINE NUMBER OF THE C PRESENT OUTPUT LINE C PAGNUM- INTEGER VARIABLEWHICH CONTAINS THE PAGE NUMBER OF THE C PRESENT LISTING PAGE C TITLE- INTEGER ARRAY WHICH CONTAINS THE PROGRAM TITLE SET UP BY C THE LAST .TITLE PSEUDO-OP. THIS TITLE IS PRINTED AT THE C TOP OF EACH LISTING PAGE C SUBTTL- INTEGER ARRAY WHICH CONTAINS THE SUB-TITLE SET UP BY THE C .SBTTL PSEUDO-OP. THIS SUBTITLE IS PRINTED ON THE SECOND C LINE OF EACH LISTING PAGE C LSTUNT- INTEGER VARIABLE CONTAINING THE LOGICAL UNIT ( CHANNEL ) C NUMBER OF THE LISTING OUTPUT DEVICE C ADATE- INTEGER ARRAY CONTAINING THE DATE IN ASCII. THE DATE IS C PRINTED ON THE TOP LINE OF EACH LISTING PAGE. C ATIME- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C TIME. THIS IS PRINTED ON THE FIRST LINE OF EACH LISTING C PAGE C VERSIN- INTEGER ARRAY CONTAINING THE NAME AND VERSION NUMBER OF C THE ASSEMBLER WHICH IS PRINTED ON THE FIRST LINE OF EACH C LISTING PAGE C PRGNAM- BYTE ARRAY CONTAINING THE FILE NAME OF THE ASSEMBLY C LANGUAGE PROGRAM BEING PROCESSED. THIS IS PRINTED ON THE C FIRST LINE OF EACH LISTING PAGE. C C C C OUTLIN C PCNTR- INTEGER VARIABLE USED AS THE PROGRAM COUNTER. PCNTR WILL C CONTAIN THE ADDRESS OF THE NEXT INSTRUCTION OR DATA BYTE C ABSCOD- INTEGER ARRAYIN WHICH THE ASCII REPRESENTATION OF THE C INSTRUCTION/DATA BYTES ARE BUILT FOR LISTING OUTPUT C OPINDX- INTEGER VARIABLE CONTAINING THE OPCODE TABLE INDEX OF C THE OPCODE FOR THE LINE BEING PROCESSED. C LABIDX- INTEGER VARIABLE CONTAINING THE SYMTAB TABLE INDEX OF C THE LABEL ( IF PRESENT ) FOR THE LINE BEING PROCESSED. C C PRGDAT C PASNUM- INTEGER VARIABLE CONTAINING THE ASSEMBLY PASS NUMBER. IF C INITIALLY 1 FOR PASS 1 AND THEN SET TO 2 DURING PASS 2. C PRGSIZ- INTEGER VARIABLE CONTAINING THE SIZE OF THE PROGRAM ( IN C BYTES ) SET AT THE END OF PASS 1 C ERRCNT- INTEGER VARIABLE WHICH CONTAINS A COUNT OF THE NUMBER OF C ERRORS DETECTED DURING PASS 2. C ERRFLG- INTEGER VARIABLE WHICH CONTAINS THE ERROR FLAGS FOR THE C LISTING OUTPUT FOR THE LINE BEING PROCESSED. C C PRMSYM C OPCODE- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C PSEUDO-OPS , INSTRUCTIONS , AND EXTENDED INSTRUCTIONS IN C ALPHABETIC ORDER C OPVALU- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C BASIC HEX CODES FOR EACH INSTRUCTION. THIS VALUE IS NOT C USED FOR THE PSEUDO-OPS OR EXTENDED INSTRUCTIONS C OPFLAG- INTEGER ARRAY WHICH CONTAINS FLAGS USED IN DECODEING THE C INSTRUCTIONS. FOR THE EXTENDED INSTRUCTIONS THE ENTRIES C ARE INDEXES TO THE XTDINS TABLE DEFINING THE INSTRUCTION C OPCSIZ- INTEGER ARRAY CONTAINING THE SIZE( IN BYTES ) FOR EACH C INSTRUCTION , PSEUDO-OP , AND EXTENDED INSTRUCTION. A -1 C ENTRY INDICATES A VARIABLE NUMBER OF BYTES C OPCNUM- INTEGER VARIABLE WHICH CONTAINS A COUNT OF THE NUMBER OF C ITEMS IN THE ABOVE TABLES C SUDONM- INTEGER VARIABLE WHICH CONTAINS A COUNT OF THE NUMBER OF C PSEUDO-OPS AND EXTENDED INSTRUCTIONS. C REGSYM- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C REGISTER SPECIFICATIONS ( IE. R1, RA, RCETC. ) . C EQLIDX- INTEGER VARIABLE CONTAINING THE INDEX INTO OPCODE OF THE C .EQL PSEUDO-OP. C XTDIDX- INTEGER VARIABLE WHICH CONTAINS A COUNT OF THE NUMBER OF C EXTENDED INSTRUCTIONS. C XTDINS- INTEGER ARRAY WHICH CONTAINS CODE D INFORMATION USED IN C DECODEING THE EXTENDED INSTRUCTIONS. C C C C PSHPOP C PSTACK- INTEGER ARRAY USED AS A PUSHDOWN STACK FOR REPEAT AND C MACRO EXPANSIONS C STKIDX- INTEGER VARIABLE USED AS THE STACK POINTER TO THE PUSH - C DOWN STACK C STKMAX- INTEGER VARIABLE WHOSE CONTENTS IS THE MAXIMUM SIZE OF C THE PUSHDOWN STACK C C REPEAT C RPTBUF- INTEGER ARRAY USED TO HOLD THE TEXT (SOURCE) OF A REPEAT C RANGE ( .REPT PSEUDO-OP ) C RPTEXP- INTEGER VARIABLE WHICH CONTAINS THE CURRENT VALUE OF THE C EXPRESSION OF THE .REPT PSEUDO CURRENTLY BEING PROCESSED C RPTPNT- INTEGER VARIABLE WHICH POINTS TO THE BEGINNING OF THE C CURRENT .REPT STATEMENT IN RPTBUF C RPTIDX- INTEGER VARIABLE WHICH POINTS TO THE LAST USED LOCATION C IN RPTBUF C RPTCNT- INTEGER VARIABLE WHICH CONTAINS THE .REPT COUNT (DEPTH) C IE. RPTCNT IS INCREMENTED WHEN A .REPT IS ENCOUNTERED C AND DECREMENTED WHEN A .ENDR IS ENCOUNTERED C RPTFLG- INTEGER VARIABLE USED AS A FLAGWORD AS FOLLOWS: C -1 REPEAT DATA FROM RPTBUF ( EXPANDING THE .REPT ) C 0 NO .REPT IN PROCESS C 1 CURRENTLY PROCESSING A .REPT ( PACK IN RPTBUF ) C C SRCLIN C LABEL- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C LABEL IN THE CURRENT LINE ( IF PRESENT ) C OPDATA- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C OPCODE IN THE CURRENT LINE ( IF ANY ) C REMAIN- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C OPERAND FIELD OF THE CURRENT LINE ( IF ANY ) C LINBUF- INTEGER ARRAY USED TO HOLD EACH SOURCE LINE AS IT IS C READ IN C C USRSYM C SYMTAB- INTEGER ARRAY CONTAINING THE ASCII REPRESENTATION OF THE C USER DEFINED SYMBOLS C SYMVAL- INTEGER ARRAY CONTAINING THE SYMBOL VALUE ( 16 BITS ) OF C EACH USER DEFINED SYMBOL C SYMFLG- INTEGER ARRAY CONTAINING FLAGS PERTAINING TO EACH USER C DEFINED SYMBOL C SYMNUM- INTEGER VARIABLE CONTAINING A COUNT OF THE NUMBER OF C USER DEFINED SYMBOLS CURRENTLY IN SYMTAB C C C INCLUDE 'BINCOM.CMN' INCLUDE 'BSUCOM.CMN' INCLUDE 'FLAGS.CMN' INCLUDE 'IODEVS.CMN' INCLUDE 'LSTHDG.CMN' INCLUDE 'OUTLIN.CMN' INCLUDE 'PRGDAT.CMN' INCLUDE 'PRMSYM.CMN' INCLUDE 'PSHPOP.CMN' INCLUDE 'REPEAT.CMN' INCLUDE 'SRCLIN.CMN' INCLUDE 'USRSYM.CMN' INTEGER QUIT C C TABLE OF OPCODE, PSEUDO-OP, AND EXTENDED INSTRUCTION NAMES C DATA OPCODE * / 2H+C, 2HAL, 2HL , 2H+D, 2HAD, 2HDI, 2H+D, 2HAD, 2HDM, * 2H+D, 2HAD, 2HDR, 2H+D, 2HAD, 2HDX, 2H+D, 2HLD, 2HI , * 2H+D, 2HLD, 2HM , 2H+D, 2HLD, 2HR , 2H+D, 2HLD, 2HX , * 2H+D, 2HSU, 2HBI, 2H+D, 2HSU, 2HBM, 2H+D, 2HSU, 2HBR, * 2H+D, 2HSU, 2HBX, 2H+P, 2HOP, 2HD , 2H+P, 2HOP, 2HR , * 2H+P, 2HUS, 2HHD, 2H+P, 2HUS, 2HHR, 2H+R, 2HET, 2HRN, * 2H+S, 2HHL, 2H , 2H+S, 2HHR, 2H , * 2H+S, 2HLL, 2H , 2H+S, 2HRL, 2H , 2H+T, 2HRR, 2H , * 2H.A, 2HSC, 2HII, * 2H.A, 2HSC, 2HIN, 2H.A, 2HSC, 2HIZ, 2H.B, 2HLO, 2HCK, * 2H.B, 2HYT, 2HE , 2H.D, 2HBY, 2HTE, 2H.D, 2HEF, 2H , * 2H.E, 2HND, 2H , 2H.E, 2HND, 2HIF, 2H.E, 2HND, 2HM , * 2H.E, 2HND, 2HR , 2H.E, 2HQL, 2H , 2H.F, 2HCO, 2HN , * 2H.G, 2HLO, 2HBL, 2H.I, 2HFD, 2HEF, 2H.I, 2HFE, 2HQ , * 2H.I, 2HFG, 2HE , 2H.I, 2HFG, 2HT , 2H.I, 2HFL, 2HE , * 2H.I, 2HFL, 2HT , 2H.I, 2HFN, 2HDF, 2H.I, 2HFN, 2HE , * 2H.I, 2HFP, 2H1 , 2H.I, 2HFP, 2H2 , 2H.L, 2HIS, 2HT , * 2H.M, 2HAC, 2HRO, 2H.N, 2HLI, 2HST, 2H.O, 2HRG, 2H , * 2H.Q, 2HBY, 2HTE, 2H.R, 2HAD, 2HIX, 2H.R, 2HEP, 2HT , * 2H.S, 2HBT, 2HTL, 2H.S, 2HLW, 2H , 2H.T, 2HBY, 2HTE, * 2H.T, 2HIT, 2HLE, 2H.X, 2HMA, 2HC , 2H.X, 2HSY, 2HM , * 2HAD, 2HC , 2H , 2HAD, 2HCI, 2H , 2HAD, 2HD , 2H , * 2HAD, 2HI , 2H , 2HAN, 2HD , 2H , 2HAN, 2HI , 2H , * 2HB1, 2H , 2H , 2HB2, 2H , 2H , 2HB3, 2H , 2H , * 2HB4, 2H , 2H , 2HBD, 2HF , 2H , 2HBG, 2HE , 2H , * 2HBL, 2H , 2H , 2HBM, 2H , 2H , 2HBN, 2H1 , 2H , * 2HBN, 2H2 , 2H , 2HBN, 2H3 , 2H , 2HBN, 2H4 , 2H , * 2HBN, 2HF , 2H , 2HBN, 2HQ , 2H , 2HBN, 2HZ , 2H , * 2HBP, 2HZ , 2H , 2HBQ, 2H , 2H , 2HBR, 2H , 2H , * 2HBZ, 2H , 2H , 2HDE, 2HC , 2H , 2HDI, 2HS , 2H , * 2HGH, 2HI , 2H , 2HGL, 2HO , 2H , 2HID, 2HL , 2H , * 2HIN, 2HC , 2H , 2HIN, 2HP , 2H , 2HIN, 2HP1, 2H , * 2HIN, 2HP2, 2H , 2HIN, 2HP3, 2H , 2HIN, 2HP4, 2H , * 2HIN, 2HP5, 2H , 2HIN, 2HP6, 2H , 2HIN, 2HP7, 2H , * 2HIR, 2HX , 2H , 2HLB, 2HDF, 2H , 2HLB, 2HGE, 2H , * 2HLB, 2HL , 2H , 2HLB, 2HM , 2H , 2HLB, 2HNF, 2H , * 2HLB, 2HNQ, 2H , 2HLB, 2HNZ, 2H , 2HLB, 2HPZ, 2H , * 2HLB, 2HQ , 2H , 2HLB, 2HR , 2H , 2HLB, 2HZ , 2H , * 2HLD, 2HA , 2H , 2HLD, 2HI , 2H , 2HLD, 2HN , 2H , * 2HLD, 2HX , 2H , 2HLD, 2HXA, 2H , 2HLS, 2HDF, 2H , * 2HLS, 2HIE, 2H , 2HLS, 2HKP, 2H , 2HLS, 2HNF, 2H , * 2HLS, 2HNQ, 2H , 2HLS, 2HNZ, 2H , 2HLS, 2HQ , 2H , * 2HLS, 2HZ , 2H , 2HMA, 2HRK, 2H , 2HNB, 2HR , 2H , * 2HNL, 2HBR, 2H , 2HNO, 2HP , 2H , 2HOR, 2H , 2H , * 2HOR, 2HI , 2H , 2HOU, 2HT , 2H , 2HOU, 2HT1, 2H , * 2HOU, 2HT2, 2H , 2HOU, 2HT3, 2H , 2HOU, 2HT4, 2H , * 2HOU, 2HT5, 2H , 2HOU, 2HT6, 2H , 2HOU, 2HT7, 2H , * 2HPH, 2HI , 2H , 2HPL, 2HO , 2H , 2HRE, 2HQ , 2H , * 2HRE, 2HT , 2H , 2HRS, 2HHL, 2H , 2HRS, 2HHR, 2H , * 2HSA, 2HV , 2H , 2HSD, 2H , 2H , 2HSD, 2HB , 2H , * 2HSD, 2HBI, 2H , 2HSD, 2HI , 2H , 2HSE, 2HP , 2H , * 2HSE, 2HQ , 2H , 2HSE, 2HX , 2H , 2HSH, 2HL , 2H , * 2HSH, 2HLC, 2H , 2HSH, 2HR , 2H , 2HSH, 2HRC, 2H , * 2HSK, 2HP , 2H , 2HSM, 2H , 2H , 2HSM, 2HB , 2H , * 2HSM, 2HBI, 2H , 2HSM, 2HI , 2H , 2HST, 2HR , 2H , * 2HST, 2HXD, 2H , 2HXO, 2HR , 2H , 2HXR, 2HI , 2H / C C TABLE OF OPCODE BASE VALUES AND PSEUDO-OP AND EXTENDED INSTRUCTION C INDEXES C DATA OPVALU * / 01 ,04 ,13 ,22 ,31 ,40 , * 47 ,52 ,57 ,62 ,70 ,80 , * 90 ,103 ,106 ,112 ,114 ,119 ,151,152, * 121 ,128 ,153 ,01 ,02 ,03 ,04 , * 05 ,06 ,07 ,08 ,09 ,10 , * 11 ,12 ,13 ,14 ,15 ,16 , * 17 ,18 ,19 ,20 ,21 ,22 , * 23 ,24 ,25 ,26 ,27 ,28 , * 29 ,30 ,31 ,32 ,33 ,34 , * 35, 36, 37, 2H74, 2H7C, 2HF4, * 2HFC, 2HF2, 2HFA, 2H34, 2H35, 2H36, * 2H37, 2H33, 2H33, 2H3B, 2H3B, 2H3C, * 2H3D, 2H3E, 2H3F, 2H3B, 2H39, 2H3A, * 2H33, 2H31, 2H30, 2H32, 2H20, 2H71, * 2H90, 2H80, 2H00, 2H10, 2H68, 2H69, * 2H6A, 2H6B, 2H6C, 2H6D, 2H6E, 2H6F, * 2H60, 2HC3, 2HC3, 2HCB, 2HCB, 2HCB, * 2HC9, 2HCA, 2HC3, 2HC1, 2HC0, 2HC2, * 2H40, 2HF8, 2H00, 2HF0, 2H72, 2HCF, * 2HCC, 2HC8, 2HC7, 2HC5, 2HC6, 2HCD, * 2HCE, 2H79, 2H38, 2HC8, 2HC4, 2HF1, * 2HF9, 2H60, 2H61, 2H62, 2H63, 2H64, * 2H65, 2H66, 2H67, 2HB0, 2HA0, 2H7A, * 2H70, 2H7E, 2H76, 2H78, 2HF5, 2H75, * 2H7D, 2HFD, 2HD0, 2H7B, 2HE0, 2HFE, * 2H7E, 2HF6, 2H76, 2H38, 2HF7, 2H77, * 2H7F, 2HFF, 2H50, 2H73, 2HF3, 2HFB/ C C TABLE OF INSTRUCTION ( ETC. ) SIZES IN BYTES C DATA OPCSIZ /3, 6, 6, 6, 8, 6, 4, 4, 4, * 6, 6, 6, 6, 2, 5, 1, 4, 1, 4,4, * 6, 6, 4,-1, -1, -1, -1, 1, 2, 0, * 0, 0, 0, 0, 0, 4, 0, 0, 0, * 0, 0, 0, 0, 0, 0, 0, 0, 0, * 0, 0, 0, 4, 0, 0, 0, 0, 3, * 0, 0, 0, 1, 2, 1, 2, 1, 2, * 2, 2, 2, 2, 2, 2, 2, 2, 2, * 2, 2, 2, 2, 2, 2, 2, 2, 2, * 2, 1, 1, 1, 1, 1, 1, 1, 1, * 1, 1, 1, 1, 1, 1, 1, 3, 3, * 3, 3, 3, 3, 3, 3, 3, 3, 3, * 1, 2, 1, 1, 1, 1, 1, 1, 1, * 1, 1, 1, 1, 1, 2, 3, 1, 1, * 2, 1, 1, 1, 1, 1, 1, 1, 1, * 1, 1, 1, 1, 1, 1, 1, 1, 1, * 2, 2, 1, 1, 1, 1, 1, 1, 1, * 1, 1, 1, 2, 2, 1, 1, 1, 2/ C C TABLE OF FLAGS FOR INSTRUCTION ( ETC. ) DECODING C DATA OPFLAG / 36, 36, 36, 36, 36, 36, 36, 36, 36, * 36, 36, 36, 36, 36, 36, 36, 36, 36,0,0, * 36, 36, 36, 10, 10, 10, 10, 12, 12, 10, * 11, 11, 10, 10, 11, 12, 10, 10, 10, * 10, 10, 10, 10, 10, 10, 10, 10, 10, * 10, 10, 11, 12, 10, 10, 14, 10, 12, * 14, 10, 10, 0, 2, 0, 2, 0, 2, * 1, 1, 1, 1, 1, 1, 1, 1, 1, * 1, 1, 1, 1, 1, 1, 1, 1, 1, * 1, 23, 0, 23, 23, 0, 23, 25, 0, * 0, 0, 0, 0, 0, 0, 0, 1, 1, * 1, 1, 1, 1, 1, 1, 1, 1, 1, * 23, 2, 23, 0, 0, 0, 0, 0, 0, * 0, 0, 0, 0, 0, 1, 1, 0, 0, * 2, 25, 0, 0, 0, 0, 0, 0, 0, * 23, 23, 0, 0, 0, 0, 0, 0, 0, * 2, 2, 23, 0, 23, 0, 0, 0, 0, * 0, 0, 0, 2, 2, 23, 0, 0, 2/ C C TABLE OF EXTENDED INSTRUCTION DECODING INFORMATION C DATA XTDINS * / 212, -302, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, 96, -128, 244, -160, 0000, * -144, 116, -176, -300, 248, -301, -160, * 248, -303, -176, -300, -300, -300, -300, * -300, -300, -464, -176, -464, -160, -300, * 114, -176, 114, -160, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, 96, 114, -300, * 96, 114, -160, 240, -176, -300, 115, * -300, -144, 115, -128, 115, -300, 213, * -300, -128, 254, -160, -144, 126, -176, * -300, -144, 246, -176, -128, 118, -160, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, -300, -300, -300, -300, * -300, -300, -300, 'FE', 'F6', -544, -176, * -528, -160, -300/ C C TABLE OF ASCII STRINGS TO DESCRIBE THE ERRORS ENCOUNTERED C DATA ERRNAM / * 4HAddr,4Hess ,4Herro,4Hr ( ,4Hbeyo,4Hnd 6,4H4K ),4H , * 4HInva,4Hlid ,4Herro,4Hr co,4Hde ,4H ,4H ,4H , * 4HIlle,4Hgal ,4Hchar,4Hacte,4Hr in,4H lin,4He ,4H , * 4HRefe,4Hrenc,4He to,4H dou,4Hbly ,4Hdefi,4Hned ,4Hvar., * 4HNo E,4HND s,4Htate,4Hment,4H ,4H ,4H ,4H , * 4HSymb,4Hol t,4Hable,4H ful,4Hl ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4HLabe,4Hl er,4Hror ,4H- la,4Hbel ,4Hnot ,4Hallo,4Hwed , * 4HMult,4Hiple,4Hly d,4Hefin,4Hed l,4Hable,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4HOper,4Hand ,4Herro,4Hr - ,4Hbad ,4Hvalu,4He, t,4Hype , * 4HPhas,4He er,4Hror ,4H- la,4Hbel ,4Hchan,4Hged ,4H , * 4HQues,4Htion,4Hable,4H syn,4Htax ,4H ,4H ,4H , * 4HRegi,4Hster,4H err,4Hor -,4H ill,4Hegal,4H val,4Hue , * 4HStac,4Hk ov,4Her/u,4Hnder,4H flo,4Hw ,4H ,4H , * 4HTrun,4Hcati,4Hon e,4Hrror,4H ,4H ,4H ,4H , * 4HUnde,4Hfine,4Hd sy,4Hmbol,4H in ,4Hoper,4Hand ,4H , * 4HVers,4Hion ,4Herro,4Hr - ,4H not,4H imp,4Hleme,4Hnted, * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H , * 4H ,4H ,4H ,4H ,4H ,4H ,4H ,4H / C C TABLE OF REGISTER SYMBOLIC NAMES ( BLANKS DENOTE UNUSED SLOTS ) C DATA REGSYM / 2HR0,2H ,2H ,2HR1,2H ,2H ,2HR2,2H ,2H , * 2HR3, 2H , 2H , 2HR4, 2H , 2H , 2HR5, 2H , 2H , * 2HR6, 2H , 2H , 2HR7, 2H , 2H , 2HR8, 2H , 2H , * 2HR9, 2H , 2H , 2HR1, 2H0 , 2H , 2HR1, 2H1 , 2H , * 2HR1, 2H2 , 2H , 2HR1, 2H3 , 2H , 2HR1, 2H4 , 2H , * 2HR1, 2H5 , 2H , 2HDM, 2HAR, 2H , 2HIP, 2HC , 2H , * 2HSP, 2H , 2H , 2HPC, 2H , 2H , 2HCA, 2HLL, 2H , * 2HRE, 2HTU, 2HRN, 2H , 2H , 2H , 2H , 2H , 2H , * 2H , 2H , 2H , 2H , 2H , 2H , 2HRA, 2H , 2H , * 2HRB, 2H , 2H , 2HRC, 2H , 2H , 2HRD, 2H , 2H , * 2HRE, 2H , 2H , 2HRF, 2H , 2H / C C TABLE OF LEGAL CHARACTERS. LETTERS IN THE RANGE A THROUGH Z AND THE C DIGITS 0 THROUGH 9 ARE REPRESENTED BY THEIR LIMITS C DATA KEYCHR / 1H+, 1H-, 1H*, 1H/, 1H^, 1H&, * 1H!,1H_, 1H:, 1H;, 1H., 1H , * 1H#, 1H<, 1H>, 1H0, 1H9, 1HA, * 1HZ, 1H,, 1H=, 1H', 1H", 1H[, * 1H], 1H$, 1H@, "20011 / C C MISCELLANEOUS DATA INITIALIZES C DATA OPCNUM / 165 / !NUMBER OF ENTRIES IN OPCODE TABLE DATA SUDONM / 60 / !NUMBER OF EXTENDED INSTR. + PSEUDO OPS DATA EQLIDX / 35 / !INDEX TO THE .EQL PSEUDO IN OPCODE DATA XTDIDX / 23 / !NUMBER OF EXTENDED INSTRUCTIONS DATA VERSIN /2HRC, 2HA1, 2H80, 2H2-, 2HV2, 2H.3/ !VERSION NO. DATA STKMAX / 100 / !NUMBER OF WORDS IN PUSH DOWN STACK DATA SYMMAX /1000/ !MAX NUMBER OF USER SYMBOLS C C C MAINLINE PROGRAM - THE MEAT OF THE MATTER C C D WRITE (4,1) D 1 FORMAT (' RCA STARTS IT ALL') CALL INITP1 !INITIALIZE FOR PASS 1 CALL GETFIL(QUIT) !OPEN FILES FO I/O IF (QUIT.EQ.1) GO TO 5 !Z HIT SO STOP CALL PASS1 !PERFORM PASS1 FUNCTIONS CALL INITP2 !INITIALIZE FOR PASS 2 CALL PASS2 !PERFORM PASS 2 FUNCTIONS CALL ERRPRT !OUTPUT ERROR TABLE CALL XRFPRT !OUTPUT CROSS REFERENCE TABLE CALL SYMPRT !OUTPUT SYMBOL TABLE AND PROGRAM STATS IF ( SRCUNT .GT. 0 ) CLOSE(UNIT=SRCUNT) !CLOSE SOURCE FILE IF (LSTUNT.GT.0.AND.SPL) $ CALL SPOOL(LSTUNT,2,.FALSE.,.TRUE.,1,ISTAT) IF (LSTUNT.GT.0.AND..NOT.SPL) CLOSE(UNIT=LSTUNT) IF ( BINUNT .GT. 0 ) CLOSE(UNIT=BINUNT) !CLOSE BINARY FILE IF (XRFUNT.GT.0) CLOSE(UNIT=XRFUNT) !CLOSE XREF FILE 5 CALL EXIT END