;************************************************************* ;* * ;* INTEST - MORROW INTERRUPT TEST FOR 8259 ON MULT I/O * ;* AND WUNDERBUS I/O. PRINTS A "." EVERTIME * ;* CLOCK GENERATES AN INTERRUPT (2048 PER SEC.) * ;* AND TERMINATES WHEN ANY CHARACTER IS ON * ;* THE CONSOLE IS PRESSED. THESE RELY ON THE * ;* CP/M BDOS CALLS THROUGH LOCATION 5. * ;* * ;* WB I/O MUST HAVE SWITCH 7C: 1,2,4,5 - ON * ;* 3,6,7,8 - OFF * ;* * ;* SWITCH 10A 1,3 - ON * ;* OTHERS - OFF * ;* * ;* JUMPER J2 A - B * ;* * ;* JUMPER J3 INSTALLED * ;* * ;* MULT I/O MUST HAVE: * ;* SWITCH 2D: 1 - OFF * ;* 2-8 - ON * ;* * ;* SWITCH 7B: 1,2,4,5 - ON * ;* 3,6,7,8 - OFF * ;* * ;* SWITCH 10B: 5,6 - ON * ;* OTHERS - OFF * ;* * ;* JUMPER J4 - INSTALLED * ;* * ;* JUMPER J5 - B TO PINT * ;* * ;* JUMPER J6 - NOT INSTALLED * ;* * ;* MEMORY MUST BE SET FOR EXTENDED ADDRESS! * ;* * ;* MULT I/O NOTES: * ;* THE MULT I/O BOARD SHOULD HAVE EITHER A * ;* MULTX-B OR MULTX-C FPLA AT LOCATION 9A. * ;* IT SHOULD ALSO HAVE A JUMPER WIRE BETWEEN * ;* PIN 2 OF IC AT LOCATION 13B AND PIN 4 OF * ;* IC AT LOCATION 14C. IN ADDITION 14C PIN * ;* 4 MUST BE REMOVED FROM THE SOCKET. * ;* * ;* WB I/O NOTES: THE WB I/O BOARD SHOULD BE AT REVISION 2. * ;* (ECN # 4 6/3/1982) * ;* * ;* BJG - 821115 * ;************************************************************* 0100 ORG 0100H 0048 = BASE EQU 048H 004F = SELECT EQU BASE + 7 004A = CLOCK EQU BASE + 2 004C = ICW1 EQU BASE + 4 004D = ICW2 EQU BASE + 5 004D = ICW4 EQU BASE + 5 004D = OCW1 EQU BASE + 5 004C = OCW2 EQU BASE + 4 0005 = BDOS EQU 0005H 0000 = WARM EQU 0000H 0100 310002 INIT: LXI SP,200H 0103 F3 DI 0104 3E00D34F MVI A,0Š OUT SELECT ;SELECT GROUP 0 0108 3E18 MVI A,18H 010A D34A OUT CLOCK ;INITIALIZE CLOCK TO 2048 TPS 010C 3E38 MVI A,38H 010E D34A OUT CLOCK ;CLOCK STROBE HIGH (ACTIVE) 0110 3E18 MVI A,18H 0112 D34A OUT CLOCK ;CLOCK STROBE LOW (INACTIVE) ;******************************************************************* ;* * ;* INITIALIZE THE PIC FOR SINGLE PIC, 4 BYTE INCREMENT CALLS, * ;* LEVEL TRIGGER MODE, BUFFERED MODE, MASTER, NO AEOI, 8080 MODE. * ;* CALLS BEGIN AT 120H FOR IR0 AND END AT 13CH FOR IR7 (CLOCK TP). * ;* * ;******************************************************************* 0114 3E3F MVI A,03FH ;LOW CALL ADDRESS / MODE FOR PIC 0116 D34C OUT ICW1 0118 3E01 MVI A,01 ;HIGH BYTE OF CALL ADDRESS (0120H) 011A D34D OUT ICW2 011C 3E0C MVI A,0CH ;8080 MODE, MASTER 011E D34D OUT ICW4 0120 3E7F MVI A,07FH 0122 D34D OUT OCW1 ;MASK ALL BUT CLOCK TP INTERRUPTS 0124 3E08 MVI A,08H 0126 D34F OUT SELECT ;MULT I/O ENABLE INTERRUPT BIT 0128 FB EI 0129 C32901 LOOP: JMP LOOP 012C STORE: DS 16 ;FILL TO INTERRUPT SEVICE ROUTINE ;FOR CLOCK 013C DB4A SERVE: IN CLOCK ;CLEAR CLOCK INTERRUPT 013E 3E20 MVI A,20H 0140 D34C OUT OCW2 ;SEND THE PIC AN EOI 0142 0E02 PRINT: MVI C,2 ;PRINT A "." FOR EACH TICK OF CLOCK 0144 1E2E MVI E,02EH 0146 CD0500 CALL BDOS 0149 0E0B STAT: MVI C,0BH ;CHECK FOR KEY PRESSED 014B CD0500 CALL BDOS 014E FE00 CPI 0 0150 C20000 JNZ WARM 0153 3E08 MVI A,08H ;CONTINUE UNTIL KEY PRESSED 0155 D34F OUT SELECT 0157 FB EI 0158 C9 RET 0159 END