;************************************************************************ ;* * ;* SIMPLE SWITCHBOARD SCREENING TEST @ 70H * ;* (INITIAL CODING 2/12/84: bjg * ;* * ;* CONSTRUCT TEST CABLE: * ;* * ;* PIN ON J1 PIN ON J2 * ;* * ;* 1 2 * ;* 2 1 * ;* 9 19 * ;* 11 - 19 * ;* 13 - 17 * ;* 15 17 * ;* * ;* SET SWITCHES AS FOLLOWS: * ;* * ;* SW1 1 - 8 OFF ( OR MATCH 1-4 WITH 5 - 8) * ;* SW2 1 - 8 OFF (19200 BAUD) * ;* SW3 DON'T CARE (STROBE POLARITY) * ;* SW4 5-8 DON'T CARE (ATTN POLARITY) * ;* 1-4 ON (ENABLE PARALLEL OUTPUT DRIVERS) * ;* SW5 1 ON (BOARD REPSONDS TO PHANTOM) * ;* 2,4,6 OFF; 3,5 ON (PORT 70H) * ;* 7 ON (DISABLE EPROM) * ;* 8 ON (DISABLE RAM) * ;* SW6 1-4 OFF (PLACES RAM @ F000H) * ;* 5-8 OFF (PLACES EPROM @ F000H) * ;* * ;************************************************************************ ;**************************************************************** ORG 100H BASE EQU 70H SER1 EQU BASE + 0 SER2 EQU BASE + 1 STATUS EQU BASE + 2 STROBE EQU BASE + 3 PPORT1 EQU BASE + 4 PPORT2 EQU BASE + 5 PPORT3 EQU BASE + 6 PPORT4 EQU BASE + 7 RDA1 EQU 04H RDA2 EQU 040H TBE1 EQU 08H TBE2 EQU 080H BDOS EQU 05H ; PRINT SIGNON MESSAGE SIGNON: LXI SP,100H MVI C,2 MVI E,01AH CALL BDOS ;CLEAR SCREEM CALL CRLF CALL CRLF MVI C,09 LXI D,BANNER CALL BDOS CALL CRLF CALL CRLF ; CLEAR ALL PORTS AND TEST FOR SWITCHBOARD PRESENT TPRSNT: MVI A,0 OUT PPORT1 ;INITIALIZE ALL PORTS OUT PPORT2 OUT PPORT3 OUT PPORT4 IN PPORT1 ;CLEAR ATTN SIGNALS IN PPORT2 IN PPORT3 IN PPORT4 IN SER1 ;RESET RDA IN SER2 ;RESET RDA IN STATUS ;READ STATUS IN PPORT1 CPI 0FFH JNZ TESTS1 CALL CRLF CALL CRLF LXI D,NPRMSG MVI C,9 CALL BDOS CALL CRLF CALL CRLF JMP 0 ; SERIAL PORT 1 OUTPUT, PORT 2 INPUT LOOP TEST TESTS1: MVI A,31H STA PASS MVI C,9 LXI D,SERTST1 CALL BDOS MVI C,0 S1LOOP: CALL SOUT1 CALL SINP2 CMP C JZ S1L1 LXI D,TEST1ER JMP UERROR S1L1: INR C JNZ S1LOOP ; SERIAL PORT 2 OUTPUT, PORT 1 INPUT₯)@ΩΖ PR¨!`!€†Š%BD+@PUP /U„ ΄ͺ@K₯r‘,X€Έ‚€KԘg…r© ™!@€΄„Κ™)Μ9L@ΘB( „D  Š•\“”^€Γ,+XJ 4Δ !€@BpA+Κβq\ ‹)"€(@/TŠ  £0ς˜€CԘ` B Lε r¦¨‘†…₯-©™&†…¦,$„’*"©ͺ’©…₯&¨ͺ’©)'©…)™&€§)‘†…₯'-©™&'§¨………( © ¦&"¦('©**"©ͺ……*"©ͺ(&«$„ –†…©ͺ „¨ ©©†…‘ ¦&‘©&#…‘ ¦&‘©&#…¦,$„’((¦©£†…¦«$„‘–†…‘ ¦&‘"'©†…¦«$„‘–…(¦'§¨¦§« –!†…§ͺͺ¨('©*†…€§¨('©*†…‘¦¨‘†…₯-¨¦'¨†…¦,$„’("©)…₯&¨¨("©)…(¦'¨€§)‘†…₯'-¨¦'§¨………„¨ © ¦&"¦('©**"©ͺ……*"©ͺ(&«$„ –…©ͺ „¨ ©©†…‘ ¦&‘©&#…‘ ¦&‘©&#…¦,$„’((&©£†…¦«$„‘–†…‘ ¦&‘"'©†…¦«$„‘–…(&'§¨¦§« –!†…§ͺͺ¨('©*…€§¨('©*…‘¦¨‘† LXI D,PERR JMP PPERR P2LOP1: INR C JNZ P2LOOP ; PARALLEL PORT 3 TEST TESTP3: MVI A,3 STA PASS CALL CRLF CALL CRLF LXI D,PP3MSG MVI C,9 CALL BDOS MVI C,0 P3LOOP: MOV A,C OUT PPORT3 IN PPORT3 CMP C JZ P3LOP1 LXI D,PERR JMP PPERR P3LOP1: INR C JNZ P3LOOP ; PARALLEL PORT 4 TEST TESTP4: MVI A,4 STA PASS CALL CRLF CALL CRLF LXI D,PP4MSG MVI C,9 CALL BDOS MVI C,0 P4LOOP: MOV A,C OUT PPORT4 IN PPORT4 CMP C JZ P4LOP1 LXI D,PERR JMP PPERR P4LOP1: INR C JNZ P4LOOP JMP TATTN ; PARALLEL PORT ERROR PRINT ROUTINE PPERR: MVI C,9 CALL BDOS LDA PASS CPI 1 JZ TESTP2 CPI 2 JZ TESTP3 CPI 3 JZ TESTP4 ; BEGIN ATTN AND STROBE TESTING TATTN: CALL CRLF CALL CRLF MVI C,9 LXI D,ATNMSG CALL BDOS CALL CRLF ; TEST ATTN E AND STROBE A ATTNE: CALL CLRATN IN STROBE CPI 0F0H JZ CONTE LXI D,ATNERR MVI C,9 CALL BDOS JMP ATTNF CONTE: CALL CRLF LXI D,ATEMSG MVI C,9 CALL BDOS MVI A,0 OUT STROBE IN STROBE ANI 01H JNZ ATTNF LXI D,ATNERE MVI C,09 CALL BDOS ; TEST ATTN F AND STROBE B ATTNF: CALL CLRATN IN STROBE CPI 0F0H JZ CONTF CALL CRLF LXI D,ATNERR MVI C,9 CALL BDOS JMP ATTNG CONTF: CALL CRLF LXI D,ATFMSG MVI C,9 CALL BDOS MVI A,1 OUT STROBE IN STROBE ANI 02H JNZ ATTNG LXI D,ATNERF MVI C,09 CALL BDOS CALL CRLF ; TEST ATTN G AND STROBE C ATTNG: CALL CLRATN IN STROBE CPI 0F0H JZ CONTG CALL CRLF LXI D,ATNERR MVI C,9 CALL BDOS JMP ATTNH CONTG: CALL CRLF LXI D,ATGMSG MVI C,9 CALL BDOS MVI A,2 OUT STROBE IN STROBE ANI 04H JNZ ATTNH LXI D,ATNERG MVI C,09 CALL BDOS CALL CRLF ; TEST ATTN H AND STROBE D ATTNH: CALL CLRATN IN STROBE CPI 0F0H JZ CONTH LXI D,ATNERR MVI C,9 CALL BDOS JMP TSTRB ;GOTO NEXT TEST CONTH: CALL CRLF LXI D,ATHMSG MVI C,9 CALL BDOS MVI A,3 OUT STROBE IN STROBE ANI 08H JNZ TSTRB LXI D,ATNERH MVI C,09 CALL BDOS JMP TSTRB ; CLEAR ALL ATTN BITS TO ZERO (LOWER 4 BITS OF STROBE PORT) CLRATN: IN PPORT1 IN PPORT2 IN PPORT3 IN PPORT4 RET ; LOOP TO OBSERVE STROBES WITH SCOPE TSTRB: CALL CRLF CALL CRLF LXI D,STBMSG MVI C,9 CALL BDOS CALL CRLF MVI C,9 LXI D,WMSG CALL BDOS ; KEEP DOING STROBES UNTIL KEY PRESSED STBSU: MVI C,0BH CALL BDOS ORA A JNZ DONE MVI C,0 STBLOP: MOV A,C CPI 8 JZ STBSU OUT STROBE INR C JMP STBLOP ; PRINT SIGNOFF AND BACK TO CP/M DONE: CALL CRLF CALL CRLF CALL CRLF MVI C,9 LXI D,SIGNOFF CALL BDOS CALL CRLF CALL CRLF JMP 0 ; UART ERRO PRINTING ROUTINE UERROR: MVI C,9 CALL BDOS LDA PASS CPI 031H JZ TESTS2 JMP TESTP1 ; RETURN WITH CHARACTER IN A SINP1: CALL INIT MVI A,0 STA SIO SINP10: CALL TIMOUT IN STATUS ANI RDA1 JZ SINP10 IN SER1 RET ; RETURN WITH CHARACTER IN A SINP2: CALL INIT MVI A,1 STA SIO SINP20: CALL TIMOUT IN STATUS ANI RDA2 JZ SINP20 IN SER2 RET ; CALL WITH CHARACTER IN C SOUT1: CALL INIT MVI A,2 STA SIO SOUT10: CALL TIMOUT IN STATUS ANI TBE1 JZ SOUT10 MOV A,C OUT SER1 RET ; CALL WITH CHARACTER IN C SOUT2: CALL INIT MVI A,3 STA SIO SOUT20: CALL TIMOUT IN STATUS ANI TBE2 JZ SOUT20 MOV A,C OUT SER2 RET ; PRINT A CARRIAGE RETURN LINE FEED CRLF: MVI C,2 MVI E,0AH CALL BDOS MVI C,2 MVI E,0DH CALL BDOS RET ; COUNTER SETUP ROUTINE FOR TIMEOUT CONSTANTS INIT: LXI H,0FFFFH LXI D,0fffh RET ; TIMEOUT LOOP TIMOUT: DCX H MOV A,L XRA H RNZ DCX D MOV A,E XRA D RNZ LDA SIO CPI 0 JNZ TO1 LXI D,TOMSG0 JMP LEAVE TO1: CPI 1 JNZ TO2 LXI D,TOMSG1 JMP LEAVE TO2: CPI 2 JNZ TO3 LXI D,TOMSG2 JMP LEAVE TO3: LXI D,TOMSG3 JNZ STRANGE LXI D,TOMSG3 LEAVE: POP H JMP UERROR STRANGE: LXI D,STRMSG JMP LEAVE ; TEST MESSAGES BANNER: DB ' SWITCHBOARD TEST VERSION 1.0 $' SERTST1: DB ' Testing SERIAL OUTPUT 1, SERIAL INPUT 2 $' SERTST2: DB ' Testing SERIAL OUTPUT 2, SERIAL INPUT 1 $' UERSTR: DB ' ==>> DATA MIS-MATCH, UART ERROR!! $ ' SIGNOFF: DB ' TEST COMPLETE, RETURNING TO CP/M. $' TEST1ER: DB ' ==>> DATA MISMATCH ERROR!! $' TOMSG: DB ' ==>> TIME OUT ERROR!! $' NPRMSG: DB ' NO SWITCHBOARD PRESENT IN SYSTEM or NOT ADDRESSED @ 70H !! $' TOMSG0: DB ' ==>> TIMEOUT IN SERIAL PORT 1 INPUT ROUTΙNE!! $' TOMRG1: DB ' =->> TIMEOUT IN SERIAL PORT 2 INPUT ROUTINE!! $' TOMSG2: DB ' ==>> TIMEOUT IN SERIAAŽ„€ͺ@a,Κ|…!Bƒ)8 WŠ€Kκt¬%B€‘.α"`¨ @©@I€„‹„™>uy‚'‚)’¦AH™€ ”ˆBBψ‚€H@IŸδδδδδδδ Ÿ $!0œœŸ“ΰα 0Ÿ39䐟€€Ÿ! ! !Ÿ0 œœŸ“ΰαŒ 0Ÿ39䐟Ÿ< <##0#Ÿ ŸŒŸŸ“Ÿΰα‰ 0Ÿ39䐟Ÿ< <##0#Ÿ Ÿ‰ŸŸ“Ÿΰαˆ 0Ÿ39䐟Ÿ< <##0#Ÿ ŸˆŸŸ“Ÿΰαƒ 0Ÿ39䐟Ÿ< <##0#Ÿ ŸƒŸŸ“Ÿΰα0 ŸŸŸ39䐟Ÿ€€Ÿ3<<Ÿ8 < 0Ÿ0 ŸœœŸ“Ÿΰα<! 0Ÿ39䐟Ÿ 90ŸŸ<!ŸŸ‡0ƒ1ƒ0ŸŸ'„Ÿ“ΰα<0 0Ÿ39䐟Ÿ 90Ÿ<Ÿ‘Ÿ<!Ÿ#$!0Ÿ0Ÿ“ΰα<1 0Ÿ39䐟Ÿ 90Ÿ9Ÿ‘Ÿ<!Ÿ#$!0Ÿ1Ÿ“SG: DB ' Testing STROBE C & ATTN LINE G $' ATHMSG: DB ' Testing STROBE D & ATTN LINE H $' ATNERR: DB ' UNABLE TO RESET THE ATTN LINES!! $' ATNERE: DB ' ==>> ERROR IN ATTN LINE E $' ATNERF: DB ' ==>> ERROR IN ATTN LINE F $' ATNERG: DB ' ==>> ERROR IN ATTN LINE G $' ATNERH: DB ' ==>> ERROR IN ATTN LINE H $' STBMSG: DB ' Now generating STROBES on pins 9, 11, 13, 15 of J1 and J2 $ ' WMSG: DB ' Type any key to terminate STROBE test... $ ' PASS: DB 0 SIO: DB 0 END