ASMB,A,B,C,L HED * 12821A DIAGNOSTIC ORG 0 SUP * * * *** 12821A DIAGNOSTIC *** * * INSTRUCTIONS FOR CONVERSATIONAL MODE: * (FOR NON-CONSOLE OPERATION SKIP TO #11) * * 1. LOAD CONFIGURATOR WITH IBL. * * 2. SET P TO 100B, S TO CONSOLE SELECT CODE (BITS 0-5), AND * PRESS PRESET, RUN. * * 3. CONFIGURATOR WILL DISPLAY: * * "LINE PRINTER (NO,SC)" * * ENTER "NONE" (SINCE THIS DIAGNOSTIC DOESN'T TALK TO * LINE PRINTERS). * * 4. NEXT,CONFIGURATOR WILL DISPLAY: * * "DIAG INPUT DEVICE (NO,SC)" * * ENTER "AAAA,BB" WHERE AAAA IS THE FOUR DIGIT MODEL * NUMBER OF THE INPUT DEVICE AND BB IS IT'S SELECT CODE * (EXAMPLE..2748,15 OR 7970,23 ETC.) * * 5. NEXT, CONFIGURATOR WILL DISPLAY: * * "DSN (SEQ.DIAG,EXECUT)" * * MAKE THE INPUT DEVICE READY AND ENTER "103024" * * 6. THE CPU WILL LOAD THE DIAGNOSTIC AND COME TO A HLT 77B. PRESS * PRESET, RUN AND ANSWER THE QUESTIONS ISSUED BY THE DIAGNOSTIC. * * 7. SR BIT 15 - TO BREAK OUT OF A LOOPING TEST (TOGGLE ON,OFF) * TO LOOP ON ENTIRE DIAGNOSTIC (SET TO 1) * * 8. SR BIT 14 - (A) SUPPRESS OPERATOR INTERVENTION (TEST 10) * * 9. SR BIT 13 - SUPPRESS ALL MESSAGE PRINTING * (EXCEPT CONFIGURATION MESSAGES) * * 10. SR BIT 12 - CAUSE A 1 SEC. DELAY BETWEEN THE EXCECUTION * OF EACH TEST. SKP * * *****NON-CONVERSATIONAL MODE***** * * 11. LOAD DIAGNOSTIC CONFIGURATOR USING IBL. (HLT 77B) * * 12. USING AUTOMATIC OR MANUAL MODE, * * AUTOMATIC..P=100, S=012300 (7970B IN S.C. 23) * * S=001600 (2748B IN S.C. 16) * * LOAD DIAGNOSTIC - READY INPUT DEVICE, * PRESS PRESET,RUN. DIAG. LOADS (HLT 77B). * * 13. PRESS PRESET,RUN. * * * *******HALTS******* * * (ALL INPUTS SHOULD BE MADE IN SWITCH REGISTER BITS 0-5) * * HLT 1B - INPUT DI #1'S SELECT CODE,PRESS RUN. * * HLT 2B - INPUT DI #1'S BUSS ADDRESS,PRESS RUN. * * HLT 3B - INPUT DI #2'S SELECT CODE OR "0" IF NONE. * PRESS RUN. * * HLT 4B - INPUT DI #2'S BUS ADDRESS,PRESS RUN. * * HLT 5B - LOAD SW. REG. WITH DESIRED OPTIONS. PRESS RUN. * * HLT 7B - ERROR! SR BITS 6-11 = TEST # IN OCTAL * 0-5 = SUBTEST # * * HLT 77B - DIAGNOSTIC PASSED. PRESS RUN TO REPEAT. * * * * * NOTE: IN ORDER TO PROVIDE AN UNUSUAL DEGREE OF FLEXIBILITY * AND FRIENDLYNESS THIS DIAGNOSTIC USES CUSTOMISED * SWITCH REGISTER OPTIONS. PLEASE NOTE ANY DIFFERENCES * BEFORE STARTING. * * U13 S8 (SYSTEM CONTROLLER) SWITCH MUST BE IN THE * OPEN POSITION ON ALL DI'S UNDER TEST FOR PROPER * DIAGNOSTIC OPERATION. * * THIS DIAGNOSTIC REQUIRES A MINIMUM OF 8KW MEMORY. SKP * * * *** BASE PAGE STORAGE *** * A EQU 0 B EQU 1 SR EQU 1 CD1 EQU 51B CD2 EQU 52B * ORG 2B * JMP ? CONVENIENT RESTART * ORG 100B * JMP .STRT,I START FOR CONFIGURATOR BSS 1 FAST INPUT (PHOTO READER) BSS 1 DEF CONSOLE OUTPUT DRIVER BSS 1 DEF LINE PRINTER DRIVER SLOIN BSS 1 SLOW INPUT (KEYBOARD) DEF FWAA FIRST WORD OF AVBL. MEMORY BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) BSS 1 1 MILL SEC TIME OUT COUNT BSS 1 SELECT CODES FOR I/O CONSC BSS 1 CONSOLE SELECT CODE. BSS 2 CPTO BSS 1 COMPUTER TYPE/OPTIONS BSS 1 USER CARD TYPE AND SELECT CODE BSS 1 MEMORY SIZE AND TYPE BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 DEF L MS TIMER ROUTINE SWRC BSS 1 DEF SR CHECK ROUTINE D2AS BSS 1 DEF DEC TO ASCII ROUTINE O2AS BSS 1 DEF OCTAL TO ASCII ROUTINE ASCON BSS 1 DEF ASCII TO NUMBER ROUTINE DSN OCT 103024 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 DEF FORMATTER .STRT DEF START POINTER TO ADDRESS OF START .CDE DEF DO START OF CODE .ECDE DEF ECDE END OF CODE SC1 OCT 77 S.C. OF DI #1 SC2 OCT 77 S.C. OF DI #2 SC NOP ACTIVE SELECT CODE TL1 NOP DI #1 BUS ADDRESS TL2 NOP DI #2 BUS ADDRESS CTR NOP EFLG NOP 1 IF MX-E, OTHERWISE 0 P1 NOP B3 OCT 3 B10 OCT 10 B30 OCT 30 B40 OCT 40 B51 OCT 51 B52 OCT 52 B60 OCT 60 B77 OCT 77 M1 DEC -1 M3 DEC -3 .T14 DEF T14 POINTER TO T14 M5 DEC -5 M8 DEC -8 M16 DEC -16 M17 DEC -17 M0 DEC 0 M20 DEC -20 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D5 DEC 5 D6 DEC 6 D7 DEC 7 D8 DEC 8 D9 DEC 9 D10 DEC 10 D11 DEC 11 D15 DEC 15 D17 DEC 17 D1K DEC 1000 B377 OCT 377 TMP11 NOP B30K OCT 30000 MB60 OCT -60 MB72 OCT -72 BIT3 OCT 10 U1 OCT 100 T1 NOTIFICATION AT SWITCH REGISTER U2 OCT 200 T2 " U3 OCT 300 T3 " U4 OCT 400 T4 " U5 OCT 500 T5 " U6 OCT 600 T6 " U7 OCT 700 T7 " U8 OCT 1000 T8 " U9 OCT 1100 T9 " U10 OCT 1200 T10 " U11 OCT 1300 T11 " U12 OCT 1400 T12 " U13 OCT 1500 T13 " U14 OCT 1600 T14 " U15 OCT 1700 T15 " BIT15 OCT 100000 JMPT3 JMP 3,I TO BE PUT IN TRAP CELL OF INTERRUPTING DI NB77 OCT 177700 NEGITIVE BINARY 77 BKARO OCT 137 ASCII BACKARROW IOMSK OCT 172000 MASK FOR I/O INSTRUCTIONS BSAV NOP .BBUF DEF BBUF POINTER TO ADDRESS OF BBUF BBUF NOP TEMPORARY B REGISTER STORAGE BBUX OCT 137 DO NOT SEPERATE BBUX AND BBUF! (TABLE) IOINS OCT 102000 I/O INSTRUCTION LFLAG NOP *LOOP LFLAG CTRL NOP HOLDA NOP TEMPORARY A REGISTER STORAGE HOLDB NOP TEMPORARY B REGISTER STORAGE SAVAH NOP ADATA NOP ACTUAL DATA EDATA NOP EXPECTED DATA CHARB OCT 102 B CHARACTER IN ASCII B70 OCT 70 CHARL OCT 114 L CHAR? OCT 77 ? CHAR$ OCT 44 $ SPACE OCT 40 SPACE CHARF OCT 106 F CW1 OCT 12 CW2 OCT 10014 CHKRB OCT 125252 CW3 OCT 207 TEST, TALK , LISTEN , CIC MP NOP MESSAGE POINTER .T7.8 DEF T7.8 JMP4I JMP 4,I TRAPI CLC 3B TRAP INSTRUCTION MP94 DEF MS94 POINTER TO ADDRESS OF MS94 .SP DEF SPACE POINTER TO ADDRESS OF SPACE CHARE OCT 105 E ASCII CHARACTER CHARR OCT 122 R CHARN OCT 116 N DN15 OCT 77777 D300 DEC 300 MX.E OCT 110000 EMSK OCT 010000 CHARG OCT 107 G BIT14 OCT 40000 BIT13 OCT 20000 BIT12 OCT 10000 D5K DEC 5000 SMSK OCT 170000 D10K DEC 10000 LADD NOP LISTENERS HP-IB BUS ADDRESS D36 DEC 36 P3 NOP .PM DEF PMON P2 NOP CM6 OCT 4 CM5 OCT 3 PPE OCT 40 PARALLEL POLL ENABLE PLAD NOP PARALLEL POLL ADDRESS CM1 OCT 60001 STAC NOP STORE ACTUAL CM8 OCT 60034 MD36 DEC -36 TMP1 NOP TEMPORARY STORAGE LOCATION #1 TMP2 NOP " " " #2 TMP3 NOP " " " #3 TMP4 NOP " " " #4 TMP5 NOP " " " #5 TSC NOP TALKER S.C. LSC NOP LISTENER S.C. CM2 OCT 100001 CM3 OCT 100000 CM4 OCT 10047 TMP6 NOP .? DEF ? TMP7 NOP TMP8 NOP TMP9 NOP TMP10 NOP .HT HLT 77B DO NOT SEPERATE JMP ? THESE TWO LINES CM7 OCT 15 P,L,CIC CM9 OCT 13 P,T,CIC MO10 OCT -10 B67 OCT 67 COMPT OCT 4012 STAT NOP TMP13 NOP TMP12 NOP SKP * * CONTROL/STATUS TABLE * (X,Y) WHERE X=CONTROL WORD SENT * Y=STATUS WORD EXPECTED BACK * .CST DEF * OCT 0,00030 COMBINATION FCDS USES TO LOCATE DI'S OCT 1,31 OCT 2,32 OCT 4,34 OCT 10,30 OCT 20,30 OCT 40,30 OCT 100,30 OCT 200,30 OCT 400,30 OCT 1000,30 OCT 2000,30 OCT 4000,30 OCT 10000,30 OCT 20000,20030 OCT 40000,40230 OCT 100000,100030 OCT 1,31 OCT 3,33 OCT 5,35 OCT 11,31 OCT 21,31 OCT 41,31 OCT 101,31 OCT 201,31 OCT 401,31 OCT 1001,31 OCT 2001,31 OCT 4001,31 OCT 10001,31 OCT 20001,20031 OCT 40001,40231 OCT 100001,31 OCT 411,31 OCT 413,433 OCT 47,1437 OCT -1 SKP * * TEST TABLE * TP NOP TEST POINTER .TT DEF *+1,I DEF T0 STARTING ADDRESS OF TEST 0 DEF T1 1 DEF T2 2 DEF T3 3 DEF T4 4 DEF T5 5 DEF T6 6 DEF T7 7 DEF T8 8 DEF T9 9 DEF T10 10 DEF T11 11 DEF T12 12 DEF T13 13 DEF T14 14 DEF PMON PASS MONITOR DEF T15 15 DEF ? SKP * * BUFFER STORAGE * .ABFF DEF ABUF+10 .ABUF DEF ABUF ABUF BSS 10 * .BUF1 DEF B1E1 B1E1 OCT 125252 B1E2 OCT 146314 B1E3 OCT 170360 B1E4 OCT 177400 OCT 2 OCT 3 OCT 4 BSS 8 * .BUF2 DEF B2E1 DEF B2E1+20 B2E1 NOP B2E2 NOP NOP NOP NOP NOP BSS 14 * .BUF3 DEF B3E1 B3E1 OCT 252 B3E2 OCT 314 B3E3 OCT 360 BSS 10 * SKP .B41 DEF B4E2 .B4 DEF B4E1 B4E1 BSS 35 B4E2 BSS 1 * .B5 DEF B5E1 **ASCII** B5E1 OCT 60 0 OCT 61 1 OCT 62 2 OCT 63 3 OCT 64 4 OCT 65 5 OCT 66 6 OCT 67 7 OCT 70 8 OCT 71 9 OCT 101 A OCT 102 B OCT 103 C OCT 104 D OCT 105 E OCT 106 F OCT 107 G OCT 110 H OCT 111 I OCT 112 J OCT 113 K OCT 114 L OCT 115 M OCT 116 N OCT 117 O OCT 120 P OCT 121 Q OCT 122 R OCT 123 S OCT 124 T OCT 125 U OCT 126 V OCT 127 W OCT 130 X OCT 131 Y OCT 132 Z SKP * * *** BASE PAGE ROUTINES *** * * DO - CONSOLE DISPLAY OF OCTAL NUMBER IN "A" REGISTER * DO NOP STA HOLDA SAVE A LDA BKARO ASCII BACKARROW LDB .ABUF GET ADDRESS OF 10 WORD BUFFER DO10 STA B,I FILL BUFFER WITH BACKARROWS INB BUMP B CPB .ABFF IS THE BUFFER FILLED? RSS YES, GO ON JMP DO10 NO, GO BACK CLE *** PROCEDURE TO USE LDA HOLDA *** OCTAL TO ASCII ROUTINE LDB .ABUF *** IN CONFIGURATOR JSB O2AS,I *** NOP *** LDB .ABUF JSB RJ RIGHT JUSTIFY CLA *** USE FMTR IN CONFIGURATOR JSB FMTR,I *** TO OUTPUT NUMBER TO CONSOLE JSB MSG PRINT... DEF MS70 "B" JMP DO,I RETURN * * DD - CONSOLE DISPLAY OF DECIMAL VALUE IN "A" REGISTER * DD NOP STA HOLDA SAVE NUMBER LDA BKARO ASCII BACKARROW LDB .ABUF GET ADDRESS OF BUFFER DD10 STA B,I FILL BUFFER WITH BACKARROWS INB BUMP B CPB .ABFF DONE YET? RSS YES, GO ON JMP DD10 NO, GO BACK CLE *** TELL CONFIGURATOR LDA HOLDA *** TO DO CONVERSION LDB .ABUF *** JSB D2AS,I *** NOP *** LDB .ABUF JSB RJ RIGHT JUSTIFY CLA *** USE CONFIGURATOR TO JSB FMTR,I *** OUTPUT TO CONSOLE JMP DD,I RETURN SKP * * RJ - RIGHT JUSTIFY (DELETE LEADING 0'S,SPACES) * RJ NOP NOP LDA B,I GET FIRST WORD ALF,ALF EXCHANGE UPPER,LOWER BYTE AND B377 SAVE LOWER BYTE CPA B60 DIGIT 5 (ASCII 0?) JMP RJ10 YES, JUMP CPA B40 NO. ASCII SPACE? JMP RJ10 YES, JUMP JMP RJ,I NO. EXIT RJ10 LDA B,I GET FIRST WORD AGAIN AND B377 SAVE LOWER BYTE CPA B60 DIGIT 4 (ASCII 0?) JMP RJ15 YES, JUMP STA B,I PUT IT BACK JMP RJ,I EXIT RJ15 CLA STA B,I INB LDA B,I ALF,ALF AND B377 CPA B60 DIGIT 3 RSS JMP RJ,I LDA B,I AND B377 CPA B60 DIGIT 2 JMP RJ20 STA B,I JMP RJ,I RJ20 CLA STA B,I INB LDA B,I ALF,ALF AND B377 CPA B60 RSS JMP RJ,I LDA B,I AND B377 STA B,I JMP RJ,I SKP * * MSG- DISPLAY MESSAGE ON CRT. * * CALLING SEQUENCE: * * JSB MSG * DEF MSXX * * CONTROL CHARACTERS ALLOWED: * * _ - (BACKARROW OR UNDERSCORE, I.E., OCT 137) SKIP SPACES * UNTIL NEXT CHARACTER. * * $ - END OF MESSAGE. * MSG NOP LDB MSG,I GET ADDRESS OF MESSAGE TO BE OUTPUT ISZ MSG WHEN DONE, RETURN P+2 STB MP SAVE MESSAGE POINTER MSG7 LDA MP,I GET 1ST TWO BYTES NOP ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE CPA BKARO BACKARROW? JMP MSG15 YES, JUMP CPA CHAR$ NO. "$" ? JMP MSG20 YES, EXIT STA BBUF NO. PUT CHARACTER IN BUFFER CLA,CLE *** USE FMTR IN CONFIGURATOR LDB .BBUF *** TO OUTPUT CHARACTER JSB FMTR,I *** ON CONSOLE LDA MP,I GET 2 BYTES AND B377 MASK FOR LOWER BYTE CPA BKARO BACKARROW? JMP MSG15 YES, JUMP CPA CHAR$ "$" ? JMP MSG20 YES, EXIT STA BBUF SAVE CHARACTER IN BUFFER CLA,CLE *** USE CONFIGURATOR TO LDB .BBUF *** OUTPUT CHARACTER ON JSB FMTR,I *** CONSOLE ISZ MP BUMP MESSAGE POINTER JMP MSG7 GO BACK MSG15 ISZ MP BACKARROW FOUND, BUMP POINTER LDA MP,I GET 2 MORE BYTES ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE CPA SPACE SPACE? JMP MSG15 YES, STAY IN LOOP AND DON'T OUTPUT THIS CHARACTER JMP MSG7 NO. GO BACK MSG20 NOP NOP JMP MSG,I EXIT * * * SRO - OUTPUT THE A REGISTER TO THE SWITCH REGISTER * WITHOUT DISTURBING BITS 12 TO 15 * * SRO NOP STA HOLDA SAVE A REGISTER RSS SKIP SAMPLE INSTRUCTION SR1 OTA CD1 LDA SR1 GET SAMPLE INSTRUCTION AND B77 SAVE ONLY S.C. STA SC UPDATE SC POINTER CPA SC1 IS PROGRAM SET UP TO TEST DI #1 ? JMP SR2 YES, JUMP CCE NO, SET E-REGISTER (SIGNAL OPERATOR DI#2 BEING TESTED) RSS SR2 CLE SIGNAL DI#1 BEING TESTED LIA SR READ SWITCH REGISTER AND SMSK SAVE ONLY BITS 12 TO 15 IOR HOLDA ADD NEW PART OTA SR SEND IT TO SWITCH REGISTER JMP SRO,I EXIT * * * BB - BARE BONES TEST OR CONVERSATIONAL? * * IF CONSOLE RETURN AT P+3 * OTHERWISE RETURN AT P+1 * * BB NOP STA HOLDA SAVE A LDA CONSC GET CONSOLE S.C. SZA ANY CONSOLE? JMP BB1 CONSOLE! LDA HOLDA NO CONSOLE. JMP BB,I RETURN BB1 LDA HOLDA RESTORE A ISZ BB RETURN AT P+3 ISZ BB JMP BB,I * * CRSC - OUTPUTS THE CURRENTLY ACTIVE SELECT CODE TO * THE CONSOLE * CRSC NOP STA TMP12 SAVE A JSB MSG PRINT... DEF MS129 "THE CURRENTLY ACTIVE S.C. IS.." LDA SC GET SELECT CODE JSB DO OUTPUT IT JSB CRLF DO A CRLF LDA TMP12 RESTORE A JMP CRSC,I EXIT SKP * * BELL - RING BELL * BELL NOP JSB MSG PRINT... DEF MS69 "BEEP" JMP BELL,I * * PMON * PMON JSB BB SWITCH REGISTER MODE? NOP YES JMP PM1 LDB BIT13 SR BIT 13 SET? JSB SWRC,I JMP PM1 YES, SUPPRESS PRINTING JSB BELL NO, RING BELL JSB MSG PRINT... DEF MS132 "TESTING COMPLETED ON SC..." LDA SC GET SC JSB DO OUTPUT IT JSB CRLF DO CRLF PM1 LDA SC GET S.C. CPA SC1 DONE WITH FIRST OR SECOND CARD? RSS SKIP JMP PM20 DONE WITH SECOND CARD LDA SC2 GET S.C. OF DI#2 CPA B77 IS THERE A SECOND CARD? JMP PM3 NO STA SC MAKE CURRENTLY ACTIVE S.C. JSB INTIO YES, MAKE CURRENT SC LDA .TT GO TO TESTING STA TP JMP TP,I PM20 ISZ TP SECOND CARD HAS PASSED JMP TP,I GO DO TEST 15 PM3 LDB BIT15 SR BIT 15 SET? JSB SWRC,I JMP PM5 YES, START OVER JSB BB CONSOLE? NOP NO JMP .HLT HALT 77 JMP ? PM5 LDA .TT STA TP JMP TP,I SKP * * CLR15 CLEARS SWITCH REGISTER BIT 15 * CLR15 NOP STA HOLDA SAVE A LIA SR GET SR AND DN15 DROP BIT 15 OTA SR PUT IT BACK LDA HOLDA RESTORE A JMP CLR15,I EXIT * * .HLT DOES A HALT 77B AFTER MAKING SURE THAT SR BIT * 15 IS NOT BEING RESET BY THE OPERATOR * .HLT NOP LIA SR GET SR STA HOLDA SAVE IT .H1 LDB BIT15 SEND BIT 15 TO SR OTB SR JSB SWRC,I IS BIT 15 SET? RSS YES,NO FINGER ON BUTTON JMP .H2 NO,WAIT FOR SWITCH RELEASE LDA HOLDA RESTORE SR OTA SR JMP .HT GO DO HALT 77B .H2 LDA D300 JSB TMRR,I JMP .H1 SKP * * INTIO - INITIALIZE THE I/O INSTRUCTIONS. * * CHANGES SELECT CODES IN I/O INSTRUCTIONS BETWEEN * THE LOCATIONS POINTED TO IN * .CDE,I AND .ECDE,I AS FOLLOWS: * * 51 TO SC1 (SELECT CODE OF FIRST CARD) * 52 TO SC2 (SELECT CODE OF SECOND CARD) * SC1 TO SC2 * SC2 TO SC1 * * IF TARGET SELECT CODE IS 77 (NOT DETERMINED YET) NO * CHANGE IS MADE ON THIS PASS. * INTIO NOP CLA A=0 LDB .B4 INITIALIZE T15 TEST BUFFER IN10 CPB .B41 JMP IN15 DONE, GO ON STA B,I INB JMP IN10 IN15 STA B,I LDB .CDE GET ADDRESS OF BEGINING OF CODE STB P1 SAVE IT IN20 LDA P1,I GET 1ST INSTRUCTIONN AND IOMSK B172000 MASK FOR I/O GROUP CPA IOINS B102000 I/O INSTRUCTION? RSS YES, SKIP JMP IN50 NO. JUMP LDA P1,I GET INSTRUCTION AGAIN AND B77 MASK FOR SELECT CODE LDB A DEFAULT IS ORIGINAL SC CPA B51 CD1? LDB SC1 USE S.C. INPUT BY OPERATOR CPA B52 CD2? LDB SC2 USE S.C. INPUT BY OPERATOR CPA SC1 HAS DI #1 ALREADY PASSED? LDB SC2 YES, SWAP CPA SC2 HAS DI #2 ALREADY PASSED? LDB SC1 YES, START OVER WITH DI #1'S S.C. CPB B77 JMP IN50 SC NOT DETERMINED YET NOP LDA P1,I GET INSTRUCTION AGAIN AND NB77 REMOVE OLD SELECT CODE IOR B ADD NEW SELECT CODE STA P1,I REPLACE OLD INSTRUCTION WITH NEW ONE NOP IN50 ISZ P1 BUMP LOCATION POINTER LDB P1 READ NEW P1 CPB .ECDE ARE WE AT THE END OF CODE ? JMP INTIO,I YES, EXIT JMP IN20 NO, GO BACK SKP * * * CRLF - EXECUTE CRLF ON CONSOLE * CRLF NOP STB BSAV SAVE B CLA,CLE *** USE CONFIGURATOR TO LDB MP94 *** OUTPUT CRLF JSB FMTR,I *** LDB BSAV RESTORE B JMP CRLF,I EXIT * * DCRLF - EXECUTE TWO CRLF'S ON CONSOLE * DCRLF NOP JSB CRLF JSB CRLF JMP DCRLF,I SKP * * CON - GET CONSOLE INPUT FROM OPERATOR * * RETURN: * * P+1 A=# * P+2 A=CHAR1 OF MESSAGE * P+3 ? ENTERED * CON NOP CLA A=0 LDB .ABUF GET ADDRESS OF BUFFER CON5 STA B,I FILL BUFFER WITH 0'S INB BUMP B CPB .ABFF FINISHED ? RSS YES, SKIP JMP CON5 NO, GO BACK LDA D8 *** USE CONFIGURATOR'S SLOIN LDB .ABUF *** TO GET INPUT JSB SLOIN,I *** FROM CONSOLE NOP *** LDA ABUF GET 1ST 2 BYTES NOP ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE STA HOLDA SAVE IT ADA MB60 SUBTRACT 60 SSA IS THE RESULT A POSITIVE NUMBER ? JMP CON10 <60 NO, JUMP LDA HOLDA YES ADA MB72 SUBTRACT 72 SSA,RSS IS THE RESULT A NEGATIVE NUMBER ? JMP CON10 >72 NO LDB .ABUF YES, IT'S AN ASCII 0-9 CLE JSB CV# CONVERT ASCII TO BINARY JMP CON,I EXIT AT P+1 CON10 LDA ABUF GET 2 BYTES AGAIN STA HOLDA SAVE THEM AND B377 MASK FOR LOWER BYTE IOR B30K ADD ASCII "0" IN UPPER BYTE STA ABUF WIPE OUT LETTER LDA HOLDA GET ORIGINAL BYTES ALF,ALF TRADE BYTES AND B377 MASK FOR LOWER BYTE CPA CHAR? IS IT A QUESTION MARK? JMP CON? YES, EXIT AT P+3 STA HOLDA NO, MUST BE A MESSAGE ISZ CON EXIT AT P+2 JMP CON,I CON? ISZ CON ISZ CON JMP CON,I SKP * * CV# - CONVERT ASCII NUMBER INPUT FROM CONSOLE TO BINARY * * * IF NUMBER INPUT ON CONSOLE WAS TERMINATED WITH A "B" * CONVERSION IS FROM ASCII OCTAL TO BINARY, OTHERWISE * FROM ASCII DECIMAL TO BINARY. * CV# NOP LDB .ABUF GET ADDRESS OF BUFFER CV3 LDA B,I GET FIRST WORD ALF,ALF EXCHANGE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE SZA,RSS IS IT ALL 0'S JMP CV7 YES, JUMP CPA CHARB NO. IS IT AN ASCII B? JMP CV8 (OCT) YES, JUMP LDA B,I NO, GET WORD AGAIN AND B377 MASK FOR LOWER BYTE SZA,RSS IS IT 0? JMP CV7 (DEC) YES, JUMP CPA CHARB NO, IS IT A B? JMP CV8 (OCT) YES, JUMP INB NO. BUMP B JMP CV3 GO BACK CV7 CLA ASCII DECIMAL INPUT RSS CV8 CCA ASCII BINARY INPUT LDB .ABUF *** USE ASCII,DECIMAL JSB ASCON,I *** ROUTINE IN CONFIGURATOR NOP *** JMP CV#,I EXIT * * * STUFJ - PLACE JMP 3,I IN THE CARD TRAP CELL AND PUT * THE ADDRESS IN JSB+1 INTO ADDRESS 3. * STUFJ NOP LDB JMPT3 GET JMP 3,I. STB SC,I PUT IT IN DI TEST SC. LDA STUFJ,I GET SUBROUTINE ADDRESS. STA 3 PUT IT IN ADDRESS 3. ISZ STUFJ UPDATE RETURN. JMP STUFJ,I RETURN. SKP * * LP? - DETERMINE IF LOOP FLAG IS SET * * RETURNS: * * P+1 . . . LOOP FLAG SET * P+2 . . . LOOP FLAG CLEAR * LP? NOP STA HOLDA STB HOLDB SAVE A,B LDA SC GET S.C. CPA SC1 DI #1 CURRENTLY ACTIVE? CLE YES CLEAR EXTEND REGISTER LDB BIT12 WAIT 1 SEC. BETWEEN TESTS? JSB SWRC,I RSS YES JMP L3? NO LDA D1K JSB TMRR,I L3? LDA LFLAG GET LOOP FLAG SZA,RSS IS LOOP FLAG=0? (CLEAR) JMP L10? LDB BIT15 NO. LOOK AT S.W. BIT 15 JSB SWRC,I IS IT SET? (CONFIGURATOR ROUTINE) JMP ? YES, BREAK LOOP L4? LDA HOLDA NO. CONTINUE LOOP (RESTORE A,B REGISTERS) LDB HOLDB JMP LP?,I RETURN TO SAME TEST L10? ISZ LP? JMP L4? * * GTMAD - DISPLAY "...BAD INPUT..." ON DISPLAY * GTMAD NOP JSB CRLF JSB MSG PRINT... DEF MS36 "BAD INPUT.." JSB CRLF DO A CRLF JMP GTMAD,I EXIT SKP * * FCDS - FIND THE CARDS * FCDS NOP LDA B77 STA SC1 PUT 77 INTO SC1 AND STA SC2 SC2 LDB B10 S.C. 10 FC0 LDA FC1 ** THESE INSTRUCTIONS PUT A SELECT CODE AND NB77 ** DESIGNATION INTO FC1,FC2 AND FC3. IOR B ** BEGINNING WITH 10 AND INCREASING STA FC1 ** UNTIL AN DI CARD IS FOUND THAT LDA FC2 ** RETURNS THE CORRECT STATUS AND NB77 ** IOR B ** STA FC2 ** LDA FC3 ** AND NB77 ** IOR B ** STA FC3 ** CLA ** FC1 CLC CD1,C GET STATUS WORD FROM FC2 OTA CD1 THAT S.C. FC3 LIA CD1 AND B77 MASK FOR LOWER 6 BITS CPA B30 DI CARD? JMP FC10 YES, JUMP INB NO. TRY NEXT SELECT CODE CPB B70 DONE YET? JMP FCDS,I YES. EXIT JMP FC0 NO. GO BACK FC10 LDA SC1 CPA B77 HAS DI #1 BEEN FOUND YET? RSS NO JMP FC15 YES, MAKE THIS SC2 STB SC1 NO, MAKE THIS SC1 INB BUMP B JMP FC0 GO TRY NEXT S.C. FC15 STB SC2 SC2 IS THE S.C. OF DI #2 JMP FCDS,I EXIT SKP * * ? - INTERPRET COMMANDS FROM CONSOLE * * ALLOWABLE COMMANDS: * * CR - (DEFAULT) RUN ALL TESTS FROM TEST 0 * N - EXCECUTE FROM TEST N * LN - LOOP ON TEST N * E - EXIT PROGRAM (PRESS RUN TO RESTART) * R - RECONFIGURE (GO BACK TO CONFIGURATION SECTION) * F - FORCE TEST SECOND BOARD * (WHEN T14 FAILS ON DI #1) * G - GO BACK AND TEST DI #1 AGAIN * * ? LDA .TT GET ADDRESS OF TEST 0 STA TP SAVE IT IN THE TEST POINTER CLF 0 KEEP INT SYS OFF LDA LFLAG STA TMP11 SAVE LOOP INDICATION CLA CLEAR A STA LFLAG RESET LOOP FLAG JSB BB CONSOLE? NOP YES JMP TP,I GO TO T0 LDB BIT15 NO. BIT 15 SET? JSB SWRC,I RSS YES JMP ?5 NO, DON'T LOOP LDA TMP11 WERE WE ALREADY SZA LOOPING? JMP ?5 NO JMP TP,I YES, GO TO T0 ?5 JSB CRLF YES LIA SR JSB SRO UPDATE E-REG. JSB MSG PRINT... DEF MS35 "?" JSB CON GET OPERATOR INPUT JMP ?10 # INPUT JMP ?20 LETTER INPUT (OR CRLF) JSB MSG ? INPUT, PRINT... DEF MS37 WHAT'S AVAILABLE JSB CRLF JMP ? ?10 STA SAVAH SAVE A CPA D15 #15 INPUT? JMP ?12 YES LDA D15 NO. SUBTRACT 15 FROM NUMBER INPUT CMA,INA ADA SAVAH SSA IS THE RESULT A POSITIVE NUMBER? JMP ?10.1 # INPUT <15 JSB MSG PRINT... DEF MS131 "IMPROPER TEST SELECTION" JSB BELL JSB CRLF LDA D17 # INPUT >15 JMP ?11 ?10.1 LDA SAVAH JMP ?11 ?12 INA ?11 ADA .TT MOVE TEST POINTER TO NEW TEST STA TP SAVE IT NOP JMP TP,I GO DO TEST ?20 CPA CHARL L ENTERED? JMP ?30 YES CPA CHARF F ENTERED? JMP ?25 YES CPA CHARE E ENTERED? JMP ?50 YES CPA CHARG G ENTERED JMP ?28 YES CPA CHARR R ENTERED? JMP ?51 YES SZA,RSS NO. SKIP IF A ISN'T 0 JMP ?40 DEFAULT (CRLF) JSB GTMAD BAD INPUT JSB CLR15 CLEAR SR BIT 15 JMP ? START OVER ?25 JSB CLR15 LDA SC GET ACTIVE S.C. CPA SC1 DI #1 CURRENTLY UNDER TEST? JMP ?26 YES, SKIP JMP ? ?26 LDA SC2 IS THERE A CPA B77 SECOND CARD? RSS NO JMP ?27 YES JSB MSG PRINT... DEF MS130 "NO SECOND DI CONFIGURED" JSB CRLF JSB BELL JMP ? ?27 JSB INTIO RECONFIGURE SELECT CODES LDA SC2 STA SC JMP ? ?28 JSB CLR15 LDA SC GET CURRENTLY ACTIVE S.C. CPA SC2 DI #2 ? RSS YES, SKIP JMP ? NO. IGNORE "G" COMMAND JSB INTIO INITAILIZE PROGRAM FOR DI #1 LDA SC1 GET DI #1 S.C. STA SC UPDATE ACTIVE SELECT CODE POINTER JMP ? ?30 ISZ LFLAG SET LOOP FLAG JSB CV# CONVERT # NOP STA SAVAH CPA D15 #15 INPUT? JMP ?31 YES LDA D15 NO. SUBTRACT 15 FROM # INPUT CMA,INA ADA SAVAH SSA IS THE RESULT A POSITIVE NUMBER? JMP ?30.1 # INPUT <15 JSB MSG PRINT... DEF MS131 "IMPROPER TEST SELECTION" JSB BELL JSB CRLF LDA D17 # INPUT >15 JMP ?40 ?30.1 LDA SAVAH RESTORE A JMP ?40 ?31 INA ?40 ADA .TT POINT TO TEST "N" NOP STA TP JMP TP,I GO DO IT ?50 JMP .HLT ?51 JMP .STRT,I SKP * * BCVT- BIT CONVERT * * CONVERTS A REGISTER TO TWO DECIMAL NUMBERS * CORRESPONDING TO THE FIRST TWO BITS SET. * ENTERING WITH A = 6100, E.G., RETURNS WITH * A = DEC 10, B = DEC 6. IF ONLY ONE BIT * IS SET IN A, RETURN IS WITH A = NUMBER OF * THAT BIT AND B = -1. IF NO BITS ARE SET * IN A RETURN IS WITH A = B = -1. * * RETURN SUMMARY: * * A=-1,B=-1 . . . NO BITS SET IN A * A=M ,B=-1. . . .BIT M SET IN A * A=M ,B=N . . . .BIT M AND BIT N SET IN A * BCVT NOP LDB M16 STB CTR CCB STB B2E1 STB B2E2 LDB .BUF2 STB P1 CLB BC5 SLA,RSS JMP BC10 STB P1,I ISZ P1 BC10 RAR INB ISZ CTR JMP BC5 LDA B2E1 LDB B2E2 JMP BCVT,I SKP * ORG 2000B * * *** TEST SECTION *** * * T0 - DOES CLC I,C CLEAR CARD FLAG? * T0 EQU * CLA A=0 JSB SRO SEND TO SWITCH REGISTER CLC 0 T0.1 CLC CD1,C MASTER RESET SFC CD1 IS FLAG CLEAR? JMP T0.3 NO, REPORT ERROR CLA YES JSB LP? LOOP ON THIS TEST? JMP T0.1 YES ISZ TP NO, GO TO NEXT TEST NOP JMP TP,I EXIT T0.3 LIA SR ERROR ROUTINE IOR D1 SEND BIT 0 TO SW TO SIGNAL ERROR OTA SR JSB LP? LOOP FLAG SET? JMP T0.1 YES ,IGNORE ERROR AND LOOP ON TEST JSB BB CONSOLE? HLT 7B NO. HALT JMP T1 IF RUN PRESSED GO TO NEXT TEXT JSB CLR15 JSB BELL NO, RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC" JSB DCRLF LDA T0.1 LOAD UNSUCESSFUL INSTRUCTION JSB DO NOTIFY OPERATOR JSB MSG PRINT... DEF MS7.5 "DOESN'T CLEAR FLAG" JSB DCRLF JSB MSG PRINT... DEF MS7.6 "SEE TEST 0" JSB CRSC JMP ? EXIT SKP * * T1 DOES STF SET CARD FLAG? * T1 EQU * LDA U1 SIGNAL TEST 1 JSB SRO TO SWITCH REGISTER T1.1 CLC CD1,C MASTER RESET CLC 0 T1.2 STF CD1 SET FLAG SFS CD1 FLAG SET? JMP T1.5 NO, ERROR JSB LP? YES. LOOP? JMP T1.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR ROUTINE** * T1.5 LIA SR SIGNAL OPERATOR OF ERROR IOR D1 BY SETTING BIT 0 OTA SR IN THE SWITCH REGISTER JSB LP? LOOP? JMP T1.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T2 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC." JSB DCRLF LDA T1.2 LOAD OFFENDING INSTRUCTION JSB DO SEND IT OUT TO THE CONSOLE JSB MSG PRINT... DEF MS8.5 "DOESN'T"SET FLAG JSB DCRLF JSB MSG PRINT... DEF MS8 "SEE TEST 1." JSB CRSC JMP ? SKP * * T2 - DOES CLF CLEAR CARD FLAG? * T2 EQU * LDA U2 SIGNAL TEST 2 JSB SRO AT THE SWITCH REGISTER T2.1 CLC CD1,C MASTER RESET CLC 0 STF CD1 SET FLAG T2.3 CLF CD1 CLEAR FLAG SFC CD1 FLAG CLEAR? JMP T2.5 NO, JUMP ERROR JSB LP? LOOP? JMP T2.1 YES, GO BACK ISZ TP NO. GO TO JMP TP,I NEXT TEST * * **ERROR** * T2.5 LIA SR SET SR BIT 0 IOR D1 TO SIGNAL ERROR OTA SR JSB LP? LOOP? JMP T2.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T3 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC." JSB DCRLF LDA T2.3 LOAD OFFENDING INSTRUCTION JSB DO SEND IT TO CRT JSB MSG PRINT... DEF MS9.5 "DOESN'T CLEAR FLAG" JSB DCRLF JSB MSG PRINT... DEF MS9 "SEE TEST 2." JSB CRSC JMP ? SKP * * T3 - DOES FLAG CLEAR HOLD OFF INTERRUPTS? * T3 EQU * CLC 0 LDA U3 SIGNAL TEST 3 JSB SRO TO SWITCH REGISTER JSB STUFJ ARRANGE FOR INTERRUPT RETURN DEF T3.2 NOP T3.1 CLC CD1,C MASTER RESET CLF 0 TURN INTERRUPT SYSTEM OFF STC CD1 SET CONTROL STF 0 TURN INTERRUPT SYSTEM ON NOP ALLOW TIME NOP FOR INTERRUPT CLF 0 NO INTERRUPT. TURN INT. SYS. OFF JSB LP? LOOP? JMP T3.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR** * T3.2 LIA SR SIGNAL ERROR IOR D1 AT SR BY BIT 0 OTA SR JSB LP? LOOP? JMP T3.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T4 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS101 FLAG CLEAR DOESN'T HOLD OFF INTERRUPTS JSB CRSC JMP ? SKP * * T4 - DOES IEN LOW HOLD OFF INTERRUPTS? * T4 EQU * CLC 0 LDA U4 SIGNAL TEST 4 JSB SRO AT SR JSB STUFJ SET UP INTERRUPT RETURN DEF T4.2 AT T4.2 NOP T4.1 CLC CD1,C MASTER RESET CLF 0 TURN INT. SYS. OFF STF CD1 SET FLAG STC CD1 SET CONTROL NOP ALLOW TIME FOR INTERRUPT JSB LP? LOOP? JMP T4.1 YES, GO BACK ISZ TP NO, GO TO NEXT TEST JMP TP,I * * **ERROR** * T4.2 LIA SR SIGNAL ERROR IOR D1 AT SR BY BIT 0 OTA SR JSB LP? LOOP? JMP T4.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO JMP T5 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS10 "IEN DOESN'T HOLD OFF INTERRUPTS" JSB DCRLF JSB MSG PRINT... DEF MS103 "SEE TEST 4." JSB CRSC JMP ? SKP * * T5 - DOES BOARD TALK TO STRANGE SELECT CODES? * T5 EQU * CLC 0 LDA U5 SIGNAL TEST 5 JSB SRO AT SR T5.05 LDB BIT3 START WITH 10 LDA T5.6 GET SAMPLE INSTRUCTION AND B77 SAVE ONLY S.C. STA TMP8 T5.1 NOP CPB TMP8 SAME? JMP T5.5 SKIP IF PRESENT SC LDA T5.3 GET INSTRUCTION AND NB77 MASK OFF S.C. BITS IOR B ADD NEW S.C. STA T5.3 PUT INSTRUCTION BACK CLC CD1,C MASTER RESET STF CD1 SET FLAG T5.3 CLC 0,C EXCECUTE INSTRUCTION SFS CD1 FLAG STILL SET? JMP T5.7 NO. ERROR CPB B67 AT LAST S.C. YET? JMP T5.8 YES , EXIT T5.5 INB NO. BUMP B JMP T5.1 GO BACK T5.6 OTA CD1 * * FLAG CLEARS IN RESPONSE TO CLF TO WRONG SC * T5.7 LIA SR SET SR BIT 0 IOR D1 TO SIGNAL ERROR OTA SR JSB LP? LOOP? JMP T5.05 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T6 IF RUN PRESSED POINT TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS105 "FAULT IN LSC/MSC DECODE LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS12 "FLAG CLEARS IN RESPONSE TO " LDA T5.3 LOAD OFFENDING INSTRUCTION JSB DO DISPLAY THE INSTRUCTION JSB DCRLF JSB MSG PRINT... DEF MS106 "SEE TEST 5" JSB CRSC JMP ? T5.8 JSB LP? LOOP? JMP T5.05 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I SKP * * T6 - DOES CONTROL FF LOW HOLD OFF INTERRUPTS? * T6 EQU * CLC 0 LDA U6 SIGNAL TEST 6 JSB SRO AT SR JSB STUFJ ARRANGE INTERRUPT RETURN DEF T6.4 AT T6.4 NOP T6.1 CLC CD1,C MASTER RESET STF CD1 SET FLAG STF 0 TURN INT. SYS. ON NOP ALLOW TIME FOR INTERRUPTS NOP CLF 0 PASSED. TURN INT. SYS. OFF JSB LP? LOOP? JMP T6.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * CARD INTERRUPTS WITHOUT BEING ISSUED STC * T6.4 LIA SR SIGNAL ERROR AT SR IOR D1 BY BIT 0 OTA SR CLF 0 TURN INT. SYS. OFF JSB LP? LOOP? JMP T6.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T7 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS13 "CARD INTERUPTS WITHOUT BEING ISSUED STC." JSB DCRLF JSB MSG PRINT... DEF MS107 "SEE TEST 6." JSB CRSC JMP ? SKP * * T7 - CAN CARD INTERRUPT? * T7 EQU * CLC 0 LDA U7 SIGNAL TEST 7 JSB SRO AT SR T7.1 CLC CD1,C MASTER RESET JSB STUFJ ARRANGE INTERRUPT RETURN DEF T7.6 AT T7.6 LDA .T7.8 GET ADDRESS OF T7.8 STA 4 SAVE IT IN ADDRESS 4 LDA JMP4I GET JMP 4,I CLF 6B TURN OFF DMA (DMA ON OPENS PR CHAIN) CLF 7B STF CD1 SET FLAG STC CD1 SET CONTROL STF 0 TURN INT. SYS. ON NOP SHOULD INTERRUPT HERE * * CARD CAN'T INTERRUPT * LIA SR SIGNAL ERROR IOR D1 AT SR WITH BIT 0 OTA SR JSB LP? LOOP? JMP T7.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T8 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF DO A DOUBLE CR,LF JSB MSG PRINT... DEF MS14 "CARD CAN'T INTERRUPT" JSB DCRLF JSB MSG PRINT... DEF MS108 "SEE TEST 7." JSB CRSC JMP ? EXIT T7.6 JSB LP? LOOP? JMP T7.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST CLF 0 TURN OFF INT. SYS. JMP TP,I * * CARD INTERRUPTS THROUGH SC 0 * T7.8 LIA SR GET SR IOR D2 ADD A 2 OTA SR OUTPUT TO SR CLF 0 TURN INT. SYS OFF JSB LP? LOOP? JMP T7.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T8 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF DO A DOUBLE CR,LF JSB MSG PRINT... DEF MS90 CARD INTERRUPTS THROUGH SELECT CODE 0" JSB DCRLF JSB MSG PRINT... DEF MS108 "SEE TEST 7." JSB CRSC JMP ? EXIT SKP * * T8 - IS FIFO THERE? * T8 EQU * CLC 0 LDA U8 SIGNAL TEST 8 JSB SRO AT SR T8.1 CLC CD1,C MASTER RESET LDA D8 (OCT 10) P OTA CD1 MAKE CARD A TALKER CLC CD1,C * * NOTE: * * DATA IS PASSED BELOW IN PACKED MODE TO AVOID PUTTING THE * BOARD INTO AN OSCILLATORY MODE. OSCILLATIONS OCCUR ON ATN * AND THE DATA LINES INTO THE FIFO IF THE BOARD IS * CONFIGURED TO BE A TALKER BUT NOT A CONTROLLER IN * CHARGE AND BIT 8 IS OUTPUT IN UNPACKED MODE ALONG * WITH THE LOWER DATA BYTE. IN UNPACKED MODE BIT 8 * DRIVES ATNOUT. THE BOARD SENSES THE ATN LINE AND SHUTS OFF * AS A TALKER THINKING SOMEONE (THE CONTROLLER IN CHARGE) * IS SENDING ATN. WHEN THE BOARD IS NO LONGER A TALKER * ATN IS NO LONGER ASSERTED AND THE BOARD BECOMES A TALKER * AGAIN. IN UNPACKED MODE THE ATN LINE IS * DRIVEN FROM THE CONTROL REGISTER. * STC CD1 SWITCH TO DATA MODE LDA CHKRB OTA CD1 SEND A WORD TO THE FIFO CLC CD1 SWITCH TO CONTROL MODE LDA CW2 (OCT 10014) IRL,P,L OTA CD1 MAKE A LISTENER STC CD1 SWITCH TO DATA MODE SFS CD1 IS FLAG SET? JMP T8.3 NO, ERROR LIA CD1 YES, CHECK DATA CPA CHKRB JMP T81 OK,DONE XOR CHKRB JSB BCVT HOW MANY BITS CHANGED? CPB M1 JMP T81 ONLY 1, LET TEST 9 FIND IT JMP T8.5 MORE THAN 1, FLAG THE ERROR T81 JSB LP? YES, TEST PASSED. LOOP? JMP T8.1 YES, RETURN TO BEGINNING ISZ TP NO, GO ON TO NEXT TEST NOP JMP TP,I * * CARD FLAG DIDN'T SET WHEN SWITCHED TO LISTEN MODE * WITH DATA IN THE FIFO. * T8.3 NOP LIA SR IOR D1 OTA SR JSB LP? LOOP? JMP T8.1 YES, RETURN TO START JSB BB CONSOLE? HLT 7B NO. HALT JMP T9 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG NO, DISPLAY ERROR MESSAGE DEF MS80 "FAULT IN FIFO CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS39 "NO FLAG" JSB DCRLF JSB MSG PRINT... DEF MS81 "SEE TEST 8." JSB CRSC JMP ? * * DATA ERROR * T8.5 STA ADATA SAVE A LIA SR SIGNAL ERROR AT SR IOR D2 OTA SR JSB LP? LOOP? JMP T8.1 YES JSB BB CONSOLE? HLT 7B YES JMP T9 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS87 "BASIC FIFO ERROR" JSB DCRLF JSB MSG PRINT... DEF MS88 "125252 DROPPED INTO FIFO" LDA ADATA JSB DO JSB MSG PRINT... DEF MS89 "FOUND AT THE BOTTEM" JSB DCRLF JSB MSG PRINT... DEF MS81 "SEE TEST 8" JSB CRSC JMP ? SKP * * T9 - ARE ANY BITS STUCK IN THE CPU-FIFO-CPU DATA PATH? * * THE 10 WORDS BELOW ARE CHOSEN TO DETECT ANY STUCK BITS * IN A 16 BIT DATA PATH. THE ALGORITHM PERFORMED ON THE * RETURN DATA DETERMINES WHICH BITS ARE STUCK AND WHAT * THEY'RE STUCK TO (I.E., A 0 LEVEL, A 1 LEVEL, OR EACH * OTHER). * T9 EQU * CLC 0 LDA U9 SIGNAL T9 AT SR JSB SRO T9.1 CLC CD1,C MASTER RESET LDA D8 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE CLA OTA CD1 STORE 000000 CMA OTA CD1 STORE 111111 LDA B1E1 OTA CD1 STORE 125252 CMA OTA CD1 STORE -125252 LDA B1E2 OTA CD1 STORE 146314 CMA OTA CD1 STORE -146314 LDA B1E3 OTA CD1 STORE 170360 CMA OTA CD1 STORE -170360 LDA B1E4 OTA CD1 STORE 177400 CMA OTA CD1 STORE -177400 CLC CD1 SWITCH TO CONTROL MODE LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1 SWILTCH TO DATA MODE LIA CD1 READ WORD 1 SZA 0? JMP T941 NO, THERE'S A BIT STUCK HIGH LIA CD1 READ WORD 2 CMA SZA 111111? JMP T945 NO, THERE'S A BIT STUCK LOW LIA CD1 READ WORD 3 XOR B1E1 FIND ANY CHANGED BITS WITH XOR STA HOLDA SAVE LIA CD1 READ WORD 4 CMA XOR B1E1 FIND ANY CHANGED BITS WITH XOR IOR HOLDA MERGE WORD 3 AND WORD 4 CHANGES SZA ANY BITS CHANGED? JMP T950 YES, REPORT ERROR LIA CD1 XOR B1E2 STA HOLDA LIA CD1 -146314 CMA XOR B1E2 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER LIA CD1 170360 XOR B1E3 STA HOLDA LIA CD1 -170360 CMA XOR B1E3 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER LIA CD1 177400 XOR B1E4 STA HOLDA LIA CD1 -177400 CMA XOR B1E4 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER JSB LP? JMP T9.1 ISZ TP PATH IS CLEAN JSB BB CONSOLE? ISZ TP NO. HALT NOP JMP TP,I EXIT * * CPU-FIFO-CPU PATH HAS A BIT STUCK HIGH * T941 STA ADATA LIA SR IOR D1 OTA SR JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBER STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP T11 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS58 "BIT " LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS59 "STUCK HIGH." JSB DCRLF JSB MSG PRINT... DEF MS60 "SEE TEST 9" JSB CRSC JMP ? * * CPU-FIFO-CPU PATH HAS A BIT STUCK LOW * T945 STA ADATA LIA SR IOR D2 OTA SR JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBER STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP T11 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS58 "BIT " LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS62 "STUCK LOW." JSB DCRLF JSB MSG PRINT... DEF MS60 "SEE TEST 9." JSB CRSC JMP ? * * CPU-FIFO-CPU PATH HAS TWO BITS STUCK TOGETHER * T950 STA ADATA LIA SR IOR D3 OTA SR JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBERS DST HOLDA JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA JSB DD DISPLAY FIRST BIT NUMBER JSB MSG PRINT... DEF MS15 "AND " LDA HOLDB JSB DD DISPLAY SECOND BIT NUMBER JSB MSG PRINT... DEF MS16 " STUCK TOGETHER." JSB DCRLF JSB MSG PRINT... DEF MS17 "SEE TEST 9." JSB CRSC JMP ? SKP * * T10 - DOES FRONT PANEL "PRESET" CLEAR CONTROL * AND SET FLAG? * T10 EQU * LDA U10 SIGNAL TEST 10 JSB SRO AT SR T10.1 CLF 0 TURN INT. SYS. OFF CLC 0 CLC CD1,C MASTER RESET LDB BIT13 SR BIT 13 SET? JSB SWRC,I JMP T10.5 YES, SKIP TEST LDA CW1 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SET DATA MODE LDA CHARB OTA CD1 SEND OUT DATA STC CD1,C SET CONTROL, CLEAR FLAG LDB BIT14 JSB SWRC,I SKIP THIS TEST? JMP T10.5 YES! JSB BELL JSB MSG PRINT... DEF MS97 "PRESS HALT,PRESET,RUN WITHIN 10 SECONDS" LDA D10K PREPARE TIMER TO WAIT JSB TMRR,I SFS CD1 DID PRESET SET FLAG? JMP T10.2 NO, JUMP ERROR JSB STUFJ ARRANGE INTERRUPT RETURN DEF T10.3 STF 0 TURN INT. SYS. ON NOP ALLOW TIME FOR INTERRUPT NOP CLF 0 NO. TURN INT. SYS. OFF CLF CD1 ALREADY IN COMMAND MODE LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1 SET DATA MODE SFC CD1 CARD SHOULD SET FLAG CAUSE DATA JMP T10.4 IN FIFO AT CHANGE TO DATA MODE LIA CD1 SZA JMP T10.4 JMP T10.5 * * **ERROR** * * PRESET DID NOT CLEAR THE FIFO * T10.4 LIA SR NO. REPORT ERROR IOR D1 AT SR WITH BIT 0 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL JSB MSG NO. PRINT... DEF MS100 "PRESET DID NOT CLEAR FIFO" JSB CRSC JMP ? EXIT * * T10.5 JSB LP? LOOP? JMP T10.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR*** * * FLAG NOT SET BY PRESET * T10.2 CLF 0 TURN INT. SYS. OFF LIA SR SIGNAL ERROR AT SR IOR D2 WITH BIT 2 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS98 "FLAG NOT SET BY PRESET" JSB CRSC JMP ? * * **ERROR** * * CONTROL NOT CLEARED BY PRESET * T10.3 CLF 0 TURN INT. SYS. OFF LIA SR SIGNAL ERROR AT SR IOR D3 WITH BITS 0,1 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS99 "CONTROL NOT CLEARED BY PRESET" JSB CRSC JMP ? EXIT SKP * * T11 - IS STATUS CORRECT AFTER EACH OF THE CONTROL WORDS * IN THE CONTROL STATUS TABLE IS SENT? * T11 EQU * LDA SC GET ACTIVE S.C. CPA SC1 NOW TESTING DI #1? CLE YES, CLEAR EXTEND REGISTER LDA U11 SIGNAL TEST 11 AT SR JSB SRO NOP LDA CM5 * CLC CD1,C * OTA CD1 * CLEAR STC CD1 * FIFO CLA * OTA CD1 * LDA .CST GET POINTER TO CONTROL STATUS TABLE STA P1 MOVE TO P1 T11.1 ISZ P1 BUMP TO NEX T CONTROL WORD T11.3 LDA P1,I LOAD CONTROL WORD CPA M1 LAST ENTRY? JMP T11.6 YES, END OF TEST ISZ P1 BUMP TO STATUS STA CTRL SAVE NOP CLC CD1,C MR CLC 0 CRS TO CLEAR CONTROL REGISTER OTA CD1 SEND CONTROL WORD NOP LIA CD1 READ STATUS CPA P1,I AS EXPECTED? RSS YES, CONTINUE JMP T11.4 NO, ERROR. LDA D1 JSB TMRR,I * * NOTE: * * A 1 MS TIME DELAY IS INSERTED HERE BEFORE SENDING * THE NEXT CONTROL WORD TO GIVE THE IFC ONE-SHOT * TIME TO TERMINATE IF IT WAS SET BY THE PREVIOUS * CONTROL WORD (BIT 14 SET TURNS IT ON). * JMP T11.1 * * STATUS INCORRECT * T11.4 STA ADATA SAVE ACTUAL STATUS LIA SR SIGNAL ERROR IOR D1 AT SR OTA SR LDB P1,I GET EXPECTED STATUS STB EDATA SAVE IT NOP JSB LP? LOOP? RSS JMP T11.5 LDA .CST INA STA P1 JMP T11.3 T11.5 JSB BB CONSOLE? HLT 7B NO, HALT JMP T12 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS18 "FAULT IN CONTROL/STATUS LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS22 "STATUS INCORRECT AFTER " LDA CTRL JSB DO DISPLAY LAST CONTROL WORD SENT JSB MSG PRINT... DEF MS23 " SENT AS CONTROL WORD." JSB DCRLF LDA EDATA JSB DO DISPLAY EXPECTED STATUS JSB MSG PRINT... DEF MS19 " EXPECTED" JSB CRLF LDA ADATA JSB DO DISPLAY ACTUAL STATUS JSB MSG PRINT... DEF MS20 " RETURNED" JSB DCRLF JSB MSG PRINT... DEF MS68 "SEE TEST 11." JSB CRSC JMP ? T11.6 JSB LP? LOOP? JMP T11 YES ISZ TP JMP TP,I SKP * * T12 - WILL CARD TAKE A DMA OUT TRANSFER? * T12 EQU * LDA U12 SIGNAL TEST 12 AT SR JSB SRO STF 6B TURN OFF DMA CLC 0 T12.1 CLC CD1,C MASTER RESET CLC CD2,C LDA CW1 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE LDA SC CONFIGURE DMA TO TX TO CARD OTA 6 SEND DMA CW1 CLC 2 LDA .BUF1 OTA 2 SEND DMA CW2 STC 2 LDA M20 SEND 20 WORDS OTA 2 SEND DMA CW3 STC 6,C TURN ON DMA * * DMA SHOULD TAKE THE NEXT 20 CYCLES * NOP LIA 2 READ WORD COUNT CPA M0 WORD COUNT 0? RSS YES, ALL 20 WORDS TRANSFERED JMP T123 NO, REPORT ERRORR STF 6B STOP DMA CLC CD1 SWITCH TO CONTROL MODE LIA CD1 GET STATUS BACK FROM CARD CPA COMPT IS IT CORRECT? JMP T122 YES, GO ON STA STAT NO-REPORT ERROR JSB MSG PRINT... DEF MS44 "STATUS WRONG AFTER TRANSFER" JSB DCRLF LDA COMPT OUTPUT EXPECTED STATUS JSB DO JSB CRLF LDA STAT OUTPUT RECIEVED STATUS JSB DO JMP T1234 T122 JSB LP? ALL DATA OK. LOOP? JMP T12 YES CLC 6B TURN OFF DMA ISZ TP JMP TP,I * * WRONG RESIDUE AFTER TRANSFER * T123 STF 6 TERMINATE DMA LIA SR SIGNAL ERROR AT SR IOR D1 OTA SR JSB LP? LOOP? JMP T12.1 YES LIA 2 GET WORD COUNT JSB BB CONSOLE? HLT 7B NO, HALT JMP T13 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 CPA M20 -20? JMP T1235 DMA HUNG UP JSB MSG DEF MS56 "FAULT IN DMA CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS43 "WRONG RESIDUE." LIA 2 CMA,INA JSB DD DISPLAY RESIDUE T1234 JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? T1235 JSB MSG PRINT... DEF MS56 "FAULT IN DMA CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS66 "DMA HUNG UP WAITING FOR BOARD." JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? * * DMA OUTPUT TRANSFER ERROR * T124 STF 6 STA ADATA LIA SR IOR D2 OTA SR STA ADATA JSB LP? JMP T12.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP T13 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS45 "FAULT IN DMA OUTPUT TRANSFER." JSB DCRLF LDA P1,I JSB DO DISPLAY CORRECT DATA JSB MSG PRINT... DEF MS19 "EXPECTED" JSB DCRLF LDA ADATA JSB DO DISPLAY ACTUAL DATA JSB MSG PRINT... DEF MS42 "RETURNED" JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? SKP * * TEST 13 - WILL CARD TRANSFER IN VIA DMA? * T13 EQU * CLC 0 LDA U13 JSB SRO T13.1 STF 6B TERMINATE DMA FROM LAST TEST CLC CD1,C CLC CD2,C LDA D8 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE LDA M8 STA CTR LDB .BUF1 T132 LDA B,I OTA CD1 LOAD FIFO INB ISZ CTR JMP T132 LDA SC CONFIGURE FOR DMA IN OTA 6 CLC 2 LDA .BUF2 IOR BIT15 OTA 2 STC 2 LDA M8 OTA 2 CLC CD1 LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1,C SWITCH TO DATA MODE STC 6B,C START DMA * * NOTE: * * IF DMA IS STARTED BEFORE THE CARD IS PUT INTO DATA * MODE,STATUS IS READ INTO THE DMA BUFFER AS SOON AS * THE CARD IS MADE A LISTENER. * LIA 2 READ DMA WORD COUNT STA ADATA SZA 0? JMP T136 NO, BOARD HUNG UP LDB .BUF1 YES, CHECK DATA STB P1 LDB .BUF2 LDA M8 STA CTR T1320 LDA B,I CPA P1,I JMP T1321 STA ADATA JMP T137 T1321 INB ISZ P1 ISZ CTR JMP T1320 JSB LP? JMP T13 CLC 6B TURN OFF DMA ISZ TP JMP TP,I * * BOARD NOT GIVING DATA TO DMA * T136 LIA SR IOR D1 OTA SR JSB LP? JMP T13.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .T14,I IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS56 "FAULT IN DMA CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS67 "DMA HUNG UP" LDA ADATA JSB DD DISPLAY WORD COUNT JSB DCRLF JSB MSG PRINT... DEF MS65 "SEE TEST 13." JSB CRSC JMP ? * * DMA TRANSFER ERROR * T137 LIA SR IOR D2 OTA SR STA ADATA JSB LP? JMP T13.1 JSB BB CONSOLE HLT 7B NO. HALT JMP .T14,I IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS49 "FAULT IN DMA IN TRANSFER." JSB DCRLF LDA P1,I JSB DO JSB MSG PRINT... DEF MS19 "EXPECTED" JSB CRLF LDA ADATA JSB DO JSB MSG PRINT... DEF MS42 "READ" JSB DCRLF JSB MSG PRINT... DEF MS65 "SEE TEST 13." JSB CRSC JMP ? SKP * * TEST 14 - WILL CARD TRANSFER DATA ONTO BUS AND BACK? * ORG 4000B T14 EQU * CLC 0 LDA U14 JSB SRO T14.1 CLC CD1,C LDA D8 TALKER OTA CD1 CLC CD1,C STC CD1 DATA MODE LDB .BUF3 GET ADDRESS OF BUFFER LDA M5 STA CTR SET COUNTER TO -5 CLA OTA CD1,C STORE 000 OTA CD1,C STORE 000 AGAIN CMA AND B377 OTA CD1,C STORE 377 LDA B3E1 OTA CD1,C STORE 252 CMA OTA CD1,C STORE -252 LDA B3E2 OTA CD1,C STORE 314 CMA OTA CD1,C STORE -314 LDA B3E3 OTA CD1,C STORE 360 CMA OTA CD1,C STORE -360 LDA B77 OTA CD1,C STORE 077 CLC CD1 LDA CW3 OTA CD1 SWITCH TO TEST MODE * * THE OTA HERE UNAVOIDABLY DROPS ONE WORD (THE FIRST 0) FROM THE FIFO. * STC CD1 SWITCH TO DATA MODE NOP OTA CD1,C SHIFT 000 AROUND OTA CD1,C SHIFT 377 AROUND OTA CD1,C SHIFT 252 AROUND OTA CD1,C SHIFT -252 AROUND OTA CD1,C SHIFT 314 AROUND OTA CD1,C SHIFT -314 AROUND OTA CD1,C SHIFT 360 AROUND OTA CD1,C SHIFT -360 AROUND * * THE BOTTEM WORD IN THE FIFO SHOULD NOW BE 77 * * NEED TO READ THE ENTIRE STACK HERE AND SAVE * * LIA CD1 THROW OUT THE 0 NOP LIA CD1 AND B377 CPA B77 RSS JMP T143 OTA'S DIDN'T DROP DATA OUT OF FIFO LIA CD1 AND B377 * * THIS WORD SHOULD BE THE FIRST WORD SHIFTED AROUND, I.E., 0. * CPA B77 JMP T145 ERROR, NOTHING ABOVE 77 SZA DID 0 MAKE THE TRIP? JMP T146 NO, THERE'S A BIT STUCK HIGH LIA CD1 CMA AND B377 SZA DID 377 MAKE THE TRIP? JMP T147 NO, THERE'S A BIT STUCK LOW LIA CD1 CHECK FOR STUCK BITS AND B377 XOR B3E1 STA HOLDA LIA CD1 CMA AND B377 XOR B3E1 IOR HOLDA SZA JMP T148 FOUND SOME LIA CD1 AND B377 XOR B3E2 STA HOLDA LIA CD1 CMA AND B377 XOR B3E2 IOR HOLDA SZA JMP T148 FOUND SOME LIA CD1 AND B377 XOR B3E3 STA HOLDA LIA CD1 CMA AND B377 XOR B3E3 IOR HOLDA SZA JMP T148 FOUND SOME JSB LP? JMP T14 ISZ TP PATH IS CLEAN JMP TP,I EXIT * * OTA'S DIDN'T DROP DATA OUT OF FIFO * T143 STA ADATA LIA SR IOR D1 OTA SR JSB LP? JMP T14.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS26 "FAULT IN TX HANDSHAKE LOGIC" JSB DCRLF * * NEED TO DUMP ENTIRE STACK HERE * LDA ADATA JSB DO JSB MSG PRINT... DEF MS83 " WAS ON BOTTEM OF STACK..." NOP * * TRY U62-3 AFTER YOU CHANGE TO DUMP STACK * JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * NOTHING LOADED BACK ON TOP OF 77 * T145 LIA SR IOR D2 OTA SR JSB LP? JMP T14.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS27 "FAULT IN RX HANDSHAKE LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS85 "OTA'S DIDN'T RETURN DATA TO STACK." JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS A BIT STUCK HIGH * T146 STA ADATA LIA SR IOR D3 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBER INA LSB=1 (NOT 0 AS IN CPU) STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 CPB M1 RSS JMP T143 TOO MANY BITS FOR DATA ERROR JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS120 "OUTBUS,INBUS BIT" LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS59 "STUCK HIGH." JSB MSG DEF MS128 JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS A BIT STUCK LOW * T147 STA ADATA LIA SR IOR D4 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBER INA LSB=1 (NOT 0 AS IN CPU) STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX PATH" JSB DCRLF JSB MSG PRINT... DEF MS120 "OUTBUS,INBUS BIT" LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS62 "STUCK LOW." JSB MSG DEF MS127 JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS TWO BITS STUCK TOGETHER * T148 STA ADATA LIA SR IOR D5 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBERS INA INB LSB=1 (NOT 0 AS IN CPU) STA HOLDA STB HOLDB JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA JSB DD DISPLAY FIRST BIT NUMBER JSB MSG PRINT... DEF MS15 " AND " LDA HOLDB JSB DD DISPLAY SECOND BIT NUMBER JSB MSG PRINT... DEF MS16 " STUCK TOGETHER." JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? JSB MSG PRINT... DEF MS28 FAULT IN TX-BUS-RX DATA PATH JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA JSB DD JSB MSG PRINT... DEF MS15 "AND" LDA HOLDB JSB DD JSB MSG PRINT... DEF MS16 "STUCK TOGETHER" JSB CRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? SKP * * * T15 - HPIB SUB-SYSTEM TESTS * *(REQUIRES TWO DI CARDS, BOTH WITH THE SYSTEM CONTROLER * SWITCH SET AND CONNECTED BY AN HP-IB CABLE) * * * T15 EQU * CLC 0 LDA U15 JSB SRO SIGNAL TEST 15 CLA STA TMP6 RSS SKIP OVER SAMPLE INSTRUCTION T1502 OTA CD1 SAMPLE INSTRUCTION T1503 LDA T1502 GET SAMPLE INSTRUCTION AND B77 MASK FOR S.C. STA TSC SAVE AS TALKER S.C. CPA SC1 IS IT DI #1? JMP T151 YES, JUMP LDA SC1 NO. GET DI #1 S.C. STA LSC SAVE AS LISTENERS S.C. JMP T154 T151 LDA SC2 GET S.C. OF DI #2 STA LSC SAVE AS LISTENER S.C. T154 LDA TSC CPA SC1 JMP T1504 LDA TL1 MAKE DI #1 BUS ADDRESS THE LISTENERS ADDRESS STA LADD JMP T1506 T1504 LDA TL2 MAKE DI #2 BUS ADDRESS THE LISTENERS ADDRESS STA LADD T1506 LDA LADD AND D7 USE LSB OCTAL DIGIT FOR PP RESPONSE STA PLAD * * TEST IFC,REN LINES * CLC 0 CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA CM6 CONFIGURE LISTENER OTA CD2 STC CD2 SET DATA MODE LDA CM1 IFC,REN OTA CD1 CONFIGURE TALKER STC CD1 SET DATA MODE LDA D1 WAIT 1 MS JSB TMRR,I CLC CD2 SET STATUS MODE LIA CD2 GET STATUS FROM LISTENER STA STAC CPA CM8 OK? JMP T1510 YES, JUMP * * ERROR - BAD STATUS RETURNED * LIA SR SIGNAL ERROR AT SR IOR D1 OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I IF RUN PRESSED GO TO "?" JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS110 "BAD STATUS RETURNED" LDA CM8 JSB DO OUTPUT EXPECTED STATUS JSB MSG PRINT... DEF MS118 "EXPECTED" LDA STAC JSB DO OUTPUT ACTUAL STATUS JSB MSG PRINT... DEF MS111 "RECIEVED" T1511 JSB MSG PRINT... DEF MS112 "THE DI IN S.C." LDA TSC JSB DO OUTPUT S.C. JSB MSG PRINT... DEF MS113 "IS THE TALKER" JSB MSG PRINT... DEF MS112 "THE DI IN S.C." LDA LSC JSB DO OUTPUT S.C. JSB MSG PRINT... DEF MS114 "IS THE LISTENER" JMP ? EXIT * * CHECK SRQ * CLC 0 T1510 CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA CM2 SRQ,CIC OTA CD1 CONFIGURE TALKER STC CD1 SET DATA MODE LDA CM3 SRQ OTA CD2 CONFIGURE LISTENER STC CD2 SET DATA MODE LDA D1 WAIT 1 MS JSB TMRR,I NOP SFC CD1 DID LISTENERS SQR SET TALKERS FLAG ? JMP T1512 YES, JUMP * * ERROR - SRQ DIDN'T SET TALKERS FLAG * LIA SR SIGNAL ERROR AT SR IOR D2 OTA SR JSB LP? LOOP? JMP T1503 YES , JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS115 "SRQ DIDN'T SET TALKERS FLAG" JMP T1511 GO TELL S.C.'S * * CHECK PARALLEL POLL * CLC 0 T1512 CLF 0 TURN INT. SYS. OFF CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA PPE TELL LISTENER TO ENABLE PP OTA CD2 STC CD2 SET DATA MODE LDA CM4 TELL TALKER TO DO PP OTA CD1 STC CD1 SET DATA MODE LDA D10 WAIT 10 MS. JSB TMRR,I SFC CD1 DID RESPONSE COME ? JMP T1513 YES, JUMP * * ERROR - TIMEOUT WITHOUT PARALLEL POLL RESPONSE * LIA SR IOR D3 SIGNAL ERROR AT SR OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE HLT 7B JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS1.5 "TIME OUT WAITING FOR PP RESPONSE" JMP T1511 TELL S.C.'S * * PARALLEL POLL RETURNED - CHECK ADDRESS * T1513 LIA CD1 GET PP RESPONSE STA TMP3 AND B377 MASK FOR LOWER BYTE JSB BCVT CONVERT TO ONE OCTAL DIGIT STA TMP4 CMA,INA SUBTRACT FROM A CONSTANT OF 7 ADA D7 STA TMP5 SAVE RESULT (WHY 7?..BECAUSE IT WORKS!) CPA PLAD CORRECT? JMP T15AA YES * * ERROR - BAD PARALLEL POLL RESPONSE * NOTE: A RECIEVED 10 MESSAGE ON THE CONSOLE MEANS THAT * AN ILLEGAL PP RESPONSE OFF ALL 0'S WAS RETURNED * LIA SR IOR D4 SIGNAL ERROR AT SR OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS116 "BAD PP RESPONSE" LDA PLAD GET EXPECTED RESPONSE JSB DO OUTPUT IT JSB MSG PRINT... DEF MS118 "EXPECTED" LDA TMP5 GET ACTUAL RESPONSE JSB DO OUTPUT IT JSB MSG PRINT... DEF MS111 "RECIEVED" JMP T1511 GO TELL S.C.'S * * DATA TESTS * * * BUS TRANSFER IN PACKED MODE * T15AA CLC 0 CLEAR ALL SC'S CLF 0 STF 6B STOP DMA STF 7B CLC CD1,C MR CLC CD2,C * * SET UP DMA CHANNEL 1 TO OUTPUT A DOUBLE PACKED * BUFFER OF ASCII 0-9,A,Z PACKING EACH WORD WITH * THE SAME CHARACTER TWO TIMES * LDA TSC GET TALKERS SC OTA 6B CLC 2B LDA .B6 OTA 2B STC 2B LDA MD36 OTA 2B * * DMA CHANNEL 2 (INPUT) SET UP * LDA LSC OTA 7B CLC 3B LDA .B4 IOR BIT15 OTA 3B STC 3B LDA MD36 OTA 3B * * SET UP TALKER,LISTENER FOR TRANSFER * LDA CM7 OTA CD2 CLC CD2,C STC CD2 * LDA CM9 OTA CD1 CLC CD1,C STC CD1 * STC 7B,C STC 6B,C * LDA D10 JSB TMRR,I * LIA 2B SAVE WORD COUNT STA TMP7 LIA 3B STA TMP8 SZA JMP T15A JMP T15B * * ERROR-DMA STILL NOT COMPLETE AT END OF TIMER * T15A LIA SR IOR D7 OTA SR JSB LP? JMP T1503 JSB BB HLT 7B JMP .?,I JSB CLR15 JSB BELL JSB MSG DEF MS119 JSB MSG DEF MS121 LDA TMP8 JSB DD JSB CRLF JSB MSG DEF MS122 LDA TMP7 JSB DD JSB CRLF CLC CD1 CLC CD2 LIA CD1 STA TMP9 LIA CD2 STA TMP10 JSB MSG DEF MS124 JSB CRLF LDA TSC JSB DO JSB MSG DEF MS125 LDA TMP9 JSB DO JSB CRLF LDA LSC JSB DO JSB MSG DEF MS125 LDA TMP10 JSB DO JSB CRLF JSB MSG DEF MS133 JSB CRLF JMP T1511 * * TRANSFER DONE- COMPARE THE TWO BUFFERS * T15B LDA .B4 STA P1 LDA .B6 STA P2 LDA D1 STA P3 T15C LDA P1,I STA TMP1 LDA P2,I STA TMP2 CPA TMP1 JMP T15D * * ERROR- TWO BUFFERS DON'T COMPARE * LIA SR IOR D8 OTA SR JSB LP? JMP T1503 JSB BB HLT 7B JMP .?,I JSB CLR15 JSB BELL JSB MSG DEF MS117 LDA P3 JSB DO JSB CRLF LDA TMP2 JSB DO JSB MSG DEF MS118 LDA TMP1 JSB DO JSB MSG DEF MS111 JSB MSG DEF MS133 JSB CRLF JMP T1511 * T15D ISZ P1 ISZ P2 ISZ P3 LDA P3 CPA D36 RSS JMP T15C T1514 CLC 0 CLEAR ALL S.C.'S CONTROL FF'S CLF 0 STF 6B STOP DMA STF 7B CLC CD1,C MASTER RESET CLC CD2,C * * SET UP DMA CHANNEL 1 TO OUTPUT BUFFER * OF ASCII 0-9,A-Z * LDA TSC GET TALKER S.C. OTA 6B OUTPUT DMA WORD 1 CLC 2B LDA .B5 GET BUFFER ADDRESS OTA 2B OUTPUT DMA WORD 2 STC 2B LDA MD36 GET WORD COUNT (DEC -36) OTA 2B OUTPUT DMA WORD 3 * * SET UP DMA CHANNEL 2 TO INPUT TEST BUFFER * INTO A TEMPORARY STORAGE SPACE * LDA LSC GET LISTENERS S.C. OTA 7B OUTPUT DMA WORD 1 CLC 3B LDA .B4 GET BUFFER ADDRESS IOR BIT15 ADD BIT 15 (DMA INPUT) OTA 3B OUTPUT DMA WORD 2 STC 3B LDA MD36 GET WORD COUNT (DEC -36) OTA 3B OUTPUT DMA WORD 3 * * SET TALKER,LISTENER FOR TRANSFER * LDA CM6 (OCT 4) LISTEN OTA CD2 CLC CD2,C MR STC CD2 SET DATA MODE LDA CM5 (OCT 3) T,CIC OTA CD1 CLC CD1,C MR STC CD1 SET DATA MODE STC 7B,C ACTIVATE DMA INPUT STC 6B,C " " OUTPUT LDA D10 WAIT 10 MS. JSB TMRR,I LIA 2B SAVE WORD COUNTS STA TMP7 LIA 3B STA TMP8 SZA 0? JMP T1515 NO, TOOK TO LONG JMP T15.7 YES * * ERROR - DMA STILL NOT COMPLETE AT END OF TIMER * T1515 LIA SR SIGNAL ERROR AT SR IOR D5 OTA SR JSB LP? LOOP? JMP T1503 YES ,JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS119 "TIME OUT WAITING FOR DMA TO COMPLETE" JSB MSG PRINT... DEF MS121 "INPUT DMA WORD COUNT = " LDA TMP8 JSB DD PRINT WORD COUNT JSB CRLF JSB MSG PRINT... DEF MS122 "OUTPUT DMA CH1 WORD COUNT = " LDA TMP7 JSB DD PRINT WORD COUNT JSB CRLF CLC CD1 SET STATUS MODE CLC CD2 LIA CD1 READ STATUS STA TMP9 LIA CD2 READ STATUS STA TMP10 JSB MSG PRINT... DEF MS124 "SELECT CODE....STATUS = " JSB CRLF LDA TSC JSB DO PRINT TALKERS SC JSB MSG PRINT... DEF MS125 "...." LDA TMP9 JSB DO PRINT TALKERS STATUS JSB CRLF LDA LSC JSB DO PRINT LISTENERS SC JSB MSG PRINT... DEF MS125 LDA TMP10 JSB DO PRINT LISTENERS STATUS JSB CRLF JMP T1511 EXIT * * TRANSFER DONE- COMPARE TWO BUFFERS * T15.7 LDA .B4 ADDRESS OF RECIEVED BUFFER STA P1 LDA .B5 ADDRESS OF EXPECTED BUFFER STA P2 LDA D1 SET COMPARE # TO 1 STA P3 T1517 LDA P1,I GET 1ST BUFFER LOCATION AND B377 SAVE LOWER BYTE STA TMP1 STORE AWAY LDA P2,I GET 1ST BUFFER LOCATION AND B377 SAVE LOWER BYTE STA TMP2 STORE AWAY CPA TMP1 ARE THEY THE SAME? JMP T1518 YES, GO AROUND * * ERROR - BUFFERS DON'T COMPARE * LIA SR SIGNAL ERROR AT SR IOR D6 OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS117 "BUFFERS DIDN'T COMPARE" LDA P3 SHOW BYTE # JSB DO ON CONSOLE JSB CRLF LDA TMP2 JSB DO OUTPUT NUMBER JSB MSG PRINT... DEF MS118 "EXPECTED" LDA TMP1 JSB DO OUTPUT NUMBER JSB MSG PRINT... DEF MS111 "RECIEVED" JMP T1511 GO TELL S.C.'S T1518 ISZ P1 COMPARE OK! LOOK AT NEXT BYTE ISZ P2 ISZ P3 LDA P3 CPA D36 DONE ? RSS YES, SKIP JMP T1517 NO. GO BACK LDA TMP6 INA STA TMP6 LDA TSC SEE TABLE BELOW CPA SC1 RSS YES, SKIP JMP T1524 NO. CLEAN UP AND PREPARE TO EXIT LDA TMP6 CPA D1 JMP T1520 JMP T1521 T1520 JSB INTIO CHANGE S.C.'S JMP T1503 GO DO TEST AGAIN (NEW TALKER,LISTENER) T1521 NOP JSB LP? LOOP? JMP T1503 YES, GO BACK LDB BIT15 SR BIT 15 SET? JSB SWRC,I RSS YES, LOOP JMP T1522 NO, GO ON JSB BB CONSOLE? NOP JMP T1525 NO JMP T1523 YES T1522 JSB BB CONSOLE? NOP JMP .HLT YES T1523 LDB BIT13 NO. SR BIT 13 SET? JSB SWRC,I JMP T1525 YES, SUPPRESS PRINT OUT JSB BELL RING BELL JSB BELL " JSB MSG PRINT... DEF MS126 "T15 PASSED !!" JSB CRLF DO A CRLF T1525 ISZ TP NO, GO TO NEXT TEST JMP TP,I T1524 LDA TMP6 CPA D1 JMP T1520 JMP T1521 * * * TSC = SC1 IF : * * 1). 1ST PASS ON DI #1 FORCE T15 * 2). 2ND PASS ON NORMAL TEST PROGRESSION * * TSC = SC2 IF : * * 1). 1ST PASS ON NORMAL TEST PROGRESSION * 2). 2ND PASS ON DI #1 FORCE T15 * * .B6 DEF B6E1 B6E1 ASC 18,00112233445566778899AABBCCDDEEFFGGHH ASC 18,IIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ B6E2 DEF * SKP ************************** ************************** ****OCTAL****ASCII********(CONVERSION CHART) * * 60 0 * 61 1 * 62 2 * 63 3 * 64 4 * 65 5 * 66 6 * 67 7 * 70 8 * 71 9 * * 101 A * 102 B * 103 C * 104 D * 105 E * 106 F * 107 G * 110 H * 111 I * 112 J * 113 K * 114 L * 115 M * 116 N * 117 O * 120 P * 121 Q * 122 R * 123 S * 124 T * 125 U * 126 V * 127 W * 130 X * 131 Y * 132 Z * * ************************** ************************** ************************** SKP * * START - STARTUP ROUTINE. ENTERED FROM CONFIGURATOR THROUGH 100,I. * START NOP CLA A=0 STA TL1 SET BUS ADDRESS #1 TO 0 STA TL2 SET BUS ADDRESS #2 TO 0 LDA TRAPI CLC 3B LDB B3 GET FIRST TRAP CELL LOCATION. ST0 STA B,I PUT A HALT IN THE TRAP CELL. CPB B77 STORED LAST TRAP CELL? JMP ST0.0 YES, GO TO TESTING. INB NO, UPDATE TRAP CELL POINTER. INA JMP ST0 GO STORE THE NEXT TRAP CELL ST0.0 LDA SC1 GET FIRST SC CPA B77 FIRST EXECUTION SINCE LOADING OF PROGRAM ? JMP ST10 YES, GO AROUND LDA SC1 NO. STA TMP1 LDA SC2 SAVE OLD SC1,SC2 STA TMP2 JMP ST0.3 SKIP SAMPLE INSTRUCTION * * ST0.1 THROUGH ST10 CHECKS TO SEE IF THE PROGRAM IS BEING * EXECUTED FOR THE FIRST TIME. IF YES, IT GOES AROUND. IF NO, * IT DETERMINES WHICH OF THE FOUR MODES THE CODE WAS * PRE-CONFIGURED FOR AND THEN RE-INITIALIZES THE CODE AS IT * WOULD BE IF THE CODE WAS NEWLY LOADED. IF SC1 AND SC2 WERE * FORCED TO THE SAME SELECT CODE ON A PRIOR EXECUTION, THE * PROGRAM MUST BE RELOADED. * ST0.1 OTA CD1 SAMPLE INSTRUCTION OTA CD2 " " ST0.3 LDA ST0.1 GET SAMPLE INSTRUCTION AND B77 SAVE SC CPA TMP1 IS CD1 SC1 ? JMP ST0.4 YES, JUMP LDA B52 NO STA TMP3 MAKE TMP3 = 52B LDA B51 STA TMP4 MAKE TMP4 = 51B JMP ST0.6 GO AROUND ST0.4 LDA B51 STA TMP3 MAKE TMP3 = 51B LDA B52 STA TMP4 MAKE TMP4 = 52B ST0.6 LDB .CDE GET ADDRESS OF BEGINNING OF CODE STB P1 SAVE IT ST0.5 LDA P1,I LOAD FIRST WORD OF CODE AND IOMSK MASK FOR I,O INSTRUCTIONS CPA IOINS I,O ? RSS YES, SKIP JMP ST14 NO, LEAVE THIS WORD ALONE LDA P1,I GET WORD AGAIN AND B77 SAVE ONLY SC LDB A PUT SC IN B (DEFAULT IS ORIGINAL SC) CPA B52 52 ? JMP ST14 YES, LEAVE THIS WORD ALONE CPA SC1 SC1 ? LDB TMP3 YES , MAKE TMP3 NEW SC CPA SC2 SC2 ? LDB TMP4 YES, MAKE TMP4 NEW SC LDA P1,I GET WORD AGAIN AND NB77 STRIP OFF OLD SC IOR B ADD NEW ONE STA P1,I PUT THE WORD BACK ST14 ISZ P1 BUMP LOCATION POINTER LDB P1 CPB .ECDE AT END OF CODE YET ? JMP ST10 YES, GO ON JMP ST0.5 NO, GO BACK ST10 NOP JSB BB CONSOLE? NOP NO JMP ST55 LDB BIT13 SR BIT 13 ON? JSB SWRC,I JMP ST149 YES, SUPPRESS OPENING MESSAGE JSB MSG PRINT.. DEF MS2 "12784 DIAGNOSTIC" ST149 JSB FCDS FIND THE DI CARDS AND THEIR SELECT CODES ST15 JSB MSG PRINT... DEF MS29 "IS THE FIRST CARD IN SELECT CODE " LDA SC1 LOAD THE S.C. WHERE IT WAS FOUND JSB DO PRINT THE NUMBER JSB MSG PRINT.. DEF MS35 "? " JSB MSG DEF MS291 JSB CON GET CONSOLE INPUT JMP ST20 # INPUT JMP ST21 LETTER INPUT ST18 JSB MSG ? INPUT DEF MS32 PRINT.. "ENTER S.C." JSB DCRLF JMP ST15 GO ASK AGAIN ST20 STA SC1 SCI IS THE S.C. OF DI #1 ST21 CPA CHARN DID OPERATOR ENTER A "NO"? JMP ST18 YES, JUMP JSB CRLF NO ST22 JSB MSG PRINT.. DEF MS30 "BUS ADDRESS" JSB CON GET CONSOLE INPUT JMP ST25 # ENTERED JSB GTMAD BAD INPUT JSB CRLF ? ENTERED JSB MSG PRINT... DEF MS33 "EXPLAIN BUS ADDRESS" JSB DCRLF JMP ST22 ST25 STA TMP13 ADA MO10 SSA JMP ST251 JSB GTMAD JSB DCRLF JMP ST22 ST251 LDA TMP13 STA TL1 JSB CRLF LDA SC2 WHERE FCDS FOUND DI #2 CPA B77 WAS VALID S.C. FOUND? JMP ST265 NO ST26 JSB MSG YES...PRINT.. DEF MS31 "IS SECOND CARD IN SELECT CODE " LDA SC2 GET # AGAIN JSB DO PRINT IT OUT JSB MSG PRINT... DEF MS35 "? " JSB MSG DEF MS311 JSB CON GET OPERATOR INPUT JMP ST30 # INPUT JMP ST262 LETTER INPUT ST261 JSB MSG PRINT... DEF MS34 "NEED TWO CARDS" JSB DCRLF JMP ST26 ST262 CPA CHARN N? JMP ST261 YES JMP ST45 ST265 JSB MSG PRINT... DEF MS55 "NO SECOND CARD?" JSB CON GET OPERATOR INPUT JMP ST30 # INPUT JMP ST51 LETTER INPUT JSB CRLF ? INPUT JSB MSG PRINT... DEF MS34 "NEED TWO CARDS" JSB DCRLF JMP ST265 ST30 STA SC2 SC2 IS S.C. OF DI #2 CPA B77 JMP ST51 CPA SC1 RSS JMP ST31 JSB GTMAD PRINT "BAD INPUT" JMP ST149 ST31 JSB CRLF ST45 JSB CRLF JSB MSG PRINT... DEF MS30 "BUS ADDRESS" JSB CON GET OPERATOR INPUT JMP ST50 # INPUT JSB GTMAD BAD INPUT JSB CRLF ? INPUT JSB MSG PRINT... DEF MS33 "EXPLAIN BUS ADDRESS" JSB DCRLF JMP ST45 ST50 STA TMP13 ADA MO10 SSA JMP ST501 JSB GTMAD JMP ST45 ST501 LDA TMP13 STA TL2 SAVE BUS ADDRESS OF DI #2 ST51 JSB INTIO * * DETERMINE IF MACHINE IS MX OR E * LDB D1 B=1 LDA CPTO A=COMPUTER TYPE AND MX.E IS THIS A 21MX OR 21MX-E ? SSA,RSS SKIP IF ONE OF THE TWO JMP ST53 NEITHER ONE! ,JUMP AND EMSK SZA MX OR E? JMP ST52 E ! CLA MX ! STA EFLG *** EFLG = JMP ST54 *** 0 FOR MX ST52 LDA D1 *** 1 FOR MX-E STA EFLG *** -1 FOR 2114A TO 2100S JMP ST54 ST53 LDA M1 STA EFLG ST54 LDA SC1 STA SC JSB BB CONSOLE? NOP NO JMP ? JSB CRLF JSB CRLF LDB BIT13 JSB SWRC,I JMP ? JSB MSG DISPLAY PROGRAM HEADER DEF MS38 JSB DCRLF JSB MSG DEF MS37 DISPLAY OPTIONS JMP ? * * NON - CONSOLE MODE * ST55 NOP HLT 1B ENTER DI #1 SC, PRESS PRESET, RUN LIA SR AND B77 STA SC1 HLT 2B ENTER DI #1 BUS ADDRESS, PRESS PRESET, RUN LIA SR AND B77 STA TL1 ST551 HLT 3B ENTER DI #2 SC OR "0", PRESS PRESET,RUN LIA SR AND B77 CPA SC1 JMP ST551 SZA JMP ST56 LDA B77 STA SC2 STA TL2 HLT 5B ENTER PROGRAM OPTIONS, PRESS PRESET,RUN JMP ST51 ST56 STA SC2 HLT 4B ENTER DI #2 BUS ADDRESS, PRESS PRESET,RUN LIA SR AND B77 STA TL2 HLT 5B ENTER PROGRAM OPTONS, PRESS PRESET,RUN JMP ST51 ECDE EQU * SKP * *** MESSAGES *** * MS2 OCT 6412 OCT 6412 OCT 6412 OCT 6412 ASC 25, *** HPIB 12821A DIAGNOSTIC *** OCT 6412 OCT 6412 OCT 6412 ASC 10,INSTRUCTIONS:_ OCT 6412 OCT 6412 ASC 25, 1. ENTER ? WHEN YOU NEED MORE INFORMATION._ OCT 6412 OCT 6412 ASC 27, 2. INDICATE OCTAL VALUES BY A FINAL B (E.G. 13B). OCT 6412 OCT 6412 ASC 27, 3. SET SR BIT 15 ON TO LOOP ON DIAGNOSTIC, OCT 6412 ASC 27, TOGGLE ON,OFF TO BREAK OUT OF A SINGLE TEST OCT 6412 ASC 27, LOOP (CONVERSATIONAL-MODE). OCT 6412 OCT 6412 ASC 27, 4. SET SR BIT 14 TO SUPPRESS PRESET TEST OCT 6412 OCT 6412 ASC 27, 5. SET SR BIT 13 T0 PRINT ONLY ERROR MESSAGES OCT 6412 ASC 27, (EXCEPT CONFIGURATION MESSAGES). OCT 6412 OCT 6412 ASC 27, 6. SET SR BIT 12 TO DELAY 1 SECOND BETWEEN TESTS OCT 6412 OCT 6412 ASC 1,$ MS7 ASC 12,FAULT IN FLAG LOGIC:$ MS7.5 ASC 12, DOESN'T CLEAR FLAG.$ MS8 ASC 09, SEE TEST 1.$ MS8.5 ASC 12, DOESN'T SET THE FLAG. $ MS7.6 ASC 09, SEE TEST 0.$ MS9 ASC 09, SEE TEST 2.$ MS9.5 ASC 12, DOESN'T CLEAR THE FLAG$ MS10 ASC 20, IEN DOESN'T HOLD OFF INTERRUPTS$ MS102 ASC 18,FAULT IN INTERRUPT CONTROL LOGIC:$ MS103 ASC 10, SEE TEST 4.$ MS105 ASC 17,FAULT IN LSC,MSC DECODE LOGIC:$ MS106 ASC 10, SEE TEST 5.$ MS107 ASC 10, SEE TEST 6.$ MS108 ASC 10, SEE TEST 7.$ MS11 ASC 08, BITS $ MS12 ASC 18, FLAG CLEARS IN RESPONSE TO $ MS13 ASC 25, CARD INTERRUPTS WITHOUT BEING ISSUED STC.$ MS14 ASC 14, CARD CAN'T INTERRUPT $ MS15 ASC 3, AND $ MS16 ASC 10, STUCK TOGETHER.$ MS17 ASC 9, SEE TEST 9.$ MS18 ASC 18,FAULT IN CONTROL,STATUS LOGIC:$ MS19 ASC 06, EXPECTED $ MS20 ASC 06, RETURNED $ MS22 ASC 19, CARD STATUS INCORRECT AFTER $ MS23 ASC 13, SENT AS CONTROL WORD. $ MS26 ASC 16,FAULT IN TX HANDSHAKE LOGIC: $ MS27 ASC 16,FAULT IN RX HANDSHAKE LOGIC:$ MS28 ASC 16,FAULT IN TX-BUS-RX DATA PATH:$ MS29 ASC 20,IS THE FIRST CARD IN SELECT CODE $ MS291 OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,OTHERWISE, INPUT THE CORRECT SELECT CODE.. $ MS30 ASC 28,INPUT THE LAST OCTAL DIGIT OF THE BUS OCT 6412 ASC 28,ADDRESS (0-7 DERIVED FROM S1-S3) ... $ MS31 ASC 19,IS THE SECOND CARD IN SELECT CODE $ MS311 OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,IF NO SECOND CARD, INPUT 77B OCT 6412 ASC 28,IF DIAGNOSTIC GUESSED INCORRECTLY AND THERE IS OCT 6412 ASC 28,A SECOND CARD, ENTER CORRECT SELECT CODE... $ MS32 OCT 6412 ASC 22,IF PROGRAM GUESSED CORRECTLY ENTER RETURN. OCT 6412 ASC 20,IF NOT, ENTER THE CORRECT SELECT CODE.$ MS33 OCT 6412 ASC 28,THE BUS ADDRESS IS DETERMINED BY SWITCHES S1-S5 OCT 6412 ASC 28,OF U13 (OPEN=1, S1=LSB)..HOWEVER, IN RESPONSE TO OCT 6412 ASC 28,THE QUESTION BELOW, INPUT ONLY THE LAST OCTAL OCT 6412 ASC 28,DIGIT CORRESPONDING TO S1-S3. (I.E. 0-7) $ MS34 ASC 22,YOU NEED TWO CARDS TO RUN THE HIGH SPEED _ OCT 6412 ASC 05,BUS TEST.$ MS35 ASC 2,? $ MS36 ASC 9,...BAD INPUT...$ MS37 OCT 6412 ASC 25, CR - CARRIAGE RETURN- (DEFAULT) EXECUTE DIAG. OCT 6412 ASC 25, FROM TEST 0. OCT 6412 OCT 6412 ASC 20, N - BEGIN EXECUTION FROM TEST N OCT 6412 OCT 6412 ASC 23, LN - LOOP ON TEST N OCT 6412 ASC 25, (TOGGLE SW BIT 15 TO REGAIN CONTROL) OCT 6412 OCT 6412 ASC 25, E - EXIT PROGRAM WITH HLT77 OCT 6412 ASC 25, (PRESS RUN TO RE-ENTER PROGRAM) OCT 6412 OCT 6412 ASC 25, F - FORCE TESTING TO SECOND BOARD OCT 6412 OCT 6412 ASC 25, G - GO BACK AND RETEST BOARD ONE OCT 6412 OCT 6412 ASC 25, R - GO BACK TO RECONFIGURATION SECTION OCT 6412 OCT 6412 ASC 1,$ MS38 ASC 10,PROGRAM OPTIONS: $ MS39 ASC 25,CARD FLAG DOESN'T SET AFTER CARD MADE A LISTENER/ ASC 12,WITH DATA IN THE FIFO.$ * MS42 ASC 5, RECEIVED$ * MS43 ASC 25, DMA WAS CONFIGURED TO SEND 20 WORDS/ OCT 6412 ASC 25, TO THE INTERFACE. AFTER INITIATING/ OCT 6412 ASC 25, THE TRANSFER THE DMA WORD COUNT WAS/ OCT 6412 ASC 25, READ AND FOUND TO BE $ MS44 OCT 6412 ASC 20, AT THE END OF THE DMA TRANSFER THE/ OCT 6412 ASC 25, STAUS RECIEVED FROM THE CARD WAS INCORRECT./ OCT 6412 ASC 25, EXPECTED - RECIEVED =$ OCT 6412 OCT 6412 MS45 ASC 18,FAULT IN DMA OUTPUT TRANSFER:$ * MS49 ASC 15,FAULT IN DMA INPUT TRANSFER:$ * ASC 09, THE BUS, WORD $ MS55 ASC 28,NO SECOND CARD WAS FOUND. IS THIS CORRECT? OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,IF NO, INPUT SELECT CODE OF SECOND CARD... $ MS56 ASC 15,FAULT IN DMA CONTROL LOGIC:$ MS58 ASC 06, BIT $ MS59 ASC 07, STUCK HIGH.$ MS60 ASC 10, SEE TEST 9.$ MS61 ASC 17,FAULT IN CPU-FIFO-CPU DATA PATH:$ MS62 ASC 07, STUCK LOW.$ MS65 ASC 10, SEE TEST 13.$ MS67 ASC 25, DMA HUNG UP WAITING FOR BOARD TO SEND DATA./ ASC 10, WORD COUNT = $ MS66 ASC 25, DMA HUNG UP WAITING FOR BOARD TO ACCEPT DATA./ ASC 10, WORD COUNT = $ MS70 ASC 1,B$ MS68 ASC 10, SEE TEST 11.$ MS69 OCT 7 OCT 6412 OCT 6412 ASC 1,$$ MS80 ASC 15,FAULT IN FIFO CONTROL LOGIC.$ MS81 ASC 10, SEE TEST 8.$ MS82 ASC 10, SEE TEST 12.$ MS83 ASC 25, WAS ON THE BOTTEM OF THE STACK AFTER 8 OTA'S IN _ OCT 6412 ASC 27, TEST MODE. THE STACK SHOULD HAVE DROPPED TO 77B,_ OCT 6412 ASC 11, AS SHOWN BELOW: OCT 6412 OCT 6412 ASC 25, BEFORE ROTATE AFTER ROTATE OCT 6412 OCT 6412 ASC 25, 077 017 OCT 6412 ASC 25, 017 360 OCT 6412 ASC 25, 360 063 OCT 6412 ASC 25, 063 314 OCT 6412 ASC 25, 314 125 OCT 6412 ASC 25, 125 252 OCT 6412 ASC 25, 252 377 OCT 6412 ASC 25, 377 000 OCT 6412 ASC 25, 000 077 OCT 6412 OCT 6412 ASC 1,$$ MS84 ASC 10, SEE TEST 14.$ MS85 ASC 25, NO DATA RETURNED TO STACK IN TEST MODE $ MS87 ASC 15,FAULT IN BASIC FIFO CIRCUIT:$ MS88 ASC 25, 125252 WAS DROPPED INTO THE FIFO. THE CARD OCT 6412 ASC 25, WAS THEN TURNED INTO A LISTENER AND $ MS89 ASC 05, FOUND AT_ OCT 6412 ASC 15, THE BOTTEM OF THE FIFO.$ MS90 ASC 25, CARD INTERRUPTS THROUGH SELECT CODE 0.$ MS94 OCT 57 MS97 OCT 6412 ASC 25, PRESS HALT,PRESET,RUN WITHIN 10 SECONDS ! OCT 6412 ASC 1,$ MS98 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T SET DI FLAG** OCT 6412 ASC 1,$ MS99 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T CLEAR DI CONTROL FF** OCT 6412 ASC 1,$ MS100 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T CLEAR FIFO** OCT 6412 ASC 1,$ MS101 OCT 6412 ASC 27,(TEST 3) **FLAG CLEAR DOESN'T HOLD OFF INTERRUPTS** OCT 6412 ASC 1,$ MS110 OCT 6412 ASC 25,(TEST 15)..BAD STATUS RETURNED FROM LISTENER DI OCT 6412 ASC 25,(TWO DI'S SHOULD BE CONNECTED BY AN HP-IB CABLE) OCT 6412 ASC 1,$ MS118 ASC 25, EXPECTED OCT 6412 ASC 1,$ MS111 ASC 25, RECEIVED OCT 6412 ASC 1,$ MS112 OCT 6412 ASC 25,THE DI IN SELECT CODE $ MS113 OCT 6412 ASC 25,WAS THE TALKER OCT 6412 ASC 1,$ MS114 OCT 6412 ASC 25,WAS THE LISTENER OCT 6412 ASC 1,$ MS115 OCT 6412 ASC 25,(TEST 15)...SRQ DIDN'T SET THE TALKERS FLAG OCT 6412 ASC 1,$ MS1.5 OCT 6412 ASC 28,(TEST 15)..LISTENER FAILED TO RESPOND TO PARALLEL POLL OCT 6412 ASC 1,$ MS116 OCT 6412 ASC 28,(TEST 15)..LISTENER RETURNED DIFFERENT BUS ADDRESS OCT 6412 ASC 28, THEN EXPECTED DURING A PARALLEL POLL OCT 6412 ASC 1,$ MS117 OCT 6412 ASC 28,(TEST 15)..TEST BUFFER TRANSFER NOT SUCESSFUL.. OCT 6412 ASC 28, ASCII 0-9,A-Z SENT FROM TALKER TO OCT 6412 ASC 28, LISTENER OVER HP-IB. (36 CHARACTERS) OCT 6412 OCT 6412 ASC 28,THE SENT,RECIEVED CHARACTERS DID NOT COMPARE OCT 6412 ASC 28,ON COMPARE NUMBER..$ MS119 OCT 6412 ASC 25,(TEST 15)..TIME OUT WAITING FOR DMA TO COMPLETE OCT 6412 ASC 1,$ MS120 ASC 20, OUTBUS,INBUS BIT $ MS121 ASC 28,INPUT DMA CH2 WORD COUNT = $ MS122 ASC 28,OUTPUT DMA CH1 WORD COUNT = $ MS124 ASC 28,SELECT CODE....STATUS = $ MS125 ASC 10,.... $ MS126 ASC 28,(T15)..DI TO HP-IB TO DI TEST PASSES ! $ MS127 OCT 6412 ASC 28, IN A TEST PATTERN OF "377B"$ MS128 OCT 6412 ASC 28, IN A TEST PATTERN OF "000"$ MS129 OCT 6412 ASC 28, THE CURRENTLY ACTIVE SELECT CODE IS...$ MS130 OCT 6412 ASC 28, NO SECOND DI CONFIGURED! $ MS131 OCT 6412 ASC 28, IMPROPER TEST SELECTION $ MS132 OCT 6412 ASC 28, TESTING COMPLETED ON SELECT CODE $ MS133 ASC 9, (PACKED-MODE) $ FWAA EQU * END