'HEAD' NAME LIST INITIALIZATION C EDIT DATE 10DEC78 20:42 C SOURCE FILE NLINITFTM.FS C AUTHOR F. T. MICKEY C CLUSTER 23 'OUTFILE' NLINITFTM.FR N OVERLAY OLNLI C SUBROUTINE NLINIT C C INITIALIZE THE NAME LIST WITH REGISTER AND C OPERATOR DEFINITIONS. C SUBROUTINE NLINIT 'INCLUDE' LOGOSAJH.IN, 'INCLUDE' BRACEFTM.IN, 'INCLUDE' REGSJHP.IN, 'INCLUDE' NLISTCFTM.IN, 'INCLUDE' NLARAYFTM.IN, 'INCLUDE' NLNAMEFTM.IN, INTEGER GCHAR, SNMLST INTEGER TS, PTR, COUNT, OP, REG, II, RETRN INTEGER NAMIN (179) DATA NAMIN /4, 'AREG', 1, 4, 'XREG', 2, ^ 4, 'YREG', 3, 6, 'STKPTR', 4, ^ 9, 'REMAINDER', -1, ^ 3, 'CT0', -1, 3, 'CT1', -1, ^ 3, 'CT2', -1, 3, 'CT3', -1, ^ 3, 'CT4', -1, 3, 'CT5', -1, ^ 3, 'CT6', -1, ^ 3, 'FL0', -1, 3, 'FL1', -1, ^ 3, 'FL2', -1, 3, 'FL3', -1, ^ 3, 'FL4', -1, 3, 'FL5', -1, ^ 7, '.NULLX.', 0, ^ 3, 'FOR', 6, 2, 'DO', 7, ^ 5, 'WHILE', 8, 3, 'END', 9, ^ 3, 'RBR', 9, 3, 'LBR', 10, ^ 6, 'RETURN', 11, 3, 'MOD', 28, ^ 2, 'OR', 29, 3, 'AND', 30, ^ 3, 'XOR', 32, 3, 'DEC', 42, ^ 2, 'LS', 34, 2, 'RS', 35, ^ 2, 'LC', 36, 2, 'RC', 37, ^ 3, 'ALS', 38, 3, 'ARS', 39, ^ 3, 'COM', 43, 3, 'LOC', 44, ^ 4, 'ZREL', 47, 2, 'TP', 48, ^ 2, 'SP', 49, 2, 'DP', 50, ^ 2, 'ST', 51, 3, 'HEX', 52, ^ 0/ 'EJECT' C DEFINE AREG, XREG, YREG PTR = 1 ASSIGN 100 TO RETRN OP = 0 REGBIT = ISHFT (1, 15) REG = REGBIT 'DOLOOP' TS = 1, 3 GOTO 1000 100 REGS (TS) = NLX 'END' REG = 0 C DEFINE THE NAME LIST INDEX TO THE STACK POINTER 'STK PTR' ASSIGN 200 TO RETRN GO TO 1000 200 STPTRX = NLX C DEFINE THE NAME LIST INDEX TO 'REMAINDER' ASSIGN 210 TO RETRN GO TO 1000 210 REMNLX = NLX C PUT THE CT NAMES IN THE LIST ASSIGN 300 TO RETRN 'DOLOOP' TS = 4, 10 REG = DPBIT + EXDBIT GO TO 1000 300 REGS (TS) = NLX 'END' NRREGS = 10 // MAXIMUM AVAILABLE C PUT THE FL NAMES IN THE NAME LIST ASSIGN 400 TO RETRN 'DOLOOP' TS = 1, 6 REG = DPBIT + EXDBIT GO TO 1000 400 FLS (TS) = NLX 'END' C DEFINE A NAME AT ABSOLUTE 0 REG = LCMASK ASSIGN 500 TO RETRN GO TO 1000 500 NULLX = SNMLST (TS) C PUT THE OPERATORS IN THE NAME LIST OP = OPBIT REG = 0 ASSIGN 600 TO RETRN 'DO' 'WHILE' (NAMIN (PTR) .NE. 0) GOTO 1000 600 CONTINUE 'END' RETURN 'EJECT' 1000 COUNT = NAMIN (PTR) PTR = PTR + 1 'DOLOOP' II = 1, COUNT CALL PCHAR (NAME, II+1, GCHAR (NAMIN (PTR), II)) 'END' CALL PCHAR (NAME, COUNT+2, XBBL) CALL PCHAR (NAME, 1, IOR (COUNT, OP)) PTR = PTR + (COUNT + 1)/2 II = SNMLST (II) NLIST (NLX) = IOR (NLIST (NLX), REG) NLOC (NLX) = NAMIN (PTR) PTR = PTR + 1 GOTO RETRN END