2008-08-07 14:26:07 +02:00
|
|
|
|
|
|
|
#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 */
|