* TEST 3 STF TSC - CLF TSC - SFS TSC - SFC TSC * TST3 NOP LDA LPCNT SET LOOP STA CNTR COUNTER LDA HLT0 PUT TRAP IN A REG. CLB TLT3 EQU * T3SC1 STF TSC * RSS JMP TET3 SKF SIGNAL UP T3SC2 CLF TSC * LDB .1 .1 T3SC3 SFC TSC *? JMP TET3 *BAD LDB .2 .2 T3SC4 SFS TSC *? RSS * JMP TET3 *BAD T3SC5 STF TSC * LDB .3 .3 T3SC6 SFC TSC *? RSS * JMP TET3 *BAD LDB .4 .4 T3SC7 SFS TSC *? JMP TET3 *BAD ISZ CNTR NO - LOOP AGAIN? JMP TLT3 YES JMP TST3,I NO * TET3 STB TAT3 SET ERROR TYPE JSB ER,I REPORT IT DEF TST3,I DEF *+3 TAT3 NOP TBT3 NOP B REG. DISPLAY ASC 19,STF TSC - CLF TSC - SFS TSC - SFC TSC ASC 8,FAILURE (A = #)/ SKP * * TEST 4 SELECT CODE SCREEN TEST * CHECK THAT SETTING OTHER FLAGS * DOES NOT SET THE TSC FLAG * TST4 NOP LDA LPCNT SET LOOP STA CNTR COUNTER LDA .10 START WITH LOWEST ADDRESS TLT4 STA TAT4 SAVE IT CPA SC IS IT THE TSC JMP TNT4 YES SKIP IT IOR STF0 SET UP SET FLAG INSTRUCTION STA .STF0 PUT IN PLACE T4SC1 CLF TSC CLEAR TSC FLAG .STF0 NOP EXECUTE STF SC INSTRUCTION T4SC2 SFS TSC TEST SCG FLAG RSS JMP TET4 IT WAS SET - SO ERROR TNT4 LDA TAT4 GET TEST SELECT CODE INA MOVE IT TO NEXT ONE CPA .100 IS IT FINISHED RSS YES JMP TLT4 NO ISZ CNTR ALL LOOP DONE? JMP TLT4-1 NO JMP TST4,I YES * TET4 JSB ER,I REPORT ERROR DEF TST4,I DEF *+3 TAT4 NOP TBT4 NOP ASC 10,STF # SET TSC FLAG/ * STF0 STF 0 SKP * * TEST 5 CHECK FOR INTERRUPT HOLD OFF * TST5 NOP LDA LPCNT SET LOOP STA CNTR COUNTER TLT5 LDA T5.I0 SET TRAP CELL JSB STA SC,I CLA SET UP FOR TEST STA TFT5 STA TIT5 STA TZT5 LDA HLT0 LDB HLT1 T5SC1 STC TSC TURN ON T5SC2 STF TSC TSC STF 0 AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * TFT5 NOP * ISZ TZT5 INT. SHOULD BE HERE ISZ TZT5 CLF 0 TURN OFF INTERRUPT SYSTEM LDA TIT5 DID IT INTERRUPT SZA,RSS ? JMP TET5C NO - REPORT ERROR LDA TZT5 CHECK INTERRUPT CORRECTLY CPA .2 ? RSS YES JMP TET5D NO - REPORT ERROR CLF 0 TURN OFF INTERRUPTS T5SC3 CLF TSC AND TSC FLAG ISZ CNTR LOOP DONE? JMP TLT5 NO TRT5 JMP TST5,I RETURN TO EXEC * TZT5 NOP TDT5 DEF TFT5-1 TDT5A DEF TFT5+1 SKP TIT5 NOP CLF 0 TURN OFF INTERRUPTS LDA TDT5 CHECK TO SEE IF ALL CPA TFT5 INSTRUCTIONS COMPLETED RSS YES - CONTINUE JMP TET5A AND REPORT ERROR JSB TCJMP SET SECOND INTP JMP INST. DEF TET5B INT LOCATION LDA TDT5A CHECK RETURN ADDRESS CPA TIT5 FOR CORRECTNESS JMP TIT5A GOOD INA CPA TIT5 AND + 1 JMP TIT5A GOOD JMP TET5D INTERRUPT INCORRECTLY TIT5A LDA HLT0 RESTORE A REG HALT STF 0 TURN ON INTERRUPTS JMP TIT5,I CONTINUE TEST * * TET5A JSB ER,I DEF TRT5 DEF *+3 DEC 1 A REG. DISPLAY TBT5 NOP B REG. DISPLAY ASC 16,INT DURING HOLD OFF INSTRUCTION/ * * TET5B CLF 0 TURN OFF INTERRUPTS JSB ER,I DEF TRT5 DEF *+3 DEC 2 NOP ASC 10,SECOND INT OCCURRED/ * * TET5C JSB ER,I DEF TRT5 DEF *+3 DEC 3 NOP ASC 4,NO INT/ * * TET5D JSB ER,I DEF TRT5 DEF *+3 DEC 4 NOP ASC 7,INT INCORRECT/ SKP * TEST 6 CLC TSC AND CLC 0 * TST6 NOP LDA LPCNT SET LOOP STA CNTR COUNTER JSB TCJMP SET TRAP CELL JMP DEF TET6 JMP LOCATION TLT6 CLA,INA STA TAT6 SET INDICATOR FOR CLC TSC TEST T6SC1 STC TSC SET TSC CONTROL T6SC2 STF TSC SET TSC FLAG STF 0 TURN ON INTERRUPTS T6SC3 CLC TSC CLEAR TSC CONTROL NOP GIVE IT A CHANCE TO INTERRUPT NOP CLF 0 TURN OFF INTERRUPTS ISZ TAT6 INDICATE CLC 0 TEST T6SC4 CLF TSC CLEAR TSC FLAG T6SC5 STC TSC SET TSC CONTROL T6SC6 STF TSC SET TSC FLAG STF 0 TURN ON INTERRUPTS CLC 0 CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP TO INTERRUPT CLF 0 TURN OFF INTERRUPTS ISZ CNTR DONE WITH LOOP? JMP TLT6 NO TRT6 JMP TST6,I RETURN TO EXEC * TET6 JSB ER,I DEF TRT6 DEF *+3 TAT6 NOP NOP ASC 16,CLC 0 OR CLC TSC FAILED (A = #)/ SKP * * TEST 7 EXTERNAL PRESET * TST7 NOP LIA 1 CHECK IF LOOP ON DIAGNOSTIC AND BIT12 WAS SELECTED SZA JMP TST7,I YES, ABORT TEST JSB MS,I NO, OUTPUT MESSAGE DEF TCT7 DEF *+1 ASC 19,PRESS PRESET (EXTERNAL AND INTERNAL), ASC 5,PRESS RUN/ * TCT7 EQU * T7SC1 CLF TSC CLEAR TSC FLAG STF 0 TURN ON INTERRUPTS JSB STOP HLT 0 WAIT FOR OPERATOR RESPONSE * T7SC2 SFS TSC CHECK THE FLAG RSS JMP TNT7 OK - CHECK INT. ENABLE * TET7 JSB ER,I NOT OK REPORT ERROR DEF TST7,I DEF *+3 DEC 1 NOP ASC 13,FLAG NOT SET AFTER POPIO/ * TNT7 SFS 0 CHECK INTP. FLAG JMP TST7,I OK RETURN TO EXEC JSB ER,I NOT OK REPORT ERROR DEF TST7,I DEF *+3 DEC 2 NOP ASC 18,INT SYSTEM NOT CLEARED AFTER PRESET/ SKP * * TESTS 8 TRANSFERS 100 WORDS-SFS TSC AND MEM TO MEM COMPARE * TST8 NOP ENTRY POINT LDA T8SAT GET DEF POINTER JSB HDWSI DO SUBROUTINES JMP TST8,I GOOD RETURN * LDB ERROR SET STATUS WORD STB TTX4 FOR ERROR MESSAGE * CLB SET EXIT CODE JSB ERRS FIND ERROR TYPE IF COMMON * HLT 66B TEMP HLT-SHOULDN'T GET HERE * SPC 4 T8SAT DEF T8SA * * SETUPS FOR TEST 8 * T8SA EQU * DEF T8SU1 1 CPU DEF LIST DEF T8SU2 2 CPU XMIT DEF LIST DEF T8SU3 2 CPU RCVR DEF LIST SPC 4 T8SU1 EQU * DEF FXMIT 1 CPU TRANSMIT DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF RCVR RECEIVE A WORD DEF LOOPR BACK UP 4 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF GOOD COMPLETED MESSAGE * T8SU2 EQU * DEF XSTAR GET CPU'S IN STEP DEF XMIT TRANSMIT A WORD DEF FLAG WAIT FOR A FLAG DEF CHFLG WHY FLAG? DEF LOOPR BACK UP 3 WORDS IN LOOP DEF GOOD COMPLETED MESSAGE * T8SU3 EQU * DEF RSTAR GET CPU'S IN STEP DEF LOOP WAIT FOR 1ST WORD DEF FLAG CHECK FLAG DEF CHFLG WHY FLAG DEF RCVR RECEIVE A WORD DEF LOOPR BACK UP 3 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF GOOD COMPLETED MESSAGE SKP * * TEST 9 TRANSFERS 100 WORDS WITH INTERRUPT ENABLED AND * MAKES MEM TO MEM COMPARISON * TST9 NOP ENTRY POINT LDA T9SAT GET DEF POINTER JSB HDWSI DO SUBROUTINES JMP TST9,I GOOD RETURN * LDB ERROR SET STATUS WORD STB TTX4 FOR ERROR MESSAGE * CLB SET EXIT CODE JSB ERRS FIND ERROR TYPE IF COMMON * CPA .7 IS IN AN INT TIMEOUT? JMP TETX3 YES * HLT 66B SHOULDN'T GET HERE * TETX3 JSB ER,I REPORT ERROR DEF TST9,I RETURN POINT DEF *+3 MESSAGE ADDRESS OCT 7 A REG NOP B REG ASC 12,NO INT IN DATA TRANSFER/ SPC 4 T9SAT DEF T9SA * * SETUPS FOR TEST 9 * T9SA EQU * DEF T9SU1 1 CPU DEF LIST DEF T9SU2 2 CPU XMIT DEF LIST DEF T9SU3 2 CPU RCVR DEF LIST SKP T9SU1 EQU * DEF ENINR ENABLE INTERRUPT DEF FXMIT 1 CPU TRANSMIT DEF TIMER WAIT FOR INT DEF DUMMY FILLER DEF LOOPR BACK UP 4 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF GOOD COMPLETED MESSAGE * T9SU2 EQU * DEF XSTAR GET CPU'S IN STEP DEF XMTI SEND 100 WORDS DEF GOOD COMPLETED MESSAGE * T9SU3 EQU * DEF RSTAR GET CPU'S IN STEP DEF LOOP WAIT FOR 1ST WORD DEF RCVI RECEIVE 100 WORDS DEF COMPA COMPARE BLOCKS DEF GOOD COMPLETED MESSAGE SKP * * TEST 10 CHECKS FOR WDO. FIRST THE FLAG IS CHECKED * THEN THE STATUS WORD IS CHECKED. * TST10 NOP ENTRY POINT LDA BIT9 SET WATCHDOG BIT STA WORD FOR CWORD LDA .17 SET TIME FOR STA TIME WAIT SUBROUTINE LDA T10ST GET DEF POINTER JSB HDWSI DO SUBROUTINES JMP TST10,I GOOD RETURN * LDB ERROR SET STATUS WORD STB TTX4 FOR ERROR MESSAGE * LDB .2 SET EXIT CODE JSB ERRS FIND ERROR TYPE IF COMMON * STA TAT10 CPA .1 WAS IT WDO FLAG NOT SET? JMP TT103 YES * CPA .2 WAS IT WDO BIT NOT SET? JMP TT103 YES * HLT 66B TEMP HLT - SHOULDNT GET HERE * TT103 JSB ER,I REPORT ERROR DEF TST10,I RETURN POINT DEF *+3 MESSAGE ADDRESS TAT10 NOP CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 14,NO WATCHDOG TIMEOUT (A = #)/ * T10ST DEF T10SA SKP * * SETUPS FOR TEST 10 * T10SA EQU * DEF T10S1 1 CPU DEF LIST DEF T10S2 2 CPU XMIT DEF LIST DEF T10S3 2 CPU RCVR DEF LIST * T10S1 EQU * DEF CWORD OUTPUT CONTROL WORD DEF FXMIT 1 CPU TRANSMIT DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF RCVR RECEIVE A WORD DEF WAIT WAIT 15 MS DEF WDO CHECK WATCHDOG DEF GOOD COMPLETED MESSAGE * T10S2 EQU * DEF XSTAR GET CPU'S IN STEP DEF XMIT TRANSMIT A WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CWORD OUTPUT CONTROL WORD DEF RCVR CLEAR WATCHDOG DEF WAIT WAIT 15 MS DEF WDO CHECK WATCHDOG DEF GOOD COMPLETED MESSAGE * T10S3 EQU * DEF RSTAR GET CPU'S IN STEP DEF LOOP WAIT FOR 1ST WORD DEF FLAG CHECK FLAG DEF RCVR RECEIVE A WORD DEF CWORD OUTPUT CONTROL WORD DEF WAIT WAIT 15 MS DEF WDO CHECK WATCHDOG DEF GOOD COMPLETED MESSAGE SKP * * TEST 11 CHECKS THE CLEAR CRC BIT * ORG 4000B * TST11 NOP ENTRY POINT LDA BIT11 SET SEND CRC BIT STA WORD FOR CWORD LDA T11ST GET DEF POINTER JSB HDWSI DO SUBROUTINES JMP TST11,I GOOD RETURN * LDB ERROR SET STATUS WORD STB TTX4 FOR ERROR MESSAGE * LDB .1 SET EXIT CODE JSB ERRS FIND ERROR TYPE IF COMMON * CPA .2 WAS THE ERROR BIT SET? JMP TET11 YES * HLT 66B TEMP HLT - SHOULDN'T GET HERE * TET11 JSB ER,I REPORT ERROR DEF TST11,I RETURN POINT DEF *+3 MESSAGE ADDRESS NOP CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 8,CLEAR CRC ERROR/ * T11ST DEF T11SA SKP * * SETUPS FOR TEST 11 * T11SA EQU * DEF T11S1 1 CPU DEF LIST DEF T11S2 2 CPU XMIT DEF LIST DEF T11S3 2 CPU RCVR DEF LIST * T11S1 EQU * DEF CWORD OUTPUT CONTROL WORD DEF FXMIT 1 CPU TRANSMIT DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CCRC CHECK CRC ERROR DEF GOOD COMPLETED MESSAGE * T11S2 EQU * DEF XSTAR GET CPU'S IN STEP DEF CWORD OUTPUT CONTROL WORD DEF XMIT TRANSMIT DUMMY WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CCRC CHECK CRC ERROR DEF GOOD COMPLETED MESSAGE * T11S3 EQU * DEF RSTAR GET CPU'S IN STEP DEF CWORD OUTPUT CONTROL WORD DEF XMIT TRANSMIT DUMMY WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CCRC CHECK CRC ERROR DEF GOOD COMPLETED MESSAGE SKP * * TEST 12 CHECKS SENDING CRC AS TEXT WORD AFTER 100 WORD BLOCK * TST12 NOP ENTRY POINT LDA .5 SET TIME FOR STA TIME WAIT SUBROUTINE LDA BIT11 GET SEND CRC BIT STA WORD SAVE FOR CWORD * LDA T12ST GET DEF POINTER JSB HDWSI DO SUBROUTINES JMP TST12,I GOOD RETURN * LDB ERROR SET STATUS WORD STB TTX4 FOR ERROR MESSAGE LDB CRC STB TTX12 * CLB SET EXIT CODE JSB ERRS FIND ERROR TYPE IF COMMON * CPA .17 WAS CRC TO CRC = 0? JMP TE121 NO * CPA .2 TEXT CRC ERROR? JMP TE122 YES * CPA .6 CRC WRONG? JMP TE123 YES * HLT 66B SKP TE121 JSB ER,I REPORT ERROR DEF TST12,I RETURN POINT DEF *+3 MESSAGE ADDRESS TTX12 NOP CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 10,CRC TO CRC EQUAL #/ * TE122 JSB ER,I REPORT ERROR DEF TST12,I RETURN POINT DEF *+3 MESSAGE ADDRESS OCT 2 A REG NOP CONTENTS FOR B REG ASC 8,TEXT CRC ERROR/ * TE123 LDA REM1 GET CALCULATED CRC STA TT121 STORE FOR MESSAGE LDA DEST,I GET RECEIVED CRC STA TT122 STORE FOR MESSAGE LDB TEE SET FOR TRANSMIT CRC LDA TYPE WHICH IS IT? SZA SKIP IF TRANSMIT LDB ARE SET FOR RECEIVE CRC STB TT123 JSB ER,I REPORT ERROR DEF TST12,I RETURN POINT DEF *+3 MESSAGE ADDRESS TT121 NOP A REG TT122 NOP B REG TT123 ASC 12,X CRC SHOULD BE #, IS #/ * TEE ASC 1,T ARE ASC 1,R T12ST DEF T12SA SKP * * SETUPS FOR TEST 12 * T12SA EQU * DEF T12S1 1 CPU DEF LIST DEF T12S2 2 CPU XMIT DEF LIST DEF T12S3 2 CPU RCVR DEF LIST * T12S1 EQU * DEF CXMIT TRANSMIT + FIND CRC DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG DEF RCVR RECEIVE A WORD DEF LOOPR BACK UP 4 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF RESET RESET POINTERS DEF CWORD OUTPUT CONTROL WORD DEF FXMIT DUMMY TRANSMIT DEF FLAG WAIT FOR FLAG DEF RCVR RECEIVE CRC DEF COMPS COMPARE THEM DEF INIT INITIALIZE DEF FCRC SET CRC KIND TO RECEIVE DEF FXMIT 1 CPU TRANSMIT DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG DEF CRCVR RECEIVE + FIND CRC DEF LOOPR BACK UP 4 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF RESET RESET POINTERS DEF CWORD OUTPUT CONTROL WORD DEF FXMIT DUMMY TRANSMIT DEF FLAG WAIT FOR FLAG DEF RCVR RECEIVE CRC DEF COMPS COMPARE THEM DEF GOOD COMPLETION MESSAGE SKP * T12S2 EQU * DEF XSTAR GET CPU'S IN STEP DEF XMIT TRANSMIT A WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF LOOPR BACK UP 3 WORDS IN LOOP DEF WAIT WAIT 5 MS DEF RESET RESET POINTERS DEF RESET RESET POINTERS DEF CWORD OUTPUT CONTROL WORD DEF FXMIT TRANSMIT DUMMY WORD DEF LOOP WAIT FOR RETURN CRC DEF FLAG CLEAR FLAG DEF RCVR RECEIVE A WORD DEF ZERO IS IT ZERO? DEF WAIT GET 2 CPU'S IN SYNC DEF GOOD COMPLETED MESSAGE * T12S3 EQU * DEF RSTAR GET CPU'S IN STEP DEF LOOP WAIT FOR 1ST WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CRCVR RECEIVE + FIND CRC DEF LOOPR BACK UP 3 WORDS IN LOOP DEF COMPA COMPARE BLOCKS DEF RESET RESET POINTERS DEF LOOP WAIT FOR CRC DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF RCVR RECEIVE A WORD DEF COMPS COMPARE CRC'S DEF CWORD OUTPUT CONTROL WORD DEF XMIT TRANSMIT DUMMY WORD DEF FLAG WAIT FOR FLAG DEF CHFLG WHY FLAG? DEF CCRC CHECK CRC ERROR DEF GOOD COMPLETED MESSAGE SKP