diff options
Diffstat (limited to 'trunk/src/emu/machine/pic8259.h')
-rw-r--r-- | trunk/src/emu/machine/pic8259.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/trunk/src/emu/machine/pic8259.h b/trunk/src/emu/machine/pic8259.h new file mode 100644 index 00000000000..230074880ec --- /dev/null +++ b/trunk/src/emu/machine/pic8259.h @@ -0,0 +1,73 @@ +/*************************************************************************** + + Intel 8259A + + Programmable Interrupt Controller + + _____ _____ + _CS 1 |* \_/ | 28 VCC + _WR 2 | | 27 A0 + _RD 3 | | 26 _INTA + D7 4 | | 25 IR7 + D6 5 | | 24 IR6 + D5 6 | | 23 IR5 + D4 7 | 8259A | 22 IR4 + D3 8 | | 21 IR3 + D2 9 | | 20 IR2 + D1 10 | | 19 IR1 + D0 11 | | 18 IR0 + CAS0 12 | | 17 INT + CAS1 13 | | 16 _SP/_EN + GND 14 |_____________| 15 CAS2 + +***************************************************************************/ + +#ifndef __PIC8259_H__ +#define __PIC8259_H__ + +#include "devlegcy.h" +#include "devcb.h" + +DECLARE_LEGACY_DEVICE(PIC8259, pic8259); + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +struct pic8259_interface +{ + /* Called when int line changes */ + devcb_write_line out_int_func; + /* 1 - when master, 0 - when slave */ + devcb_read_line sp_en_func; + /* Called when on master slave irq is trigered*/ + devcb_read8 read_slave_ack_func; +}; + + +/*************************************************************************** + DEVICE CONFIGURATION MACROS +***************************************************************************/ + +#define MCFG_PIC8259_ADD(_tag, _intrf) \ + MCFG_DEVICE_ADD(_tag, PIC8259, 0) \ + MCFG_DEVICE_CONFIG(_intrf) + + +/* device interface */ +READ8_DEVICE_HANDLER( pic8259_r ); +WRITE8_DEVICE_HANDLER( pic8259_w ); +int pic8259_acknowledge(device_t *device); + +/* interrupt requests */ +WRITE_LINE_DEVICE_HANDLER( pic8259_ir0_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir1_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir2_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir3_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir4_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir5_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir6_w ); +WRITE_LINE_DEVICE_HANDLER( pic8259_ir7_w ); + + +#endif /* __PIC8259_H__ */ |