#ifndef CPUINTRF_H #define CPUINTRF_H #include "osd_cpu.h" /* Interrupt line constants */ enum { /* line states */ CLEAR_LINE = 0, /* clear (a fired, held or pulsed) line */ ASSERT_LINE, /* assert an interrupt immediately */ HOLD_LINE, /* hold interrupt line until acknowledged */ PULSE_LINE, /* pulse interrupt line for one instruction */ /* internal flags (not for use by drivers!) */ INTERNAL_CLEAR_LINE = 100 + CLEAR_LINE, INTERNAL_ASSERT_LINE = 100 + ASSERT_LINE, /* input lines */ MAX_INPUT_LINES = 32+3, INPUT_LINE_IRQ0 = 0, INPUT_LINE_IRQ1 = 1, INPUT_LINE_IRQ2 = 2, INPUT_LINE_IRQ3 = 3, INPUT_LINE_IRQ4 = 4, INPUT_LINE_IRQ5 = 5, INPUT_LINE_IRQ6 = 6, INPUT_LINE_IRQ7 = 7, INPUT_LINE_IRQ8 = 8, INPUT_LINE_IRQ9 = 9, INPUT_LINE_NMI = MAX_INPUT_LINES - 3, /* special input lines that are implemented in the core */ INPUT_LINE_RESET = MAX_INPUT_LINES - 2, INPUT_LINE_HALT = MAX_INPUT_LINES - 1, /* output lines */ MAX_OUTPUT_LINES = 32 }; /* daisy-chain link */ typedef struct { void (*reset)(int); /* reset callback */ int (*interrupt_entry)(int); /* entry callback */ void (*interrupt_reti)(int); /* reti callback */ int irq_param; /* callback paramater */ } Z80_DaisyChain; #define Z80_MAXDAISY 4 /* maximum of daisy chan device */ #define Z80_INT_REQ 0x01 /* interrupt request mask */ #define Z80_INT_IEO 0x02 /* interrupt disable mask(IEO) */ #define Z80_VECTOR(device,state) (((device)<<8)|(state)) #endif /* CPUINTRF_H */