Contents of the READ.ME file
The enclosed files can be used to control and determine the status of
the 8259 programmable interrupt controller. I intended to complete
the package and test it however I have not had time and decided to
release it without testing. Please address any criticisms or
suggestions to Larry Greenberg on the Programmer's Corner BBS.
The PIC_8259 class provides control and status of the 8259 Programmable
Interrupt Controller chip. A description of the chip is provided which
corresponds to the functions in this package. There is no reference to
the control words which the 8259 actually uses since this detail is not
necessary to the understanding of how the chip works and how to control
it. These are unnecessary details as far as the programmer is concerned
and are hidden. This package can be used for custom hardware systems or
for the PC.
The use of the 8259 in the PC has not been organized. INTEL specified
that interrupts 0=31 were reserved, yet MS used them in DOS. Looking
through the BIOS it seems that the master 8259 is not programmed to use
Special Fully Nested Mode. This means that an interrupt on the slave
will be locked out until the slave's current interrupt service routine
(if there is one) completes even though the requesting interrupt may
have a higher priority.
The free access provided to the PC hardware by DOS has resulted in an
unorganized use of the 8259. A package can modify the behavior of the
8259 in any way and affect other routines using the chip. Anyone can
set or mask priorities or reinitialize the chip differently from the way
it was initialized in the BIOS.
Classes for hardware can simplify designing and writing low-level software.
If you have a need to work with the 8259 I hope that the included code
and doc are of help to you.
The enclosed code and documentation may be used freely as part of a
Files included are:
READ.ME (this file)
PIC_8259.DOC a description of the 8259
PIC_8259.H CPP header (declaration)
PIC_8259.CPP CPP definition
MUT_EXCL.H class to prevent concurrent use of hardware
LEG.H a few miscellaneous "#define"s