ER[DG2B]; TARGET[ILC]; %DG2B MUST BE ASSEMBLED WITH DG1 FOR MAXC2, DG2A WITH DG1 FOR MAXC 1. IT CONTAINS ALL THE FLAG REGISTER TEST ROUTINES, BASIC IM READING AND WRITING, AND OTHER TESTS PECULIAR TO EACH MACHINE. % *TEST OF TENF SOURCE TENFT: SETF[-1S], Q_A1, CALL[Q27]; *Q_37 777777 P_TENF, CALL[PEQZ]; *BREAK IF P # 777740 000000 CLEARF[-1S], P_B, B_Q; Q_TENF, CALL[QZT]; *BREAK IF Q # 0 Q_P; STEMP_Q; P_B, B_NOT Q, SETF[STEMP]; Q_TENF, CALL[QZT]; *TENF=0 WHEN F=37 777777 *TEST OF SAX SAXT: P_NULL; Q_P+1, SAX[1], CALL[PXCOMP]; *SAX[1] FAILED Q LSH 1, SAX[2], CALL[PXCOMP]; *SAX[2] FAILED Q LSH 1, SAX[4], CALL[PXCOMP]; *SAX[4] FAILED Q LSH 1, SAX[10], CALL[PXCOMP]; *SAX[10] FAILED Q LSH 1, SAX[20], CALL[PXCOMP]; *SAX[20] FAILED Q LSH 1, SAX[40], CALL[PXCOMP]; *SAX[40] FAILED Q LSH 1, SAX[100], CALL[PXCOMP]; *SAX[100] FAILED Q LSH 1, SAX[200], CALL[PXCOMP]; *SAX[200] FAILED *TEST OF BAX BAXT: P_NULL; Q_P+1, BAX[1]; P_X, CALL[PQCOMP]; *Z[BAX[1]] FAILED X_A1; BAX[1], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[1]] FAILED Q LSH 1, BAX[2]; P_X, CALL[PQCOMP]; *Z[BAX[2]] FAILED X_A1; BAX[2], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[2]] FAILED Q LSH 1, BAX[4]; P_X, CALL[PQCOMP]; *Z[BAX[4]] FAILED X_A1; BAX[4], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[4]] FAILED Q LSH 1, BAX[10]; P_X, CALL[PQCOMP]; *Z[BAX[10]] FAILED X_A1; BAX[10], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[10]] FAILED Q LSH 1, BAX[20]; P_X, CALL[PQCOMP]; *Z[BAX[20]] FAILED X_A1; BAX[20], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[20]] FAILED Q LSH 1, BAX[40]; P_X, CALL[PQCOMP]; *Z[BAX[40]] FAILED X_A1; BAX[40], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[40]] FAILED Q LSH 1, BAX[100]; P_X, CALL[PQCOMP]; *Z[BAX[100]] FAILED X_A1; BAX[100], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[100]] FAILED Q LSH 1, BAX[200]; P_X, CALL[PQCOMP]; *Z[BAX[200]] FAILED X_A1; BAX[200], NOZ; P_X, CALL[PQCOMP]; *BS[BAX[200]] FAILED *TEST OF AX AXT: P_NULL, AX[1]; Q_P+1, P_X, CALL[PQCOMP]; *AX[1] FAILED Q LSH 1, AX[2], CALL[PXCOMP]; *AX[2] FAILED Q LSH 1, AX[4], CALL[PXCOMP]; *AX[4] FAILED Q LSH 1, AX[10], CALL[PXCOMP]; *AX[10] FAILED Q LSH 1, AX[20], CALL[PXCOMP]; *AX[20] FAILED *TEST OF BAT BATT: P_NULL; Q_P+1, P_1IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 1 Q LSH 1, P_2IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 2 Q LSH 1, P_4IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 4 Q LSH 1, P_10IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 10 Q LSH 1, P_20IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 20 Q LSH 1, P_40IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 40 Q LSH 1, P_100IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 100 Q LSH 1, P_200IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 200 Q LSH 1, P_400IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 400 Q LSH 1, P_1000IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 1000 Q LSH 1, P_2000IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 2000 Q LSH 1, P_4000IB; CALL[PQCOMP]; *BS[BAT] FAILED ON 4000 BATTZ: P_NULL; Q_P+1, P_(1IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 1 Q LSH 1, P_(2IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 2 Q LSH 1, P_(4IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 4 Q LSH 1, P_(10IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 10 Q LSH 1, P_(20IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 20 Q LSH 1, P_(40IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 40 Q LSH 1, P_(100IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 100 Q LSH 1, P_(200IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 200 Q LSH 1, P_(400IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 400 Q LSH 1, P_(1000IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 1000 Q LSH 1, P_(2000IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 2000 Q LSH 1, P_(4000IB) U (NULL); CALL[PQCOMP]; *Z[BAT] FAILED ON 4000 *TEST OF SM HIGH SMHIT: Q_A1, Y_NULL, DGOTO[.+1]; Q LSH 1, CALL[QL3]; *Q_777777 777400 P_B, B_Q; SY_Q, INCY; *INIT SM 0-377 DISTINCTIVELY P_Q_B, B_P+1, GOTO[.-1,Y>=0]; P_Q_NULL; SY_Q, INCY; *INIT SM 400-777 WITH LOW 8 BITS OF ADDRESS P_Q_B, B_P+1, GOTO[.-1,Y<0]; *FIRST INITIATE READ USING THE BS FIELD *FOR SA .L. 20, READSH HAS NO EFFECT SMHIT1: P_NULL; Q_P+1, CALL[QL3]; Q LSH 1, P_H$, SA[20], CALL[PQCOMP]; *BS[READSH] FAILED ON SA=20 Q LSH 1, P_H$, SA[40], CALL[PQCOMP]; *BS[READSH] FAILED ON SA=40 Q LSH 1, P_H$, SA[100], CALL[PQCOMP]; *BS[READSH] FAILED ON SA=100 Q LSH 1, P_H$, SA[200], CALL[PQCOMP]; *BS[READSH] FAILED ON SA=200 *NEXT INITIATE FROM F1 FIELD SMHIT2: P_NULL; Q_P+1, CALL[QL3]; Q LSH 1, P_(H$) U (NULL), SA[20], CALL[PQCOMP]; *F1[READSH] FAILED ON SA=20 Q LSH 1, P_(H$) U (NULL), SA[40], CALL[PQCOMP]; *F1[READSH] FAILED ON SA=40 Q LSH 1, P_(H$) U (NULL), SA[100], CALL[PQCOMP]; *F1[READSH] FAILED ON SA=100 Q LSH 1, P_(H$) U (NULL), SA[200], CALL[PQCOMP]; *F1[READSH] FAILED ON SA=200 *TEST OF EREG WRITTEN FROM Q, ALU, AND SM EREGT: Q_A1, CALL [EREGTX]; P_NULL; Q_P+1, CALL[EREGTX]; Q LCY 1, CALL[EREGTX]; GOTO[.-1,Q EVEN]; GOTO[DG2END]; EREGTX: STEMP_Q; P_EREG, CALL[PQCOMP]; *EREG WRITTEN FROM Q WAS P SHOULD BE Q B_Q_NOT Q; P_EREG, CALL[PQCOMP]; *EREG WRITTEN FROM ALU WAS P SHOULD BE Q STEMP1_Q; Q_STEMP; P_EREG, CALL[PQCOMP]; *EREG WRITTEN FROM SM WAS P SHOULD BE Q Q_STEMP1; P_EREG, CALL[PQCOMP]; *EREG WRITTEN FROM SM WAS P SHOULD BE Q Q_STEMP, RETURN; *F-REGISTER TEST ROUTINES FZT: P_FLAGS, GOTO[PZT]; *BREAK IF F ISN'T = 0 NFZT: P_FLAGS, GOTO[NPZT]; *BREAK IF NOT F ISN'T 0 FQEQ: P_FLAGS, GOTO[PQCOMP]; *BREAK IF F#Q FQNEQ: P_FLAGS, GOTO[PEQZ]; *BREAK IF NOT F # Q FPEQ: Q_FLAGS, GOTO[PEQZ]; *BREAK IF NOT F ISN'T = P F1T: P_FLAGS; Q_P-1, GOTO[AZT]; *BREAK IF F ISN'T 1 PXCOMP: P_X, GOTO[PQCOMP]; *COMPARE X TO Q DG2END: GOTO[MCYCLE]; *END OF DG2. THIS INSTRUCTION OVERWRITTEN *IF MORE DIAGNOSTICS ARE LOADED IM[ILC,ADD[IP[ILC],-1]];