ASMB,A,B,L,C ORG 100B * * 12604 DIAGNOSTIC PROGRAM * * MARCH 1975 * * STARTING OCTAL ADDRESS = 100 * * REQUIRES AN SIO TELEPRINTER DRIVER * * THE FOLLOWING SWITCH REGISTER SETTINGS * ARE USED FOR PROGRAM CONTROL * * BIT 0 = 1 -> HALT AT BEGINNING OF PROGRAM * BIT 1 = 1 -> HALT AT END OF SCOPE LOOP * BIT 2 = 1 -> LOOP FOR SCOPE TEST * BIT 3 = 1 -> PERFORM INITIAL TEST- ITEST * BIT 4 = 1 -> PERFORM BASIC TIMING TEST- BTEST * BIT 5 = 1 -> PERFORM TIME DELAY TEST- TTEST * BIT 6 = 1 -> PERFORM INPUT TEST- INTST * BIT 7 = 1 -> HOLD COMMAND SCOPE LOOP- HTEST * BIT 8 = 1 -> ENCODE COMMAND SCOPE LOOP- ETEST * BIT 14 = 1 -> LOOP THRU ENTIRE CURRENT TEST(S) * BIT 15 = 1 -> INHIBIT CERTAIN TTY MESSAGES HED 12604 DIAGNOSTIC - MAIN PROGRAM JMP 115B,I IN PROGRAM LINKAGE ORG 105B DEF X FIRST AVAIL MEMORY AFTER PROG ORG 110B INTERRUPT LINKAGES DEF ERROR ILLEGAL DEF INTR LEGAL ORG 115B MAIN PROGRAM DEF START LINKAGE DEF P4 ORG 200B JMP 116B,I ORG 2000B START CLC 0,C INTERRUPT SYSTEM OFF LIA 1 SSA JMP L10 LDA ML1 PRINT 1ST MESSAGE LDB MAD1 "12604 DIAGNOSTIC JSB 102B,I PROGRAM - 7/71" P14 LDA ML9 PRINT 9TH MESSAGE LDB MAD9 "WHAT JSB 102B,I COMPUTER MODEL?" L10 LDA RL2 RECEIVE LDB RAD2 REPLY JSB 104B,I ON TTY KBD LDA REP2 CHECK FIRST WORD CPA A21 IS IT 21? JMP P20 YES P21 LDA ML10 NO - PRINT 10TH MESSAGE LDB MAD10 "NOT VALID" JSB 102B,I JMP P14 P20 LDA RFP2 CHECK SECOND WORD CPA A14 IS IT 14? JMP P22 YES CPA A15 NO - IS IT 15? JMP P22 YES CPA A16 NO - IS IT 16? JMP P216 YES CPA A00 NO - IS IT 00? JMP P200 YES CPA AMX NO -IS IT MX? JMP *+2 YES JMP P21 NO - NOT VALID, TRY AGAIN CLA,INA SET INDICATOR FOR 21MX CMA JMP *+6 P200 CCA SET INDICATOR FOR 2100 JMP *+4 P216 CLA,INA SET INDICATOR FOR 2116 JMP *+2 P22 CLA SET INDICATOR FOR 2114/2115 STA COMP SAVE INDICATOR JMP *+5 P1 LDA *+3 HALT AT LDB *+2 BEGINNING OF CLC 0,C PROGRAM HLT1 HLT 0 102000 LDB M67 PREPARE LDA HIS TRAPS STA *+2 FOR LDA HI ILLEGAL STA 10B INTERRUPT ISZ *-1 FROM INA ANY INB,SZB DEVICE JMP *-4 LIA 1 SSA JMP L11 P2 LDA ML2 PRINT 2ND MESSAGE LDB MAD2 "I/O CHANNEL?" JSB 102B,I L11 LDA RL1 RECEIVE LDB RAD1 REPLY JSB 104B,I ON TTY KBD LDA REP1 CHECK 1ST CHARACTER AND MSK1 FOR VALIDITY CPA C1 VALID? JMP *+2 YES JMP P2 NO LDA REP1 CHECK ALF,ALF SECOND AND MSK1 CHARACTER CPA C1 VALID? JMP *+2 YES JMP P2 NO LDA REP1 GENERATE AND MSK2 DATA STA ADDR SOURCE LDA REP1 INTERFACE ALF,ALF CARD AND MSK2 ADDRESS ALF,ARS IOR ADDR STA ADDR JSB ADIN ADDRESS INCLUSION LIA 1 SSA JMP L12 P23 LDA ML11 PRINT 11TH MESSAGE LDB MAD11 "TYPE "1" FOR 1.0 MSEC DELAY JSB 102B,I TYPE "0" FOR 0.1 MSEC DELAY" L12 LDA RL3 RECEIVE LDB RAD3 REPLY JSB 104B,I ON TTY KBD LDA REP3 CHECK WORD CPA A1 IS IT 1? JMP P24 YES CPA A0 NO - IS IT 0? JMP *+2 YES JMP P23 NO CLA SET INDICATOR FOR 0.1 MSEC JMP *+2 P24 CLA,INA SET INDICATOR FOR 1.0 MSEC STA DELAY SAVE INDICATOR JSB DCIDE GET DLY1 COUNTER DEC -5 2114/2115 - 0.1 MSEC DEC -44 2114/2115 - 1.0 MSEC DEC -7 2116 - 0.1 MSEC DEC -55 2116 - 1.0 MSEC DEC -9 2100 - 0.1 MSEC DEC -60 2100 - 1.0 MSEC DEC -9 21MX - 0.1 MSEC DEC -65 21MX - 1.0 MSEC STA CNT3 SET DLY1 COUNTER LIA 1 SSA JMP P4 LDA ML3 PRINT 3RD MESSAGE LDB MAD3 "CONNECT PERIPHERAL DEVICE JSB 102B,I AND PUSH RUN" HLT 0 SPC 3 P4 CLB P3 JSB MODE1 SWITCH REGISTER STORAGE P25 CLB STB TEST LDA BIT3 SLA,RSS JMP *+4 JSB ITEST PERFORM INITIAL TEST CLB,INB STB TEST LDA BIT4 SLA,RSS JMP *+4 JSB BTEST PERFORM BASIC TIMING TEST CLB,INB STB TEST LDA BIT5 SLA,RSS JMP *+4 JSB TTEST PERFORM TIME DELAY TEST CLB,INB STB TEST LDA BIT6 SLA,RSS JMP *+3 JSB INTST PERFORM INPUT TEST JMP *+4 LDB TEST SZB,RSS JMP P5 JSB MODE2 CHECK BIT 14 FOR LOOP LIA 1 CHECK SWITCH REGISTER RAR,RAR TO ADD RAR,RAR EXTRA STA BIT4 TESTS RAR TO STA BIT5 LOOP RAR STA BIT6 JMP P25 P5 LDA BIT7 SLA,RSS JMP P6 JSB HTEST PERFORM HOLD COMMAND LOOP TEST JSB MODE2 CHECK BIT 14 FOR LOOP JMP *-2 P6 LDA BIT8 SLA,RSS JMP P4 JSB ETEST PERFORM ENCODE COMMAND LOOP TEST JSB MODE2 CHECK BIT 14 FOR LOOP JMP *-2 END OF MAIN PROGRAM SPC 3 * * SWITCH REGISTER STORAGE ROUTINE - ONE * MODE1 NOP ENTER P7 LIA 1 READ SWITCH REGISTER AND MSK5 ISOLATE BITS 0,3,4,5,6,7, & 8 SLA HALT AT START? JMP P1 YES SZA NO - CHECK FOR A MODE JMP P8 MODE SET CLB NO MODE JSB DEL CONTACT CHATTER DELAY JMP P7 LOOK AGAIN P8 SZB OLD MODE? JMP P7 YES RAR,RAR NO RAR EACH BIT STA BIT3 FROM THE RAR SWITCH STA BIT4 REGISTER RAR IS ROTATED STA BIT5 TO LEAST RAR SIGNIFICANT STA BIT6 POSITION RAR AND IS STA BIT7 STORED IN RAR ITS RELATIVE STA BIT8 LOCATION JMP MODE1,I EXIT * * SWITCH REGISTER STORAGE ROUTINE - TWO * MODE2 NOP ENTER LIA 1 READ SWITCH REGISTER SLA HALT AT START? JMP P1 YES RAL NO SSA LOOP? JMP MODE2,I YES - EXIT CLB,INB NO JMP P3 EXIT TO MODE WAIT LOOP HED 12604 DIAGNOSTIC - INITIAL TEST ROUTINES * * INITIAL TEST ROUTINE * ITEST NOP ENTER CLF 0 LDA ML4 PRINT 4TH MESSAGE LDB MAD4 "PUSH PRESET JSB 102B,I THEN RUN" HLT 0 HALT TO PRESET SFS1 SFS 0 CHECK TO SEE JSB INERR THAT THE SFC1 SFC 0 FLAG WAS JMP *+2 SET BY JSB INERR PRESET LDA ERR SET ERROR INTERRUPT STA ADDR,I IN TRAP CELL STF 0 TURN ON INTERRUPT SYSTEM NOP WAIT FOR NOP INTERRUPT JMP P10 OK - NO INTERRUPT P9 CLF 0 LDA ML5 PRINT 5TH MESSAGE LDB MAD5 "INT. CONT. FF NOT JSB 102B,I CLEARED BY PRESET" HLT 0 ERROR HALT P10 LDA HLT1 RESTORE IOR ADDR TRAP CELL STA ADDR,I TO HALT CLF 0 TURN OFF INTERRUPT SYSTEM LIA 1 CHECK SWITCH REGISTER SLA HALT AT START? JMP P1 YES SSA NO - CHECK BIT 15 TO JMP P11 SKIP STATIC TEST LDA ML6 PRINT 6TH MESSAGE LDB MAD6 "STATIC TEST FOR STATE JSB 102B,I OF FLIP-FLOPS AND LEVELS OF HLT 0 HOLD AND ENCODE LINES" P11 JMP ITEST,I EXIT SKP * * INITIAL TEST ERROR ROUTINE * INERR NOP ENTER LDA ML7 PRINT 7TH MESSAGE LDB MAD7 "FLAG NOT SET JSB 102B,I BY PRESET" HLT 0 ERROR HALT JMP INERR,I EXIT * * SW REG CONTACT CHATTER DELAY ROUTINE * DEL NOP ENTER STA ATMP1 SAVE A LDA CNT1 STA CNT4 SET COUNTER LDA ATMP1 RESTORE A ISZ CNT4 DELAY JMP *-1 LOOP JMP DEL,I EXIT