* CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP 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 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED BASE PAGE ORG 126B DSN OCT 103301 DIAGNOSTIC SERIAL NUMBER * ORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS HDMP DEF HDMD POINTER TO HEADER MESSAGE HDMX DEF HDMD+11 STDA OCT 3777 STDB OCT 0 * ORG 150B HDMD EQU * ASC 15,TBG DIAGNOSTIC, DSN = XXXXXX/ * IOID EQU * DEF SRT01 DEF SRT02 DEF RTCLX DEF SLG01 DEF SLG02 DEF SLG03 DEF SLG04 DEF SLG05 DEF SLG06 DEF SLG07 DEF SLG10 DEF SLG11 DEF SLG12 DEF SLG13 DEF SLG14 DEF SLG15 DEF STTC1 DEF STTC2 DEF TTCEX DEC -1 * SKP TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEC -1 * * PUT JSB IN TRAP CELL * TCJI NOP LDA USSC GET SELECT CODE AND B77 LDB JSBI GET INSTRUCTION STB A,I PUT IT IN TRAP CELL LDA TCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ TCJI ADJUST RETURN JMP TCJI,I RETURN * JSBI JSB 3B,I * PTIPM NOP LDA TSTN GET TEST NUMBER CPA LTSTN SKIP OUTPUT IF SAME TEST JMP PTIPM,I STA LTSTN NO - UPDATE TEST NUMBER AND B7 CONVERT IOR B60 NUMBER STA B LDA TSTN RAR,RAR RAR AND B7 IOR B60 ALF,ALF IOR B STA H030+5 JSB MSGC,I OUTPUT TEST IN PROGRESS DEF H030 JMP PTIPM,I * H030 ASC 13,H030 TEST XX IN PROGRESS/ * LTSTN NOP B7 OCT 7 B20 OCT 20 B60 OCT 60 B77 OCT 77 HED RELATIVE TIME CHECKS * TEST 1 0.1 MILLSEC * TST01 NOP JSB RTCL DO RELATIVE TIME CHECK OCT 0 TBG GATE TIME DEC 1 TIME OUT ALLOWANCE ASC 1,31 ERROR CODE JMP TST01,I SPC 2 * TEST 2 1.O MILLSEC * TST02 NOP JSB RTCL OCT 1 D2 DEC 2 ASC 1,32 JMP TST02,I SPC 2 * TEST 3 1O MILLSEC * TST03 NOP JSB RTCL OCT 2 DEC 20 ASC 1,33 JMP TST03,I SPC 2 * TEST 4 1OO MILLSEC * TST04 NOP JSB RTCL GT3 OCT 3 DEC 200 ASC 1,34 JMP TST04,I SKP * RELATIVE TIME CHECK LOWER DECADES * RTCL NOP CCA SET 1 REP COUNT STA RC SAVE IT JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE JSB TCJI PUT JSB IN TRAP CELL DEF RTCLI RETURN POINT FOR TRAP CLA STA TMRR,I CLEAR IMMEDIATE INTP FLAG LDB RTCL,I GET GATE TIME ISZ RTCL SRT01 OTB CH GIVE IT TO GENERATOR SRT02 STC CH,C START GENERATOR STF INTP TURN ON INTERRUPTS NOP WAIT FOR IMMEDIATE INTERRUPT NOP NOP LDA RTCL,I GET TIME ALLOWANCE JSB TMRR,I GO WAIT ISZ RC ANY REPS JMP *-3 YES CLF INTP NO TURN OFF INTERRUPTS ISZ RTCL MOVE PAST TIME ALLOWANCE LDA RTCL,I GET MESSAGE NUMBER STA RTCE1+1 E0XX JSB ERMS,I REPORT ERROR DEF RTCE1 RTCLX CLC CH,C INSURE CARD IS OFF ISZ RTCL ADJUST RETURN JMP RTCL,I AND RETURN * RC NOP * RTCLI NOP CLF INTP TURN OFF INTPS ISZ RTCL MOVE PAST TIME ALLOWANCE LDA TMRR,I DID IT INTERRUPT IMMEDIATELY SZA JMP RTCLX NO OK LDA RTCL,I YES ADA ASC40 ADD ASCII 40 FOR SEC NUMBER STA RTCE2+1 PUT CODE IN PLACE EOYY JSB ERMS,I REPORT ERROR DEF RTCE2 JMP RTCLX NOW EXIT * * ASC40 OCT 400 RTCE2 ASC 15,E0YY CARD INTP'D IMMEDIATELY/ * RTCE1 ASC 15,E0XX CARD FAILED TO TIME OUT/ SKP * TEST 5 1 SEC (W2 1 MILLSEC) * TST05 NOP JSB RTCU DO RELATIVE TIME CHECK OCT 4 TBG GATE TIME DEC 2 TIME OUT ALLOWANCE ASC 1,35 JMP TST05,I SPC 2 * TEST 6 1O SEC (W2 1O MILLSEC) * TST06 NOP JSB RTCU OCT 5 DEC 20 ASC 1,36 JMP TST06,I SPC 2 * TEST 7 1OO SEC (W2 1OO MILLSEC)) * TST07 NOP JSB RTCU OCT 6 DEC 200 ASC 1,37 JMP TST07,I SPC 2 * TEST 1O 1OOO SEC (W2 1 SEC) * TST10 NOP JSB RTCU OCT 7 DEC 2000 ASC 1,40 JMP TST10,I SKP * RELATIVE TIME CHECK UPPER DECADES * RTCU NOP LDA RTCU SET RETURN ADDRESS STA RTCL LDA DM.E3 GET -1OOO LDB SW1 CHECK IF W1 OR W2 JSB SWRT,I CCA W2 SET MULTIPLER JMP RTCL+2 * SW1 OCT 2 DM.E3 DEC -1000 HED LOGIC CHECK * TEST 11 LOGIC CHECK * TST11 EQU * * LOGIC NOP JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE SLG01 STC CH CLEAR STATUS BIT SLG02 LIA CH CHECK ERROR FF IS RESET SZA,RSS ? JMP *+4 YES-SO CONTINUE E051 JSB ERMS,I NOT RESET REPORT ERROR DEF LGE51 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI0 RETURN POINT FOR TRAP CLB,INB SET 1 MS GATE TIME LDA D2 ALLOW 2 MS SLG03 OTB CH OUTPUT GATE TIME TO CARD SLG04 STC CH,C START STF INTP TURN ON INTERRUPTS JSB TMRR,I WAIT FOR IT CLF INTP NEVER INTERRUPTED E052 JSB ERMS,I REPORT ERROR DEF LGE52 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * LGI0 NOP INTERRUPTED CLF INTP TURN OFF INTERRUPTS SLG05 LIA CH CHECK ERROR FF IS STILL RESET SZA,RSS ? JMP *+4 YES - SO CONTINUE E053 JSB ERMS,I NOT RESET SO REPORT ERROR DEF LGE53 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * SLG06 SFC CH CHECK FLAG WAS SET JMP *+4 YES - CONTINUE E054 JSB ERMS,I NOT SET REPORT ERROR DEF LGE54 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI1 RETURN POINT FOR TRAP LDA D2 ALLOW TIME FOR SECOND INTP STF INTP TURN ON INTERRUPTS JSB TMRR,I WAIT FOR INT CLF INTP OK TURN OFF INTS SLG07 LIA CH CHECK ERROR SET CPA B20 JMP *+4 E056 JSB ERMS,I REPORT ERROR DEF LGE56 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST SKP * SLG10 STC CH CLEAR ERROR FLAG SLG11 LIA CH CHECK ERROR FF IS RESET SZA,RSS ? JMP *+4 YES - SO CONTINUE E057 JSB ERMS,I NOT RESET REPORT ERROR DEF LGE57 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI2 RETURN POINT FOR TRAP CLB,INB SLG12 STC CH,C SLG13 STF CH STF INTP TURN ON INTERRUPTS SLG14 OTB CH SHOULD STOP INTERRUPT LDA D2 JSB TMRR,I LGEX CLF INTP OK - TURN INTPS OFF SLG15 CLC CH,C INSURE CARD IS OFF JMP LOGIC,I RETURN TO CONTROL * * LGI1 NOP CLF INTP TURN INTERRUPTS OFF E055 JSB ERMS,I REPORT INT DEF LGE55 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * * LGI2 NOP CLF INTP TURN INTERRUPTS OFF E060 JSB ERMS,I REPORT INT DEF LGE60 POINTER TO MESSAGE JMP LGEX EXIT TEST * * LGE51 ASC 13,E051 ERROR FF NOT RESET BY ASC 09, STC INSTRUCTION/ LGE52 ASC 15,E052 CARD FAILED TO TIME OUT/ LGE53 ASC 14,E053 ERROR FF SET AFTER ONLY ASC 08, ONE GATE TIME/ LGE54 ASC 14,E054 FLAG DID NOT SET AFTER ASC 05,TIME OUT/ LGE55 ASC 17,E055 INTP'D AFTER FIRST TIME OUT/ LGE56 ASC 16,E056 ERROR FF DID NOT SET AFTER ASC 12,TWICE THE TIME INTERVAL/ LGE57 ASC 13,E057 ERROR FF NOT RESET BY ASC 09, STC INSTRUCTION/ LGE60 ASC 12,E060 OTB INSTRUCTION DID ASC 10, NOT STOP INTERRUPT/ HED TIME TOLERANCE CHECK * TEST 12 TIME TOLERANCE CHECK * TST12 EQU * * TTC NOP JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE JSB TCJI PUT JSB IN TRAP CELL DEF TTCI RETURN POINT FOR TRAP LDA M2 SET LOOP COUNT TO -2 FOR STA T12CT 21MX TESTING (SEE BELOW *) LDA D98 GET FIRST GATE ALLOWANCE R21MX CCB SET OUT OF TOLERANCE STB RC FLAG LDB GT3 GET TBG GATE TIME STTC1 OTB CH STTC2 STC CH,C START GENERATOR STF INTP TURN ON INTERRUPTS JSB TMRR,I GO WAIT ISZ RC INDICATE IN TOLERANCE NOP LDA D3 IN TOLERANCE WAIT TIME JSB TMRR,I ISZ RC INDICATE OUT OF TOLERANCE LDA D98 ALLOW MORE TIME JSB TMRR,I CLF INTP NO INT E063 JSB ERMS,I REPORT ERROR DEF TTCE3 POINTER TO MESSAGE TTCEX CLC CH,C TURN CARD OFF JMP TTC,I * * TTCI NOP INTERRUPTED CLF INTP TURN OFF INTERRUPTS LDB RC CHECK IF IN TOLERANCE SZB,RSS ? JMP TTCEX YES - SO EXIT TEST LDA CPTO NO, CHECK IF CPU IS A 21MX? AND S1512 (SEE BELOW *) CPA SW15 JMP E21MX YES, CPU IS A 21MX T21MX SSB,RSS NO, ERROR. CHECK IF INTPT JMP *+4 BEFORE OR AFTER EO61 JSB ERMS,I BEFORE, REPORT ERROR DEF TTCE1 POINTER TO MESSAGE JMP TTCEX E062 JSB ERMS,I AFTER, REPORT ERROR DEF TTCE2 POINTER TO MESSAGE JMP TTCEX * * SKP * * THIS ROUTINE WAS ADDED WITH DSN RELEASE 103301 TO * COMPENSATE THE TIMING TOLERANCE CHECK FOR CPU PER- * FORMANCE DECREASE IN 21MX M-SERIES COMPUTERS WHEN * 16K MEMORY CONTROLLERS ARE INSTALLED. THESE CONTROL- * LERS WILL ISSUE A MEMORY REFRESH EVERY 15 MICROSEC * (4K MEM CONTL. EVERY 31 MICROSEC) RESULTING IN A * INSTRUCTION EXECUTION SPEED DECREASE OF APPRX 2.5%. * THE DIAGN. CAN'T DETERMEN THE TYPE OF MEMORY IN- * STALLED AND THEREFORE WILL TRY FIRST WITH 98 MILLISEC * AND IF THAT FAILES WITH 95 MILLISEC AS A LOWER * WINDOW LIMIT IF AN M-SERIES COMPUTER IS USED. * E21MX ISZ T12CT CHECK IF COUNTER IS 0? JMP *+2 NO JMP T21MX YES, BOTH TRIES FAILED, ERROR LDA D95 SET LOWER WINDOW LIMIT TO JMP R21MX 95 MILLISEC & TRY ONCE MORE * * * * * D3 DEC 3 D98 DEC 98 D95 DEC 95 M2 OCT 177776 T12CT OCT 0 S1512 OCT 170000 SW15 OCT 100000 TTCE1 ASC 15,E061 INT BEFORE 98 MILLSECOND/ TTCE2 ASC 15,E062 INT AFTER 102 MILLSECOND/ TTCE3 ASC 09,E063 NO INTERRUPT/ * * * * * ORG ZCEND FWAA EQU * END