; LAST UPDATED ON: 11 JUN 83 ; REASON FOR UPDATE: Clean up file header, complete documentation. aep ; ; ORIGINATION DATE: 27 MAY 83 ; ; AUTHOR: Proteus Engineering Inc. aep ; Pasadena, CA 91101 ; ; PROGRAM NAME: DSBLINTR.ASM -- Disables extraneous interrupts that may ; be generated by unitialized 8259's on the System Support I ; board. This problem is particularly annoying when attempting ; to use DDT or SID, both of which enable interrupts in the CPU ; when the "G" command is executed. ; ; ========================== Copyright 1983, CompuPro Corporation, ; || || A division of Godbout Electronics. ; || DSBLINTR.ASM || Oakland Airport, Oakland, CA ; || || ; ========================== ; ; This product is a copyright program product of CompuPro and is ; supplied for use with the CompuPro Computer Systems. ; ; PURPOSE: This program will initialize the master and slave Priority ; Interrupt Controllers (8259) into a benign state. In this ; state, they will not generate an interrupt to the CPU even ; if the VI0 - VI7 priority interrupt lines are activated. ; ; CONSTANTS: ; SLAVE EQU 0 ;No interrupt vector code for slave PIC MASTER EQU 0 ;No interrupt vector code for master PIC ; ; LIBRARY CONSTANTS: MACLIB COMPUPRO ;Disk and Serial/Parallel interface constants MACLIB ASCII ;Mnemonics for common ASCII, other special characters MACLIB CPMDISK ;CP/M disk defaults, CBIOS offsets, BDOS functions MACLIB ACTIVE ;Flags directing construction for the various ;CompuPro products to "customize" the BIOS ; ; PROGRAM: ASEG ;Used RMAC to assemble this code module. ORG TPA ;Base of Temporary Program Area ; ; Initialize Slave 8259A Interrupt Controller. LXI H,SLAVE ;Get address of Slave interrupt base MOV A,L ANI 111$00000b ;Make sure only 3 address bits used ORI 000$11101b ;Level trigger, 4 byte inverval, cascade mode OUT SS1SP0 ;ICW1 MOV A,H ;High address of Slave interrupt base OUT SS1SP1 ;ICW2 MVI A,00000$111b ;Slave ID is interrupt 7 OUT SS1SP1 ;ICW3 MVI A,000$00000b ;Non-buffered, normal EOI, 8085 OUT SS1SP1 ;ICW4 MVI A,0FFh ;Slave PIC initial Active Interrupt Mask OUT SS1SP1 ;OCW1 MVI A,EOI ;Clear controller of any pending interrupts OUT SS1SP0 ;OCW2 MVI A,SETPRI+6 ;Set CRT transmit to lowest priority OUT SS1SP0 ;OCW2 MVI A,READISR ;Set up to read interrupt service register OUT SS1SP0 ;OCW3 MVI A,SMMOFF ;Special mask mode off OUT SS1SP0 ;OCW3 ; ; Initialize Master 8259A Interrupt Controller. LXI H,MASTER ;Get address of Master interrupt base MOV A,L ANI 111$00000b ;Make sure only 3 address bits used ORI 000$11101b ;Level trigger, 4 byte inverval, cascade mode OUT SS1MP0 ;ICW1 MOV A,H ;High address of Master interrupt base OUT SS1MP1 ;ICW2 MVI A,1000$0000b ;Only interrupt 7 is a slave OUT SS1MP1 ;ICW3 MVI A,000$10000b ;Fully nested, non-buffered, normal EOI, 8085 OUT SS1MP1 ;ICW4 MVI A,0FFh ;Master PIC initial Active Interrupt Mask OUT SS1MP1 ;OCW1 MVI A,EOI ;Clear controller of any pending interrupts OUT SS1MP0 ;OCW2 MVI A,READISR ;Set up to read interrupt service register OUT SS1MP0 ;OCW3 MVI A,SMMOFF ;Special mask mode off OUT SS1MP0 ;OCW3 MVI C,WBOOTX ;Warm boot back to CP/M JMP BDOS ;thru the BDOS ; END