SUBROUTINE GSOR(I,J) C GET SOURCE OPERAND. C OUTPUT: I=VALUE. C J=0-OK; NOT ZERO-ERROR IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/GEN3/SOUR,DEST,SD,DD,SM,DM,SREG,DREG COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN4/ DE,SE 1 J=0 IF(SM.EQ.0.AND.SD.EQ.0)GOTO 2 IF(SG.EQ.0)GOTO3 CALL FME(SE,I,J) RETURN 3 CALL FMW(SE,I,J) CALL ODD(SE,K) J=J+K RETURN 2 CALL GREG(SREG,I) IF(SG.NE.0)CALL LAND(I,ML) RETURN END SUBROUTINE GDEST(I,J) C GET DESTINATION OPERAND C OUTPUT: SAME AS GSOR IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/GEN3/SOUR,DEST,SD,DD,SM,DM,SREG,DREG COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN4/ DE,SE 1 J=0 IF(DM.EQ.0.AND.DD.EQ.0)GOTO2 IF(SG.EQ.0)GOTO 3 CALL FME(DE,I,J) RETURN 3 CALL FMW(DE,I,J) CALL ODD(DE,K) J=J+K RETURN 2 CALL GREG(DREG,I) IF(SG.NE.0)CALL LAND(I,ML) RETURN END SUBROUTINE SDEST(I,J) C STORE IN DESTINATION OPERATION. C INPUT: I=VALUE TO STORE. C OUTPUT: J=0-OK; NOT 0-ERROR. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/GEN3/SOUR,DEST,SD,DD,SM,DM,SREG,DREG COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN4/ DE,SE 1 J=0 IF(DM.EQ.0.AND.DD.EQ.0)GOTO 2 IF(SG.EQ.0)GOTO 3 CALL SME(DE,I,J) RETURN 3 CALL ODD(DE,J) IF(J.NE.0)RETURN CALL SMW(DE,I,J) RETURN 2 IF(SG.EQ.0)CALL PREG(DREG,I) IF(SG.NE.0)CALL PREGB(DREG,I) RETURN END SUBROUTINE GREG(A,BB) C GET REGISTER C INPUT: A=REGISTER NUMBER. C OUTPUT: BB=VALUE. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) 1 BB=REGISTER(A+2) CALL LAND(BB,MAL) RETURN END SUBROUTINE PREGB(A,BB) C STORE BYTE IN REGISTER. C INPUT: A=REGISTER NUMBER. C BB=VALUE TO STORE. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) 1 CALL GREG(A,C) CALL BTX(C,WM7,WM0,BB) REGISTER(A+2)=C RETURN END SUBROUTINE PREG(A,BB) C STORE WORD IN REGISTER. C INPUT: A=REGISTER NUMBER. C BB=VALUE TO STORE. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) 1 C=BB CALL LAND(C,MAL) REGISTER(A+2)=C RETURN END SUBROUTINE GETMOD(A,BB,C,D) C UNPACK 6-BIT ADDRESS MODE FIELD. C INPUT: A=FIELD. C OUTPUT: BB=DEFER C C=MODE. C D=REGISTER. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION CALL BXT(BB,A,WM3,WM3) CALL BXT(C,A,WM5,WM4) CALL BXT(D,A,WM2,WM0) RETURN END SUBROUTINE GETSE(A,E) C GET SOURCE EFF ADR. C OUTPUT: A=EFF ADR. C E=0-OK; NOT 0-ERROR. IMPLICIT INTEGER (A-Z) 1 I=1 CALL GETEFA(A,E,I) RETURN END SUBROUTINE GETDE(A,E) C GET DEST EFF ADR. IMPLICIT INTEGER (A-Z) 1 I=2 CALL GETEFA(A,E,I) RETURN END SUBROUTINE GETEFA(A,E,I) C COMMON EFF ADR CALCULATOR. C OUTPUT: A=EFF ADR. C E=0-OK; NOT 0-ERROR. C INPUT: I=1-SOURCE C =2-DEST. IMPLICIT INTEGER (A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/GEN3/SOUR,DEST,SD,DD,SM,DM,SREG,DREG COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) COMMON/LPOVAD/LPOVAD,LPOVFL,TRAF,WAITF 1 E=0 C GET SOURCE OR DEST PARAMETERS. BB=SM C=SD D=SREG IF(I.EQ.1)GOTO 8 BB=DM C=DD D=DREG C TEST FOR REGISTER MODE. 8 IF(BB.EQ.0)GOTO 2 C TEST FOR FULL INDEX MODE. IF(BB.EQ.3)GOTO 3 C AUTOINDEX MODES. AX=2 IF( D.LT.6 .AND.SG.EQ.1.AND.C.EQ.0)AX=1 IF(BB.EQ.2)AX=-AX CALL GREG(D,T1) C TEST FOR SP OVERFLOW. IF(D.EQ.6.AND.AX.EQ.-2.AND.T1.LE.LPOVAD)LPOVFL=1 IF(AX)4,5,5 4 T1=T1+AX A=T1 GOTO 6 5 A=T1 T1=T1+AX 6 CALL PREG(D,T1) GOTO 7 C REGISTER. 2 IF(C.EQ.0)RETURN CALL GREG(D,A) RETURN C FULL INDEX. 3 T1=PC PC=PC+2 CALL LAND(T1,MAL) CALL LAND(PC,MAL) CALL GREG(D,T2) CALL FMW(T1,T3,E) IF(E.NE.0)RETURN A=T2+T3 7 CALL LAND(A,MAL) C TEST FOR DEFERRED. IF(C.EQ.0)RETURN CALL ODD(A,E) IF(E.NE.0)RETURN T1=A CALL FMW(T1,A,E) RETURN END SUBROUTINE ADD(A,BB,C,D,E) C DO AN ADD. C INPUT: A=OPERAND. C BB=OPERAND. C OUTPUT: C=A+BB C D=CARRY. C E=OVERFLOW. IMPLICIT INTEGER (A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION C GET BYTE OR WORD MASKS. 1 T1=MLC IF(SG.EQ.0)T1=MALC T2=T1-1 T3=T1/2 CALL LAND(A,T2) CALL LAND(BB,T2) T4=T3 CALL LAND(T4,A) T5=T3 CALL LAND(T5,BB) C=A+BB T6=T3 CALL LAND(T6,C) D=T1 CALL LAND(D,C) E=0 CALL LXOR(T4,T5) IF(T4.EQ.0.AND.T6.NE.T5)E=1 CALL LAND(C,T2) RETURN END SUBROUTINE ODD(A,E) C TEST FOR ODD NUMBER. C INPUT: A=NUMBER. C OUTPUT: E=LOW ORDER BIT(ODD/EVEN BIT) IMPLICIT INTEGER (A-Z) 1 E=A CALL LAND(E,1) RETURN END SUBROUTINE PUSHLP(A,E) C PUSH A WORD ONTO SP STACK. C INPUT: A=VALUE TO PUSH. C OUTPUT: E=0-OK; NOT 0-ERROR. IMPLICIT INTEGER (A-Z) COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/LPOVAD/LPOVAD,LPOVFL,TRAF,WAITF 1 LP=LP-2 CALL LAND(LP,MAL) CALL ODD(LP,E) CALL SMW(LP,A,F) E=E+F C CHECK FOR SP OVERFLOW. IF(LP.LT.LPOVAD)LPOVFL=1 RETURN END SUBROUTINE POPLP(A,E) C POP A WORD FROM SP STACK. C OUTPUT: A=VALUE. C E=0-OK; NOT ZERO-ERROR. IMPLICIT INTEGER (A-Z) COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION 1 CALL ODD(LP,E) CALL FMW(LP,A,F) E=E+F LP=LP+2 CALL LAND(LP,MAL) RETURN END SUBROUTINE SUB(A,BB,C,D,E) C DO A SUBTRACT. C INPUT: A,BB=OPERANDS. C OUTPUT: C=BB-A C D=CARRY. C E=OVERFLOW. IMPLICIT INTEGER(A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION 1 T1=C2T7 IF(SG.EQ.0)T1=C2T15 T4=A CALL LXOR(T4,MAL) T2=T4 T3=BB CALL LAND(T2,T1) CALL LAND(T3,T1) CALL ADD(T4,BB,T7,T5,T6) CALL ADD(1,T7,C,T8,T6) T5=T5+T8 D=0 IF(T5.EQ.0)D=1 CALL LXOR(T2,T3) T4=C CALL LAND(T4,T1) E=0 IF(T2.EQ.0.AND.T3.NE.T4)E=1 RETURN END