ASMB,R,L,C NAM DIAG,3 12792-16006 REV.2029 800724 ****************************************************************** * * RELOC. 12792-16006 * SOURCE 12792-18006 * ABSOLUTE 12792-16007 * (RTE-M) * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * **-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * * THIS PROGRAM DOWNLOADS SELF TEST IN TO THE MUX RAM . * IT FIRST SEND A DOWNLOAD COMMAND TO THE MUX. SIZE OF THE * CODE TO BE DOWNLOADED IS SPECIFIED IN BYTES IN THE SECOND * WORD OF THE COMMAND. * MUX LOADS THE CODE IN TO THE RAM AND JUMPS TO THE STARTING * LOCATION OF THE DOWNLOADED CODE. * * EXT $LIBR,$LIBX,EXEC,NAMR SC EQU 00B DUMMY SELECT CODE A EQU 0B A REG B EQU 1B B REG DIAG NOP * START JSB EXEC WRITE MESSAGE TO THE DEF *+5 CONSOLE ASKING OPERATOR DEF WRCOD TO ENTER MUX SELECT CODE DEF WRTRM DEF MESS5 DEF MESS5-1 * * READ MUX SELECT CODE FROM THE USER JSB EXEC DEF *+5 DEF RDCOD DEF RDTRM DEF MUXSC DEF THREE * * CONVERT MUX SELECT CODE FROM ASCII * TO DECIMAL USING NAMR. * * INITIALIZE POINTER FOR THE STRING * TO BE PARSED TO 1 EVERYTIME . LDA ONE STA ISTRC * JSB NAMR DEF *+5 DEF IPR DEF MUXSC DEF THREE DEF ISTRC * * CHECK IF THE USER INPUT A NUMBER AND NOT LETTER. * LDA IPR+3 CPA ONE JMP PUTSC JMP START IF NOT PRINT MESSAGE AGAIN. * PUTSC LDA IPR PUT SELECT CODE IN ALL I/O INSTRUCTIONS LDB IPR CHECK TO SEE IF SELECT CODE ADB M100B IS .LE. 77B SSB JMP PUTS1 YES. WE ARE OK. JMP START NO. TRY AGAIN. PUTS1 LDB .IOIN JSB SETEM * JSB $LIBR WE WANT TO DO ONLINE I-O. NOP LDA DOWNL SEND DOWN LOAD COMMAND. OTA01 OTA SC,C STC01 STC SC JSB WAIT WAIT FOR THE FLAG OR TIMOUT CLC01 CLC SC CLEAR CONTROL SO DRIVER IS NOT CALLED LDA SIZE SECOND WRD OF CMND-SIZE IN BYTES. OTA02 OTA SC,C JSB WAIT WAIT FOR THE FLAG OR TIMOUT INA FIGURE OUT SIZE IN WORDS ARS SO WE CAN USE IT AS A COUNTER. CMA INA LDX ZERO INITIALIZE POINTER OF CODE. LOOP LBX MESS+1 POINT TO THE CODE TABLE ENTRY OTB01 OTB SC,C ISX INCREMENT POINTER JSB WAIT WAIT FOR THE FLAG OR TIMEOUT INA ARE WE DONE? SZA JMP LOOP CLF01 CLF SC JSB $LIBX TURN INTERRUPT SYS ON AGAIN. DEF *+1 DEF *+1 * FOLLOWING CODE IS COMMENTED OUT BECAUSE IT * DOES NOT WORK WITHOUT TBG. SO INSTEAD OF * SCHEDULING MYSELF IN 5 SECS, I WILL * WAIT IN A LOOP FOR 5 SECS. * JSB EXEC SCHEDULE OURSELF TO BE * DEF L0 AWAKENED AFTER 5 SECONDS. * DEF TIMLS * DEF INAME * DEF IRESL * DEF MTPLE * DEF IOFF * * WAIT FOR ABOUT 5 SECS. LDB FACTR COUNT * FACTOR DECIDES TIME1 LDA COUNT WAIT TIME OF THIS LOOP. TIME2 INA INNER WAIT LOOP SZA JMP TIME2 INB SZB OUTER WAIT LOOP JMP TIME1 * * NOW CHECK THE RESULTS OF THE SELF TEST L0 JSB $LIBR WANT TO DO I/O AGAIN. NOP LIA01 LIA SC READ THE BACKPLANE LATCH. * IT SHOULD BE A # BETWEEN 1 & 13. SSA IS A POSITIVE? JMP FAIL2 NO. PRINT TEST 14 FAILED OR LOOPED. LDB 0 B <- A ADB M14 IS B > 13? SSB IF SO PRINT 14 IN MESSAGE. JMP SFS01 LATCH IS BETWEEN 1 & 13. FAIL2 LDA M1 THIS WILL PRINT 14 IN MESSAGE. SFS01 SFS SC IS MUX FLAG SET? JMP FAIL1 NO. MUX STUCK IN A LOOP. CLF02 CLF SC FLAG SET. CLEAR IT. JSB $LIBX TURN ON THE INTERRUPT SYSTEM DEF *+1 DEF *+1 CPA D13 DID MUX PASS THE LAST TEST(SIO)? JMP PASS YES INA FIND TEST NUMBER FAILED ADA ERADR CONVERT TO PRINTABLE ASCII LDA A,I STA MESS3+8 STORE IN THE MESSAGE JSB EXEC WRITE THE MESSAGE TO DEF *+5 TO THE OPERATOR DEF WRCOD DEF WRTRM DEF MESS3 DEF MESS3-1 DONE JSB EXEC DEF TAG DEF ICODE DEF INAME DEF INUMB DEF IPARM DEF IPARM DEF IPARM DEF IPARM DEF IPARM TAG NOP * * WAIT NOP SUBROUTINE TO WAIT FOR THE FLAG LDB TLEN INITIALIZE WAIT LOOP COUNTER WAITL INB INCREMENT COUNTER SZB COUNTER TURNED OVER? JMP SFS02 NO. JMP ERR1 YES. MUX TIMED OUT SFS02 SFS SC FLAG SET? JMP WAITL NO. JMP WAIT,I YES. RETURN * * ERR1 JSB $LIBX TURN INTERRUPTS BACK ON DEF *+1 DEF *+1 JSB EXEC WRITE ERROR MESSAGE TO THE DEF *+5 OPERATOR. DEF WRCOD DEF WRTRM DEF MESS1 DEF MESS1-1 JMP DONE TERMINATE. PASS JSB EXEC SEND PASS MESSAGE TO THE DEF *+5 OPERATOR. DEF WRCOD DEF WRTRM DEF MESS4 DEF MESS4-1 JMP DONE TERMINATE. * * FAIL1 JSB $LIBX TURN INTERRUPTS BACK ON. DEF *+1 DEF *+1 INA FIND THE TEST NUMBER IN WHICH * MUX IS STUCK. ADA ERADR CONVERT THE NUMBER TO ASCII LDA A,I FOR PRINTING. STA MESS2+14 STORE IN THE MESSAGE. JSB EXEC INFORM THE OPERATOR OF THE DEF *+5 ERROR CONDITION DEF WRCOD DEF WRTRM DEF MESS2 DEF MESS2-1 JMP DONE TERMINATE. * * SETEM NOP SET I/O INSTRUCTIONS STA TMP1 SAVE WANTED SELECT CODE STB TMP SAVE A(INST ADDRESS TABLE) LDA B,I FETCH FIRST LDA A,I ..INSTRUCTION AND #SCOD GET JUST SELECT CODE XOR TMP1 FIND DIFFERENCES SZA,RSS ANY? JMP SETEM,I NO, EXIT STA TMP1 SAVE * SETM2 LDB TMP,I GET A(INSTRUCTION) SZB,RSS DONE? JMP SETEM,I YES LDA B,I FETCH INSTRUCTION XOR TMP1 UPDATE STA B,I RETURN ISZ TMP NEXT! JMP SETM2 LOOP FOR A WHILE * .IOIN DEF *+1 CARD I/O INSTRUCTIONS DEF OTA01 DEF OTA02 DEF OTB01 DEF LIA01 DEF STC01 DEF CLC01 DEF SFS01 DEF SFS02 DEF CLF01 DEF CLF02 OCT 0 END OF CARD I/O * * #SCOD OCT 77 MUXSC BSS 4 ISTRC DEC 1 IPR BSS 10 STRING RETURNED BY NAMR TMP BSS 1 TEMPORARY TMP1 BSS 1 TEMPORARY ICODE DEC 6 INAME DEC 0 DEC 0 DEC 0 INUMB DEC 0 IPARM DEF 0 TIMLS DEC 12 SCHEDULE PROGRAM ITSELF IRESL DEC 2 TIME INTERVAL IN SECS. MTPLE DEC 0 SCHEDULE PROGRAM ONLY ONCE. IOFF DEC -2 2 SECONDS SCHEDULE. * RDCOD OCT 1 READ RDTRM OCT 401 READ FROM TERMINAL. WRCOD DEC 2 WRITE COMMAND WRTRM OCT 1 ASCII WRITE TO LU 1 ERADR DEF ERTBL ADDRESS OF ASCII ERRORS. ERTBL ASC 1,14 OCT 20061 OCT 20062 OCT 20063 OCT 20064 OCT 20065 OCT 20066 OCT 20067 OCT 20070 OCT 20071 OCT 30460 OCT 30461 OCT 30462 OCT 30463 ASC 1,?? TEST # ?? IN CASE LAST FLAG GOT LOST. * DEC 10 MESS1 ASC 10,NO RESPONSE FROM MUX * DEC 15 MESS2 ASC 15,MUX LOOPING IN TEST NUMBER * DEC 13 MESS3 ASC 13,MUX TEST NUMBER FAILED * DEC 8 MESS4 ASC 8,MUX TEST PASSED * DEC 25 MESS5 ASC 25, ENTER MULTIPLEXER SELECT CODE IN OCTAL (E.G.21B)_ * TLEN DEC -800 WAIT TIME LOOP COUNTER * DECIDED BY MAKING SOME MEASUREMENTS ERROR OCT 377 D13 DEC 13 ZERO OCT 0 ONE OCT 1 M1 DEC -1 THREE OCT 3 M14 DEC -14 M100B OCT -100 COUNT DEC -10000 FACTR DEC -100 DOWNL OCT 144000 MESS NOP OCT 141474 OCT 050400 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 015122 OCT 042522 OCT 026122 OCT 042522 OCT 015122 OCT 042522 OCT 026122 OCT 042522 OCT 000175 OCT 000163 OCT 000001 OCT 012020 OCT 126777 OCT 072202 OCT 147663 OCT 103407 OCT 003002 OCT 010004 OCT 042003 OCT 140405 OCT 165021 OCT 013400 OCT 030777 OCT 077715 OCT 052122 OCT 007024 OCT 037005 OCT 166571 OCT 037200 OCT 166571 OCT 127441 OCT 000001 OCT 021000 OCT 030026 OCT 000441 OCT 000020 OCT 007020 OCT 042453 OCT 103020 OCT 176015 OCT 020371 OCT 133702 OCT 042522 OCT 012441 OCT 000040 OCT 007000 OCT 020354 OCT 020400 OCT 001042 OCT 000060 OCT 012441 OCT 176577 OCT 076275 OCT 070040 OCT 000562 OCT 025574 OCT 177122 OCT 020364 OCT 020775 OCT 077574 OCT 136570 OCT 020001 OCT 075276 OCT 141105 OCT 051053 OCT 076376 OCT 051040 OCT 170257 OCT 134102 OCT 053450 OCT 154041 OCT 000003 OCT 021000 OCT 030016 OCT 004006 OCT 007041 OCT 020521 OCT 166663 OCT 010777 OCT 071041 OCT 177164 OCT 011443 OCT 015276 OCT 141105 OCT 051160 OCT 010366 OCT 020400 OCT 002042 OCT 000060 OCT 013112 OCT 075326 OCT 010127 OCT 045006 OCT 001041 OCT 027521 OCT 166663 OCT 020400 OCT 002755 OCT 074376 OCT 002702 OCT 042522 OCT 074776 OCT 005040 OCT 162442 OCT 000060 OCT 037125 OCT 151412 OCT 151432 OCT 037014 OCT 151412 OCT 151432 OCT 007020 OCT 037005 OCT 166571 OCT 037200 OCT 166571 OCT 007027 OCT 013007 OCT 037121 OCT 166507 OCT 003013 OCT 020461 OCT 050755 OCT 131755 OCT 057141 OCT 003101 OCT 064112 OCT 166501 OCT 046175 OCT 177133 OCT 024042 OCT 175566 OCT 014367 OCT 074376 OCT 055040 OCT 003076 OCT 024355 OCT 074430 OCT 002404 OCT 045355 OCT 040514 OCT 166515 OCT 045355 OCT 074114 OCT 163177 OCT 136440 OCT 010054 OCT 166515 OCT 037015 OCT 111062 OCT 000460 OCT 075015 OCT 012776 OCT 000040 OCT 135715 OCT 052122 OCT 035001 OCT 020333 OCT 177713 OCT 043440 OCT 175303 OCT 000000 OCT 003030 OCT 037020 OCT 047755 OCT 040474 OCT 177030 OCT 141130 OCT 051076 OCT 141723 OCT 004311 SIZE DEC 358 END DIAG END$