ASMB,A,B,L,C HED 2100 SERIES COMPUTER SHIFT-ROTATE TEST ORG 2B * ******************************************************************* * * * DIAGNOSTIC CHECKS SHIFT-ROTATE INSTR GROUP * CHECKS INSTRS & CONDITIONS AFFECTING OVERFLOW REG. * * DIAGNOSTIC ASSUMES THE FOLLOWING TESTS HAVE BEEN RUN * * MEMORY REFERENCE GROUP DSN 101000 * ALTER-SKIP GROUP DSN 101001 * * RUNS IN 4K MEMORY * * TELETYPE NOT REQUIRED * * DIAGNOSTIC CONFIGURATOR NOT REQUIRED * * DIAGNOSTIC SERIAL NO (DSN) 101002 * * OPERATING INSTRUCTIONS: * * 1. LOAD SRG DIAGNOSTIC. * * 2. SET P REGISTER TO 100. * * 3. SELECT PROGRAM OPTIONS: * *************** SWITCH REGISTER OPTIONS *************************** * * BIT MEANING * * 0 LOOP BACK TO REPEAT A FAILING INSTRUCTION * BUT HALT 76 BEFORE EXECUTION * 1-11 RESERVED * 12 CLEAR TO HALT 102077 AT END OF PASS(A = PASS COUNT). * SET TO LOOP ON DIAGNOSTIC. * 13-15 RESERVED * * * 4. PRESS PRESET(INT. & EXT. IF PRESENT) AND RUN. * SKP * * *************** COMPUTER HALTS ************************************* * * HALT MEANING * * 10200X X= 1, A OR B ERROR; =2, E ERROR; =4, SKIP ERROR * A = ACTUAL A OR B RESULT * B = EXPECTED A OR B RESULT * E = ACTUAL E RESULT * 102000 ERROR DISPLAY HALT * A = FAILING INSTR CODE * B = ORIGINAL VALUE IN A OR B * E = ORIGINAL VALUE IN E * 10204X OVERFLOW INSTR ERROR (X=ERROR #) * 10205X OVERFLOW ERROR FROM ARITHMETIC OPERATION WITH A REG * 10206X OVERFLOW ERROR FROM ARITHMETIC OPERATION WITH B REG * 102076 HALT BEFORE REPEATING ERROR CONDITION * 102077 END OF PASS HALT(A = PASS COUNT) * 103000 UNEXPECTED CHANGE IN A REG * 103001 UNEXPECTED CHANGE IN B REG * 106077 UNEXPECTED TRAP CELL HALT * ******************************************************************* SKP * UNL * REP 62 FILL TRAP CELLS * OCT 106077 LOC 2 THRU 77 UNL REP 62 OCT 106077 LST ORG 100B JMP START ORG 126B OCT 101002 DIAGNOSTIC SERIAL NO ORG 130B JMP START JMP START SPC 3 A EQU 0 B EQU 1 BIT0 OCT 1 BIT1 OCT 2 BIT2 OCT 4 BIT3 OCT 10 BIT4 OCT 20 BIT5 OCT 40 BIT6 OCT 100 BIT9 OCT 1000 BIT11 OCT 4000 BIT12 OCT 10000 BIT15 OCT 100000 .5 DEC 5 .6 DEC 6 .8 EQU BIT3 B100 EQU BIT6 PATX OCT 173567 FIXED PATTERN FOR NON WORKING SOVFC OCT 77777 M1 OCT 177777 PCA NOP PASS COUNT IE NOP INITIAL CONTENTS OF E REG ARG NOP ORGINAL A OR B REG PATTERN EAB NOP EXPECTED A OR B REG RESULT AAB NOP ACTUAL A OR B REG RESULT EE NOP EXPECTED E REGISTER RESULT PTI NOP PATTERN POINTER PT1 NOP TABLE 1 POINTER PT2 NOP TABLE 2 POINTER REG NOP BIT11 OF INSTRUCTION ESKP NOP EXPECTED SKIP FLAG (0= NO SKIP) J NOP COLUMN 4 INDEX K NOP COLUMN 1 INDEX KX NOP COLUMN 1 FIELD EE1 NOP EXPECTED E AFTER 1ST SHIFT OR ROTATE EAB1 NOP EXPECTED A OR B AFTER 1ST SHIFT PT1X NOP TEMPORARY STORAGE FOR PT1 CLE NOP BIT 5 OF INSTRUCTION SLAB NOP BIT 3 OF INSTRUCTION TBL5A DEF TBL5 TBL6A DEF TBL6 PATA DEF PAT1 FWA PATTERNS PATE DEF P0020 LWA PATTERNS TBL1A EQU PATE FWA TABLE 1 TBL2A DEF P1020 FWA TABLE 2 SITA DEF SIT FWA SPECIAL INSTRUCTION TABLE SIT6A DEF SIT6 ADDR. OF 1ST ELA INSTR. IN TBL. SITE DEF SIT+8 LWA SPECIAL INSTRUCTION TABLE SPC 3 * EXECUTE & CHECK ROUTINE FOR SHIFT ROTATE INSTRUCTIONS * E.C NOP LDB INSTR B _ INSTRUCTION LDA ESKP SZA TEST EXPECTED SKIP JMP E.C1 SKIP EXPECTED JSB INITT INITIALIZE RSS SKIP OVER REPEAT HALT RPTNS HLT 76B HLT BEFORE REPEAT INSTR NOP EXECUTE SHIFT ROTATE INSTRUCTION RSS NO SKIP EXPECTED ISZ SKPEI UNEXPECTED SKIP - STEP INDICATOR JMP E.C2 E.C1 STB INSTX PUT INSTRUCTION IN LINE JSB INITT INITIALIZE RSS SKIP OVER REPEAT HALT RPTS HLT 76B HLT BEFORE REPEAT INSTX NOP EXECUTE SHIFT ROTATE INSTRUCTION ISZ SKPEI DID NOT SKIP - STEP INDICATOR E.C2 STA AAB ASSUME ACTUAL A OR B IS A REG. LDA INSTR AND BIT11 SZA TEST REGISTER INVOLVED JMP E.C4 ACTUAL REG. IS B CPB PATX ACTUAL REG. IS A JMP E.C5 LDA INSTR ERROR: UNEXPECTED CHANGE IN B OCT 103001 HALT: T_103001, A_INSTR JMP E.C9 GO CHECK FOR REPEAT E.C4 LDA AAB RESTORE A REG RESULT STB AAB ACTUAL REGISTER IS B REGISTER CPA PATX JMP E.C5 LDB INSTR ERROR: UNEXPECTED CHANGE IN A OCT 103000 HALT: T_103000, B_INSTR JMP E.C9 GO CHECK FOR REPEAT E.C5 CLB INITIALIZE POSSIBLE HALT CODE ISZ SKPEI CHECK SKIP INDICATOR - IT SHOULD RSS HAVE BEEN -2 ADB BIT2 WAS -1: SKIP OR NO SKIP ERROR LDA EAB CPA AAB COMPARE ACTUAL & EXPECTED A OR B RSS REGISTER RESULTS ADB BIT0 A OR B REGISTER ERROR CLA,SEZ CCA A _ ACTUAL E REG: -1 IF NOT 0 CPA EE CHECK ACTUAL & EXPECTED E RESULT RSS ADB BIT1 E REGISTER RESULT ERROR SZB,RSS JMP E.C,I B=0, NO ERRORS, RETURN P+1 * * ERROR HALT & DISPLAY 1 * ADB HLT0 FORM HALT 10200X INSTRUCTION STB HLTI STORE IT IN LINE LDA AAB A _ ACTUAL A OR B REG. RESULT LDB EAB B _ EXPECTED A OR B REG. RESULT HLTI HLT .0X E _ ACTUAL E RESULT, T_10200X * * 2ND DISPLAY HALT * LDA IE CLE,SZA CCE E _ ORGINAL E REG. CONTENTS LDA INSTR A _ SHIFT ROTATE INSTRUCTION LDB ARG B _ ORGINAL A OR B REG. CONTENTS HLT0 HLT 0 T _ 102000 * E.C9 LIA 1 AND BIT0 SZA,RSS SWITCH 0 CLEAR JMP E.C,I DON'T LOOP REPEAT ON ERROR LDA ESKP BEFORE REPEATING, CHECK THE SZA EXPECTED SKIP INDICATOR AGAIN JMP E.C3 JSB INITT REINITIALIZE JMP RPTNS DO AGAIN - NO SKIP EXPECTED E.C3 JSB INITT JMP RPTS DO AGAIN - SKIP EXPECTED * INITT NOP LDB M2 STB SKPEI RESET SKIP ERROR INDICATOR TO -2 LDA IE CLE,SZA CCE INITIALIZE E REGISTER LDA INSTR AND BIT11 SZA JMP INIT1 LDA ARG A REGISTER INSTRUCTION LDB PATX A_ARG, B_043210 JMP INITT,I INIT1 LDA PATX B REGISTER INSTRUCTION LDB ARG A_043210, B_REG JMP INITT,I * M2 DEC -2 SKPEI NOP SKIP ERROR INDICATOR: 0 = ERROR .0X EQU 0 SPC 3 * SUBROUTINE TO UPDATE EAB WHEN J OR K IS 5 OR 6 * GIVEN J OR K IN B * SC1 NOP CLA CPB .5 IF J OR K = 5, LDA BIT15 EAB _ EAB + BIT15 * IE CPB .6 IF J OR K = 6 LDA BIT0 EAB _ EAB + BIT0 * IE AND IE IOR EAB STA EAB JMP SC1,I SPC 3 * SUBROUTINE TO CHANGE EE WHEN J OR K IS 5 OR 6 * GIVEN J OR K IN B * SC2 NOP CLA CPB .5 IF J OR K IS 5, LDA BIT0 THEN EE _ BIT0 * ARG CPB .6 IF J OR K IS 6, LDA BIT15 THEN EE _ BIT15 * ARG SZA,RSS JMP SC2,I IF NEITHER 5 OR 6, LEAVE AND ARG EE UNCHANGED SZA CCA MAKE EE -1 IF NOT 0 STA EE JMP SC2,I SPC 3 START CLC 0,C TURN EVERYTHING OFF CLA STA PCA RESET END OF PASS COUNT SPC 3 * GROUP 0: NOP * SOP CLA STA ESKP ESKP _ 0 STA INSTR INSTR _ 0 G0.2 STA IE FOR IE _ 0,1 STA EE EE _ IE LDB PATA G0.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) STA EAB EAB _ ARG JSB E.C GO EXECUTE & CHECK INSTRUCTION LDB PTI INB CPB PATE CCA,RSS JMP G0.1 NEXT I CPA IE RSS JMP G0.2 NEXT IE SPC 3 * GROUP 4: CLE * CLA STA ESKP ESKP _ 0 STA EE EE _ 0 G4.3 STA REG FOR REG _ 0,1 IOR BIT5 STA INSTR INSTR _ REG + BIT5 CLA G4.2 STA IE FOR IE _ 0,1 LDB PATA G4.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) STA EAB EAB _ ARG JSB E.C EXECUTE & CHECK LDB PTI INB CPB PATE CCA,RSS JMP G4.1 NEXT I CPA IE RSS JMP G4.2 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G4.3 NEXT REG SPC 3 * GROUP 2: SLA - SLB * CLA G2.3 STA REG FOR REG _ 0,1 ADA BIT3 STA INSTR INSTR _ REG + BIT3 CLA G2.2 STA IE FOR IE _ 0,1 STA EE EE _ IE LDB PATA G2.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) STA EAB EAB _ ARG AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * ARG) JSB E.C GO EXECUTE & CHECK LDB PTI INB CPB PATE CCA,RSS JMP G2.1 NEXT I CPA IE RSS JMP G2.2 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G2.3 NEXT REG SPC 3 * GROUP 6: CLE,SLA - CLE,SLB * CLA STA EE EE _ 0 G6.3 STA REG FOR REG _ 0,1 ADA BIT5 ADA BIT3 STA INSTR INSTR _ REG + BIT3 + BIT5 CLA G6.2 STA IE FOR IE _ 0,1 LDB PATA G6.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) STA EAB EAB _ ARG AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * ARG) JSB E.C GO EXECUTE & CHECK LDB PTI INB CPB PATE CCA,RSS JMP G6.1 NEXT I CPA IE RSS JMP G6.2 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G6.3 NEXT REG SPC 3 * GROUP 1: COL4 * CLA STA ESKP ESKP _ 0 G1.4 STA REG FOR REG _ 0,1 CLA G1.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA G1.2 STA J FOR J _ 0,7 ADA BIT4 ADA REG STA INSTR INSTR _ REG + BIT4 + J LDB PATA G1.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) LDA PT1,I STA EAB ASSUME EAB = TBL1(I,J) LDA IE STA EE ASSUME EE = IE LDB J JSB SC1 CHECK EAB FOR J = 5 OR 6 LDB J JSB SC2 CHECK EE FOR J = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G1.1 NEXT I ADA J CPA .8 CCA,RSS JMP G1.2 NEXT J CPA IE RSS JMP G1.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G1.4 NEXT REG SPC 3 * GROUP 10: COL1 * CLA STA ESKP ESKP _ 0 G10.4 STA REG FOR REG _ 0,1 CLA G10.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA CLB G10.2 STA K FOR K _ 0,7 STB KX KX _ K*2**8 ADB BIT9 ADB REG STB INSTR INSTR _ REG + BIT9 + KX LDB PATA G10.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) LDA PT1,I STA EAB EAB _ TBL1(I,K) LDA IE STA EE EE _ IE LDB K JSB SC1 CHECK EAB FOR K = 5 OR 6 LDB K JSB SC2 CHECK EE FOR K = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G10.1 NEXT I LDB KX ADB B100 ADA K CPA .8 CCA,RSS JMP G10.2 NEXT K CPA IE RSS JMP G10.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G10.4 NEXT REG SPC 3 * GROUP 3: SLA,COL4 - SLB,COL4 * CLA G3.4 STA REG FOR REG _ 0,1 CLA G3.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA G3.2 STA J FOR J _ 0,7 ADA BIT3 ADA BIT4 ADA REG STA INSTR INSTR _ REG + BIT4 + BIT3 + J LDB PATA G3.1 STB PTI FOR I - 1,7 LDA B,I STA ARG ARG _ PAT(I) AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * ARG) LDA IE STA EE EE _ IE LDA PT1,I STA EAB EAB _ TBL1(I,J) LDB J JSB SC1 CHECK EAB FOR K = 5 OR 6 LDB J JSB SC2 CHECK EE FOR K = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G3.1 NEXT I ADA J CPA .8 CCA,RSS JMP G3.2 NEXT J CPA IE RSS JMP G3.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G3.4 NEXT REG SPC 3 * GROUP 5: CLE,COL4 * CLA STA ESKP ESKP _ 0 G5.4 STA REG FOR REG _ 0,1 CLA G5.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA G5.2 STA J FOR J _ 0,7 ADA BIT5 ADA BIT4 ADA REG STA INSTR INSTR _ REG + BIT5 + BIT4 + J LDB PATA G5.1 STB PTI FOR I _ 0,7 LDA B,I STA ARG ARG _ PAT(I) CLA STA EE EE _ 0 LDA PT1,I STA EAB IAB _ TBL1(I,J) LDB J JSB SC2 CHECK EE FOR K = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G5.1 NEXT I ADA J CPA .8 CCA,RSS JMP G5.2 NEXT J CPA IE RSS JMP G5.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G5.4 NEXT REG SPC 3 * GROUP 7: CLE,SLA,COL4 - CLE,SLB,COL4 * CLA G7.4 STA REG FOR REG _ 0,1 CLA G7.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE POINTER CLA G7.2 STA J FOR J _ 0,7 ADA BIT5 ADA BIT4 ADA BIT3 ADA REG INSTR _ REG + BIT5 + BIT4 STA INSTR + BIT3 + J LDB PATA G7.1 STB PTI FOR I _ 0,7 LDA B,I STA ARG ARG _ PAT(I) AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * ARG) LDA PT1,I STA EAB EAB _ TBL1(I,J) CLA STA EE EE _ 0 LDB J JSB SC2 CHECK IE FOR J = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G7.1 NEXT I ADA J CPA .8 CCA,RSS JMP G7.2 NEXT J CPA IE RSS JMP G7.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G7.4 NEXT REG SPC 3 * GROUP 14: COL1,CLE * CLA STA EE EE _ 0 STA ESKP ESKP _ 0 G14.4 STA REG FOR REG _ 0,1 CLA G14.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA CLB G14.2 STA K FOR K _ 0,7 STB KX KX _ K*2**8 ADB BIT5 ADB BIT9 ADB REG STB INSTR INSTR _ REG + BIT9 + BIT5 + KX LDB PATA G14.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) LDA PT1,I STA EAB EAB _ TBL1(I,K) LDB K JSB SC1 CHECK EAB FOR K = 5 OR 6 JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G14.1 NEXT I LDB KX ADB B100 ADA K CPA .8 CCA,RSS JMP G14.2 NEXT K CPA IE RSS JMP G14.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G14.4 NEXT REG SPC 3 * GROUP 12: COL1,SLA - COL1,SLB * CLA G12.4 STA REG FOR REG _ 0,1 CLA G12.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA CLB G12.2 STA K FOR K _ 0,7 STB KX KX _ K*2**8 ADB BIT9 ADB BIT3 ADB REG STB INSTR INSTR _ REG + BIT9 + BIT3 + KX LDB PATA G12.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) LDA IE STA EE EE _ IE LDB K JSB SC2 CHECK EE FOR K = 5 OR 6 LDA PT1,I STA EAB EAB _ TBL1(I,K) LDB K JSB SC1 CHECK EAB FOR K = 5 OR 6 AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * EAB) JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G12.1 NEXT I LDB KX ADB B100 ADA K CPA .8 CCA,RSS JMP G12.2 NEXT K CPA IE RSS JMP G12.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G12.4 NEXT REG SPC 3 * GROUP 16: COL1,CLE,SLA - COL1,CLE,SLB * CLA STA EE EE _ 0 G16.4 STA REG FOR REG _ 0,1 CLA G16.3 STA IE FOR IE _ 0,1 LDB TBL1A STB PT1 RESET TABLE 1 POINTER CLA CLB G16.2 STA K FOR K _ 0,7 STB KX KX _ K*2**8 ADB BIT9 ADB BIT5 ADB BIT3 ADB REG INSTR _ REG + BIT9 + BIT5 STB INSTR + BIT3 + KX LDB PATA G16.1 STB PTI FOR I _ 1,7 LDA B,I STA ARG ARG _ PAT(I) LDA PT1,I STA EAB EAB _ TBL1(I,K) LDB K JSB SC1 CHECK EAB FOR K = 5 OR 6 AND BIT0 XOR BIT0 STA ESKP ESKP _ CMPL(BIT0 * EAB) JSB E.C GO EXECUTE & CHECK ISZ PT1 LDB PTI INB CPB PATE CLA,INA,RSS JMP G16.1 NEXT I LDB KX ADB B100 ADA K CPA .8 CCA,RSS JMP G16.2 NEXT K CPA IE RSS JMP G16.3 NEXT IE LDA REG ADA BIT11 CPA BIT11 JMP G16.4 NEXT REG SPC 3