ASMB,A,B,L,C HED HP 12889A HARDWIRED SERIAL INTERFACE DIAG. ORG 0 DSN 103207 APR. 7, 1977 REV 1717 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B * D. LOAD SWITCH REGISTER WITH SELECT CODE AND OPTIONS * BITS 0-5 = SC * BIT 8 CLEARED = SINGLE CPU * SET = DUAL CPU * E. PRESS RUN - RECEIVE HALT 102074 * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST(S) * 12 = LOOP ON DIAGNOSTIC * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = ABORT PRESENT TEST AND GO TO * USER CONTROL SECTION. * 8 = OUTPUT ALL MESSAGES TO LINE PRINTER * (MUST HAVE BEEN CONFIGURED) * 7 > * TO > RESERVED * 3 > * 2 = ABORT RCVR WAIT LOOP * 1 = CPU ACTS AS RECEIVER IF BIT IS SET * CPU ACTS AS TRANSMITTER IF BIT IS CLEARED * 0 = RESERVED * NOTE: STANDART RUN SHOULD BE WITH SWITCH = 000000 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * G. PRESS RUN * * TO RESTART DIAGNOSTIC * * 1. IF CHANGE SELECT CODE AND OPTIONS REPEAT FROM C. ABOVE * 2. IF NOT CHANGE SELECT CODE AND OPTIONS * A. LOAD ADDRESS 2000B * B. PRESS RUN SKP * GENERAL COMPUTER HALTS * * 102000 INITIALIZING HALT FOR TEST 7 * 1020XX ERROR HALTS (XX=TEST #, XX NOT 0, 76, 77) * 102076 END OF TEST HALT (A=TEST #) * 103000 NO USER SELECT CODE * 103001 NO 1 MILL. TIME COUNT * 106000 INITIALIZING HALT TO SYNC 2 COMPUTERS * 1060XX UNEXPECTED TRAP CELL HALT (XX=SELECT CODE) * 107076 INITIALIZING HALT AFTER LOADING SELECT CODE * 107077 USER SELECTION REQUESTED SPC 2 * ALL HALTS MAY BE RESTARTED FROM ADDRESS 2B. THIS IS * FOR CONVENIENCE ON THE 2114 WHERE THE M REG. NEEDS TO * BE ALTERED TO OBSERVE A&B REGISTERS. * * THE ONLY EXCEPTION IS A 1060XX HALT WHICH IS NOT * RECOVERABLE. SKP * SPECIFIC DIAGNOSTIC FUNCTIONS * * TESTS 1 THROUGH 7 ARE BASIC I/O TESTS * * TEST 8 * TRANSMITS AND RECEIVES A 100 WORD BLOCK OF DATA WITH THE * INTERRUPT SYSTEM OFF (SFS). AFTER THE BLOCK IS RECEIVED IT * IS COMPARED WITH MEMORY RESIDENT DATA TO TEST FOR ERRORS. * * TEST 9 * SAME AS TEST 8 BUT WITH INTERRUPT SYSTEM ENABLED. * * TEST 10 * CHECKS WATCHDOG TIMER. 1 WORD IS TRANSMITTED AND RECEIVED. * AFTER A 15 MS WAIT, THE FLAG IS TESTED AND THE STATUS WORD * IS CHECKED FOR THE WDO BIT. * * TEST 11 * CHECKS CLEAR CRC. THE CRC IS CLEARED, THEN TRANSMITTED AND * RECEIVED. THE ERROR BIT IN THE STATUS WORD IS THEN TESTED. * * TEST 12 * CHECKS CRC ACCUMULATION AND TRANSMITION AS TEXT WORD. THE * RECEIVED CRC IS COMPARED TO CALCULATED CRC. IN 2 CPU CONF. * THE RCVR RESPONDS BY SENDING CRC AFTER RECEIVING CRC, THEN * TESTS ERROR BIT IN STATUS WORD IN ADDITION TO THE COMPAR- * ISON MADE AND THE XMTR TESTS FOR RECEPTION OF ZERO. * * TEST 13 * CHECKS THE HARDWARE HANDSHAKE. THE HANDSHAKE WORD IS SENT * AND RECEIVED, THEN COMPARED TO TEST FOR ERRORS. NEXT THE * 100 WORD BLOCK OF DATA IS TRANSMITTED AND RECEIVED IN THE * HANDSHAKE MODE. AFTER THE BLOCK IS RECEIVED IT IS COMPARED * WITH MEMORY RESIDENT DATA TO TEST FOR ERRORS. * * TEST 14 * CHECKS LISTEN-REPEAT AND ADDRESS RECOGNITION. THE TRANS- * MITTER SENDS ALL ADDRESSES FROM 2 TO OCT 176 (ADDRESS IS * INCREMENTED BY 2). THE RECEIVER STARTS WITH ADDRESS 2 * AND INCREMENTS IT'S ADDRESS UPON RECOGNITION AFTER SENDING * CONFIRMATION TO TRANSMITTER. UPON COMPLETION OF SENDING * ALL ADDRESSES THE TRANSMITTER CHECKS FOR ANY NON RECOG- * NIZED ADDRESSES. ALL REPEATED WORDS ARE COMPARED TO THE * WORD SENT. * * TEST 15 * CHECKS INTERRUPTION OF DMA WITH TAG ONE WORD AND IRQ TAG * BIT SET IN RCVR. RCVR IS SET TO EXPECT MORE WORDS THAN * XMTR WILL SEND BEFORE TAG ONE WORD IS SENT. THE DMA RESI- * DUE IS ALSO CHECKED. SKP * CONFIGURATIONS SPC 4 * ******** * * *********----------------- * * 21XX * HWSIC * 1 COAXIAL CABLE - * * CPU * BOARD * - * * *********----------------- * ******** * * CONFIGURATION 1 - CAN RUN TESTS 1 THROUGH 12 SPC 5 * ******** ******** * * *********------------------------------********* * * * 21XX * HWSIC * 2 COAXIAL CABLES * HWSIC * 21XX * * * CPU * BOARD * * BOARD * CPU * * * *********------------------------------********* * * ******** ******** * * CONFIGURATION 2 - CAN RUN TESTS 1 THROUGH 14 SPC 5 * ********* ********* * * *********----------------------------********* * * * 21XX * HWSIC * 2 COAXIAL CABLES * HWSIC * 21XX * * * CPU * BOARD * * BOARD * CPU * * * W/DMA *********--------------------------- ********* W/DMA * * * * * * * ********* ********* * * CONFIGURATION 3 - CAN RUN TESTS 1 THROUGH 15 SKP * * PROGRAM ORGANIZATION CHART * * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE 127B * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE 137B * * ******************************************* * * CONSTANTS 140B * * * AND USER * * * STORAGE 1777B * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * DEF LIST TO * * * START OF EACH TEST * * ******************************************* * * DEF LIST TO * * * I/O INSTRUCTIONS * * ******************************************* * * * * * BASIC I/O TESTS (0-7) * * * * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (8-31) * * * * * * * * * * * * * * * * * ******************************************* SKP * ADDRESS 2 RESTART FOR 2114 * ORG 2B JMP *+1,I OCT 100 ORG 100B * A EQU 0 B EQU 1 TSC EQU 10B TEST SELECT CODE * * CONFIGURATOR LINKAGE TABLE * START JMP CNF,I GO TO CONFIGURATION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWA DEF FWAA FIRST WORD OF AVBL. MEMORY LWA BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 TMC BSS 1 1MILLSEC. TIME OUT COUNTER BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEM BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMR BSS 1 1 MILL SEC TIMER SWR BSS 1 CHECK SWITCH REG I2ASC BSS 1 INTEGER TO ASCII CONVERSION O2ASC BSS 1 OCTAL TO ASCII CONVERSION ASC2N BSS 1 ASCII CONVERSION DSN OCT 103207 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * EXECUTIVE LINKAGE TABLE * CNF DEF CONF GO TO CONFIGURATION ER DEF ERR ERROR REPORTING ROUTINE MS DEF MSG NON ERROR MESSAGE REPORTING DFPA DEF SDS POINTER TO SUBROUTINE DEF'S IODL DEF IODS POINTER TO I/O DEF LIST SC NOP CURRENT SELECT CODE * * SET RESTART FOR ADDRESS 2 * STOP NOP ENTRY POINT STA .STOP SAVE A REG LDA STOP INA GET JMP ADDRESS STA 3B SHOVE IN 3 LDA .STOP RESTORE A REG JMP STOP,I RETURN .STOP NOP SKP * * CONSTANTS AND STORAGE * HLT0 OCT 106000 HLT1 OCT 106001 HLTSC NOP TMP NOP * * LPCNT DEC -100 CNTR NOP .1 OCT 1 .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .7 OCT 7 .10 OCT 10 .17 OCT 17 .20 OCT 20 .50 DEC 50 .77 OCT 77 .100 OCT 100 .M3 DEC -3 .M4 DEC -4 .M5 DEC -5 .M7 DEC -7 .M16 DEC -16 .M50 DEC -50 .M100 EQU LPCNT M300 DEC -300 .ME3 DEC -1000 .M35C DEC -3500 TYPE NOP CONF2 NOP BIT8 OCT 400 BIT9 OCT 1000 BIT10 OCT 2000 BIT11 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 BITS OCT 177764 NBIT9 OCT 176777 .M1 OCT -1 BIT23 OCT 14 SCNT NOP DCNT NOP DEFL NOP ADDR NOP WADDR NOP WORDS BSS 4 PNTR DEF WORDS PNTRS NOP PSCP DEF PSCT+10 EOLCP DEF EOLC+3 MAXNM OCT 176 TST# NOP T13 DEC 13 * SW15 EQU BIT15 SW13 EQU BIT13 SW9 EQU BIT9 SW14 EQU BIT14 SW10 EQU BIT10 SW11 EQU BIT11 SW12 EQU BIT12 .8 EQU .10 .16 EQU .20 SKP * * COMMONLY USED SUBROUTINES * * * PUT JMP INSTRUCTION IN TRAP CELL * TCJMP NOP LDA JMPI GET JUMP INSTRUCTION STA SC,I PUT IT IN TRAP CELL LDA TCJMP,I GET LOCATION STA JMPIL SAVE IT FOR JMP INSTRUCTION ISZ TCJMP ADJUST RETURN JMP TCJMP,I RETURN TO CALLER * JMPI JMP *+1,I JMP INSTRUCTION JMPIL NOP JUMP LOCATION * T5.I0 JSB *+1,I TRAP CELL JSB DEF TIT5 * TSTX NOP SPC 4 .WAIT NOP ENTRY POINT LDA M300 SET UP COUNTER STA TMP FOR APPROX 15 SEC ISZ TMP DONE? JMP *+2 NOT YET JMP WAIT,I YES EXIT * LDA .50 TIME OUT FOR 50 MS JSB TMR,I LDB .4 IS IT STILL SET? JSB SWR,I JMP .WAIT+3 YES, CONTINUE JMP .WAIT,I NO, EXIT SKP * COMMON ERROR MESSAGES * TETX1 JSB ER,I REPORT ERROR DEF TSTX,I RETURN POINT DEF *+3 MESSAGE ADDRESS NOP CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 12,RCVR WAIT LOOP ABORTED/ * TETX2 JSB ER,I REPORT ERROR DEF TSTX,I RETURN POINT DEF *+3 MESSAGE ADDRESS OCT -1 CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 15,FLAG NOT SET ON DATA TRANSFER/ * TETX4 JSB ER,I REPORT ERROR DEF TSTX,I RETURN POINT DEF *+3 MESSAGE ADDRESS TTX4 NOP CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 18,FLAG SET ON DATA TRANSFER BY STATUS ASC 5,WORD = #/ * TETX5 JSB ER,I REPORT ERROR DEF TSTX,I RETURN POINT DEF *+3 MESSAGE ADDRESS OCT 1 CONTENTS FOR A REG NOP CONTENTS FOR B REG ASC 12,ERROR IN DATA TRANSFER/ SPC 3 * CALL = LDA WITH SA OF DEF LISTS FOR DEF LISTS FOR TESTS * JSB HDWSI * GOOD RETURN * ERROR RETURN * HDWSI NOP ENTRY POINT ADA CONF2 ADD TABLE OFFSET TO POINT TO XMIT RCVR LDA A,I GET ADDRESS TO DEF LIST STA DEFL SAVE STARTING ADDRESS OF DEF LIST * HDW2 LDA DEFL,I GET SUBROUTINE ADDRESS SZA ALLOWS NOP'S IN DEF LIST JSB A,I GO TO SUBROUTINE JMP HDW3 GOOD RETURN FROM SUBROUTINE * ERRT ISZ HDWSI ERROR RETURN FROM SUBROUTINE JMP HDWSI,I EXIT ERROR RETURN * HDW3 ISZ DEFL INCREMENT DEF LIST JMP HDW2 SKP * INITIALIZING ROUTINE FOR ALL TESTS * INIT NOP ENTRY POINT CLA STA CONF2 INITIALIZE CONFIGURATION STA ERROR CLEAR ERROR STA REM1 CLEAR CRC ACCUMULATOR STA TYPE TO XMIT STA TSTNO CLEAR LAST TEST NO. LDA USSC GET USER OPTION AND BIT8 MASK TO # CPU'S SZA,RSS IS IT SET FOR 2? JMP INT1 CONF IS 0 ISZ CONF2 LDB .2 TEST FOR XMIT OR RCVR JSB SWR,I JMP *+2 IS SET = RCVR (CONF = 2) JMP INT1 NO SET = XMIT (CONF = 1) LDA BIT10 SET TYPE TO RCVR CRC STA TYPE ISZ CONF2 INT1 LDA LPCNT CLEAR DESTINATION AREA STA CNTR SET UP COUNTER CLA LDB DEST STA B,I INB ISZ CNTR ALL CLEARED? JMP *-3 NO, CONTINUE * LDA LPCNT SET UP COUNT FOR LOOPR STA CNTR * LDA SOURC SET UP DATA XFR ADDRESSES STA SCNT LDA DEST STA DCNT JSB INIT2 CLEAR STATUS AND SET CONTROL JMP INIT,I EXIT * INIT2 NOP ENTRY POINT ISC8 LIA TSC CLEAR SUSPEND ISC1 CLC TSC ISC2 LIA TSC,C CLEAR STATUS WORD LDA BIT23 CLEAR CRC, MASTER RESET IOR TYPE SET CRC (XMIT OR RCVR) IOR BIT12 DISABLE CONSTANT ONES ISC3 CLC TSC ISC4 OTA TSC,C SET CONTROL WORD ISC7 CLF TSC MAKE SURE THE THING IS CLEAR! JMP INIT2,I EXIT * SOURC DEF SAS DEST DEF SAD SKP * SUBROUTINE TO GET 2 CPU'S IN STEP * (XMTR) * TESTS 8 THRU 15 * XSTAR NOP ENTRY POINT XSTA2 JSB TXMIT SEND TEST NO. JSB ABORT CHECK FOR ABORT XSTA3 SFS TSC DID FLAG GET SET? JMP XSTA2 NO, TRY AGAIN * JSB NONAB SEE IF RCVD GOOD WORD JMP *+2 YES JMP XSTA2 NO, TRY AGAIN * LDA .1 WAIT 1 MS JSB TMR,I JSB INIT2 CLEAR STATUS AND SET CONTROL JMP XSTAR,I START XMTR SPC 4 * SUBROUTINE TO GET 2 CPU'S IN STEP * (RCVR) * TESTS 8 THRU 15 * RSTAR NOP ENTRY POINT RSTA1 SFS TSC IS FLAG SET? JMP RSTA2 NO JSB NONAB SEE IF RCVD GOOD WORD JMP *+4 YES RSTA2 JSB INIT2 CLEAR SUSPEND JSB ABORT CHECK FOR ABORT JMP RSTA1 TRY AGAIN JSB TXMIT SEND TEST NO. JSB INIT2 CLEAR STATUS AND SET CONTROL JMP RSTAR,I START RCVR SPC 4 * SUBROUTINE TO COMPARE TST# TO GET 2 CPU'S IN STEP * TESTS 8 THRU 15 * NONAB NOP ENTRY POINT JSB TRCVR GET WORD LDA TST# GET CURRENT TST# CPA TSTNO COMPARE WITH REC'D WORD JMP NONAB,I IS GOOD ISZ NONAB NO, NOT YET JMP NONAB,I EXIT SKP * SUBROUTINE TO XMIT TST# TO GET 2 CPU'S IN STEP * TESTS 8 THRU 15 * TXMIT NOP ENTRY POINT LDA TST# GET CURRENT TST# TXMI1 OTA TSC,C SEND IT TXMI2 CLF TSC CLEAR XMIT FLAG JMP TXMIT,I EXIT SPC 4 * SUBROUTINE TO RCVR TST# TO GET 2 CPU'S IN STEP * TESTS 8 THRU 15 * TRCVR NOP ENTRY POINT TRCV1 LIA TSC,C GET WORD STA TSTNO SAVE IT JMP TRCVR,I EXIT * TSTNO NOP SPC 4 4 * SUBROUTINE TO TEST FOR ABORT (2 CPU'S IN STEP) * TESTS 8 THRU 15 * ABORT NOP ENTRY POINT LDA .20 WAIT 16 MS JSB TMR,I LDB .4 CHECK FOR ABORT JSB SWR,I JMP *+2 YES, ABORT JMP ABORT,I NO, EXIT * JSB .WAIT WAIT FOR BIT OFF JSB ER,I REPORT ABORT DEF TSTX,I RETURN POINT DEF *+3 OCT -1 A REG OCT -1 B REG ASC 7,TEST ABORTED/ SKP * SUBROUTINE TO XMIT 1 WORD * TESTS 8, 10, 11, 12, 13 * XMIT NOP ENTRY POINT LDB .M100 SET UP COUNT FOR STB ECNT WAIT BETWEEN TRANSFERS ISZ ECNT WAIT LONG ENOUGH? JMP *-1 NO, NOT YET * LDA SCNT,I GET WORD FROM MEMORY XSC1 OTA TSC,C SEND IT ISZ SCNT INCREMENT POINTER JMP XMIT,I EXIT SPC 4 * SUBROUTINE TO RCVR 1 WORD * TESTS 8, 10, 12, 13 * RCVR NOP ENTRY POINT RSC1 LIA TSC,C GET TRANSMITTED WORD STA DCNT,I STORE IN MEMORY ISZ DCNT INCREMENT POINTER JMP RCVR,I EXIT SPC 4 * SUBROUTINE TO LOOP AND WAIT FOR 1ST WORD * TESTS 8, 9, 10, 12, 13, 15 * LOOP NOP ENTRY POINT CLA SET UP COUNTS STA TMP FOR ABORT WAIT LOOP LDB .M100 STB ECNT * LOOP2 LDB .4 CHECK IF ABORT JSB SWR,I JMP LOOP1 ABORT WAIT * LSC1 SFS TSC FLAG SET? JMP *+2 NO, INCREMENT COUNT JMP LOOP,I GOOD EXIT * ISZ TMP LITTLE COUNTER JMP LOOP2 CHECK FOR ABORT ISZ ECNT BIG COUNTER JMP LOOP2 CHECK FOR ABORT * LOOP1 JSB .WAIT WAIT FOR BIT OFF ISZ LOOP ABORT EXIT CLA A=0 IF ABORT WAIT JMP LOOP,I EXIT SKP * SUBROUTINE TO CHECK THE FLAG OF HWSIC * TESTS 8, 10 THRU 15 * FLAG NOP ENTRY POINT LDA M300 STA ECNT SET ERROR COUNTER FSC1 SFS TSC FLAG SET YET? JMP *+3 NOT YET FSC2 CLF TSC YES, CLEAR IT JMP FLAG,I EXIT-GOOD RETURN ISZ ECNT COUNT DONE? JMP *-5 NO, CONTINUE LDA .M1 YES, ERROR ISZ FLAG JMP FLAG,I ERROR RETURN * ECNT NOP SPC 4 4 * SUBROUTINE TO LOOP THROUGH DEF LIST * TESTS 8, 9, 12, 13 * LOOPR NOP ENTRY POINT ISZ CNTR DONE YET? RSS LOP1 JMP LOOPR,I * LDB .M4 -4 IF CONF2 .NE. 0 LDA CONF2 SZA,RSS LDB .M5 -5 IF CONF2 = 0 * LDA B ADA DEFL DECREMENT DEFL STA DEFL JMP LOOPR,I EXIT SKP