mirror of
https://github.com/holub/mame
synced 2025-05-04 13:33:05 +03:00
From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: change for cpunum_set_irq_callback() callback function This patch adds the running_machine* parameter to the function passed into cpunum_set_irq_callback() and adds the IRQ_CALLBACK macro for the callback function.
This commit is contained in:
parent
ab2154804c
commit
250e9056d5
@ -10,6 +10,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
#include "deprecat.h"
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
#include "debug/debugcpu.h"
|
||||
@ -76,7 +77,7 @@ int (*const cpu_irq_callbacks[MAX_CPU])(int) =
|
||||
cpu_7_irq_callback
|
||||
};
|
||||
|
||||
static int (*drv_irq_callbacks[MAX_CPU])(int);
|
||||
static int (*drv_irq_callbacks[MAX_CPU])(running_machine *, int);
|
||||
|
||||
|
||||
|
||||
@ -318,7 +319,7 @@ void cpunum_set_input_line_and_vector(running_machine *machine, int cpunum, int
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void cpunum_set_irq_callback(int cpunum, int (*callback)(int))
|
||||
void cpunum_set_irq_callback(int cpunum, int (*callback)(running_machine *, int))
|
||||
{
|
||||
drv_irq_callbacks[cpunum] = callback;
|
||||
}
|
||||
@ -331,7 +332,7 @@ void cpunum_set_irq_callback(int cpunum, int (*callback)(int))
|
||||
*
|
||||
*************************************/
|
||||
|
||||
INLINE int cpu_irq_callback(int cpunum, int line)
|
||||
INLINE int cpu_irq_callback(running_machine *machine, int cpunum, int line)
|
||||
{
|
||||
int vector = input_line_vector[cpunum][line];
|
||||
|
||||
@ -347,7 +348,7 @@ INLINE int cpu_irq_callback(int cpunum, int line)
|
||||
|
||||
/* if there's a driver callback, run it */
|
||||
if (drv_irq_callbacks[cpunum])
|
||||
vector = (*drv_irq_callbacks[cpunum])(line);
|
||||
vector = (*drv_irq_callbacks[cpunum])(machine, line);
|
||||
|
||||
#ifdef ENABLE_DEBUGGER
|
||||
/* notify the debugger */
|
||||
@ -358,14 +359,14 @@ INLINE int cpu_irq_callback(int cpunum, int line)
|
||||
return vector;
|
||||
}
|
||||
|
||||
static int cpu_0_irq_callback(int line) { return cpu_irq_callback(0, line); }
|
||||
static int cpu_1_irq_callback(int line) { return cpu_irq_callback(1, line); }
|
||||
static int cpu_2_irq_callback(int line) { return cpu_irq_callback(2, line); }
|
||||
static int cpu_3_irq_callback(int line) { return cpu_irq_callback(3, line); }
|
||||
static int cpu_4_irq_callback(int line) { return cpu_irq_callback(4, line); }
|
||||
static int cpu_5_irq_callback(int line) { return cpu_irq_callback(5, line); }
|
||||
static int cpu_6_irq_callback(int line) { return cpu_irq_callback(6, line); }
|
||||
static int cpu_7_irq_callback(int line) { return cpu_irq_callback(7, line); }
|
||||
static int cpu_0_irq_callback(int line) { return cpu_irq_callback(Machine, 0, line); }
|
||||
static int cpu_1_irq_callback(int line) { return cpu_irq_callback(Machine, 1, line); }
|
||||
static int cpu_2_irq_callback(int line) { return cpu_irq_callback(Machine, 2, line); }
|
||||
static int cpu_3_irq_callback(int line) { return cpu_irq_callback(Machine, 3, line); }
|
||||
static int cpu_4_irq_callback(int line) { return cpu_irq_callback(Machine, 4, line); }
|
||||
static int cpu_5_irq_callback(int line) { return cpu_irq_callback(Machine, 5, line); }
|
||||
static int cpu_6_irq_callback(int line) { return cpu_irq_callback(Machine, 6, line); }
|
||||
static int cpu_7_irq_callback(int line) { return cpu_irq_callback(Machine, 7, line); }
|
||||
|
||||
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "memory.h"
|
||||
|
||||
#define INTERRUPT_GEN(func) void func(running_machine *machine, int cpunum)
|
||||
#define IRQ_CALLBACK(func) int func(running_machine *machine, int irqline)
|
||||
|
||||
|
||||
|
||||
@ -50,7 +51,7 @@ void cpunum_set_input_line_vector(int cpunum, int irqline, int vector);
|
||||
void cpunum_set_input_line_and_vector(running_machine *machine, int cpunum, int line, int state, int vector);
|
||||
|
||||
/* Install a driver callback for IRQ acknowledge */
|
||||
void cpunum_set_irq_callback(int cpunum, int (*callback)(int irqline));
|
||||
void cpunum_set_irq_callback(int cpunum, int (*callback)(running_machine *machine, int irqline));
|
||||
|
||||
|
||||
#endif /* __CPUINT_H__ */
|
||||
|
@ -21,9 +21,9 @@ static int tmp68301_irq_vector[8];
|
||||
|
||||
static void tmp68301_update_timer( int i );
|
||||
|
||||
static int tmp68301_irq_callback(int int_level)
|
||||
static IRQ_CALLBACK(tmp68301_irq_callback)
|
||||
{
|
||||
int vector = tmp68301_irq_vector[int_level];
|
||||
int vector = tmp68301_irq_vector[irqline];
|
||||
// logerror("CPU #0 PC %06X: irq callback returns %04X for level %x\n",activecpu_get_pc(),vector,int_level);
|
||||
return vector;
|
||||
}
|
||||
|
@ -611,7 +611,7 @@ void leland_80186_sound_init(void)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static int int_callback(int line)
|
||||
static IRQ_CALLBACK(int_callback)
|
||||
{
|
||||
if (LOG_INTERRUPTS) logerror("(%f) **** Acknowledged interrupt vector %02X\n", attotime_to_double(timer_get_time()), i80186.intr.poll_status & 0x1f);
|
||||
|
||||
@ -1093,7 +1093,7 @@ static READ16_HANDLER( i80186_internal_port_r )
|
||||
case 0x24/2:
|
||||
if (LOG_PORTS) logerror("%05X:read 80186 interrupt poll\n", activecpu_get_pc());
|
||||
if (i80186.intr.poll_status & 0x8000)
|
||||
int_callback(0);
|
||||
int_callback(machine, 0);
|
||||
return i80186.intr.poll_status;
|
||||
|
||||
case 0x26/2:
|
||||
|
@ -112,7 +112,7 @@ WRITE8_HANDLER( froggrmc_sh_irqtrigger_w )
|
||||
}
|
||||
|
||||
|
||||
static int scramble_sh_irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(scramble_sh_irq_callback)
|
||||
{
|
||||
/* interrupt acknowledge clears the flip-flop --
|
||||
we need to pulse the CLR line because MAME's core never clears this
|
||||
@ -126,7 +126,7 @@ static int scramble_sh_irq_callback(int irqline)
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
static int sfx_sh_irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(sfx_sh_irq_callback)
|
||||
{
|
||||
/* interrupt acknowledge clears the flip-flop --
|
||||
we need to pulse the CLR line because MAME's core never clears this
|
||||
|
@ -26,7 +26,7 @@
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static int aztarac_irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(aztarac_irq_callback)
|
||||
{
|
||||
return 0xc;
|
||||
}
|
||||
|
@ -1289,13 +1289,13 @@ static const struct YMF271interface ymf271_interface2 =
|
||||
|
||||
static UINT16 irqreq;
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
int i;
|
||||
for(i=15; i>=0 && !(irqreq & (1<<i)); i--);
|
||||
irqreq &= ~(1<<i);
|
||||
if(!irqreq)
|
||||
cpunum_set_input_line(Machine, 0, 0, CLEAR_LINE);
|
||||
cpunum_set_input_line(machine, 0, 0, CLEAR_LINE);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ static WRITE32_HANDLER(IntAck_w)
|
||||
IntHigh=(data>>8)&7;
|
||||
}
|
||||
|
||||
static int icallback(int line)
|
||||
static IRQ_CALLBACK(icallback)
|
||||
{
|
||||
int i;
|
||||
UINT32 IntPend=program_read_dword_32le(0x01800c0c);
|
||||
|
@ -76,14 +76,14 @@ static void update_irq_state(void)
|
||||
}
|
||||
|
||||
|
||||
static int irq_callback(int which)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
/* auto-ack the IRQ */
|
||||
irq_state[which] = 0;
|
||||
irq_state[irqline] = 0;
|
||||
update_irq_state();
|
||||
|
||||
/* vector is 0x40 + index */
|
||||
return 0x40 + which;
|
||||
return 0x40 + irqline;
|
||||
}
|
||||
|
||||
|
||||
|
@ -545,7 +545,7 @@ static INPUT_PORTS_START(gamecstl)
|
||||
PORT_START_TAG("pc_keyboard_7")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
int r = 0;
|
||||
r = pic8259_acknowledge(1);
|
||||
|
@ -299,7 +299,7 @@ static READ8_HANDLER( cfb_zpu_int_req_clr )
|
||||
}
|
||||
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
/* all data lines are tied to +5V via 10K resistors */
|
||||
/* D1 is set to GND when INT comes from CFB */
|
||||
|
@ -953,7 +953,7 @@ static INPUT_PORTS_START(mediagx)
|
||||
PORT_BIT( 0xf00, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
int r;
|
||||
r = pic8259_acknowledge(1);
|
||||
|
@ -5090,20 +5090,20 @@ MACHINE_DRIVER_END
|
||||
|
||||
|
||||
/* Callback when the genesis enters interrupt code */
|
||||
static int genesis_int_callback (int irq)
|
||||
static IRQ_CALLBACK(genesis_int_callback)
|
||||
{
|
||||
if (irq==4)
|
||||
if (irqline==4)
|
||||
{
|
||||
megadrive_irq4_pending = 0;
|
||||
}
|
||||
|
||||
if (irq==6)
|
||||
if (irqline==6)
|
||||
{
|
||||
megadrive_irq6_pending = 0;
|
||||
// mame_printf_debug("clear pending!\n");
|
||||
}
|
||||
|
||||
return (0x60+irq*4)/4; // vector address
|
||||
return (0x60+irqline*4)/4; // vector address
|
||||
}
|
||||
|
||||
static int megadriv_tas_callback(void)
|
||||
|
@ -189,10 +189,10 @@ static void update_irq_state(void)
|
||||
|
||||
|
||||
/* For games that supply an *IRQ Vector* on the data bus */
|
||||
static int metro_irq_callback(int int_level)
|
||||
static IRQ_CALLBACK(metro_irq_callback)
|
||||
{
|
||||
// logerror("CPU #0 PC %06X: irq callback returns %04X\n",activecpu_get_pc(),metro_irq_vectors[int_level]);
|
||||
return metro_irq_vectors[int_level]&0xff;
|
||||
return metro_irq_vectors[irqline]&0xff;
|
||||
}
|
||||
|
||||
static MACHINE_RESET( metro )
|
||||
|
@ -714,7 +714,7 @@ static void irq_raise(int level)
|
||||
cpunum_set_input_line(Machine, 0, 0, HOLD_LINE);
|
||||
}
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
return last_irq;
|
||||
}
|
||||
|
@ -1243,13 +1243,13 @@ GFXDECODE_END
|
||||
|
||||
static UINT16 irqreq;
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
int i;
|
||||
for(i=15; i>=0 && !(irqreq & (1<<i)); i--);
|
||||
irqreq &= ~(1<<i);
|
||||
if(!irqreq)
|
||||
cpunum_set_input_line(Machine, 0, 0, CLEAR_LINE);
|
||||
cpunum_set_input_line(machine, 0, 0, CLEAR_LINE);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
@ -1731,7 +1731,7 @@ static INTERRUPT_GEN( spi_interrupt )
|
||||
cpunum_set_input_line(machine, 0, 0, ASSERT_LINE );
|
||||
}
|
||||
|
||||
static int spi_irq_callback(int irq)
|
||||
static IRQ_CALLBACK(spi_irq_callback)
|
||||
{
|
||||
return 0x20;
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ static void update_irq_state(void)
|
||||
cpunum_set_input_line(Machine, 0, 0, (requested_int & irq_enable)? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
static int ssv_irq_callback(int level)
|
||||
static IRQ_CALLBACK(ssv_irq_callback)
|
||||
{
|
||||
int i;
|
||||
for ( i = 0; i <= 7; i++ )
|
||||
|
@ -256,7 +256,7 @@ static MACHINE_RESET( horshoes )
|
||||
|
||||
static int last_irq_level;
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
return irq_adr_table[last_irq_level];
|
||||
}
|
||||
|
@ -511,7 +511,7 @@ static INPUT_PORTS_START(taitowlf)
|
||||
PORT_START_TAG("pc_keyboard_7")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static int irq_callback(int irqline)
|
||||
static IRQ_CALLBACK(irq_callback)
|
||||
{
|
||||
int r = 0;
|
||||
r = pic8259_acknowledge(1);
|
||||
|
@ -105,10 +105,10 @@ static void fd1094_cmp_callback(UINT32 val, int reg)
|
||||
}
|
||||
|
||||
/* Callback when the FD1094 enters interrupt code */
|
||||
static int fd1094_int_callback (int irq)
|
||||
static IRQ_CALLBACK(fd1094_int_callback)
|
||||
{
|
||||
fd1094_setstate_and_decrypt(FD1094_STATE_IRQ);
|
||||
return (0x60+irq*4)/4; // vector address
|
||||
return (0x60+irqline*4)/4; // vector address
|
||||
}
|
||||
|
||||
static void fd1094_rte_callback (void)
|
||||
|
@ -86,10 +86,10 @@ static void s24_fd1094_cmp_callback(UINT32 val, int reg)
|
||||
}
|
||||
|
||||
/* Callback when the s24_fd1094 enters interrupt code */
|
||||
static int s24_fd1094_int_callback (int irq)
|
||||
static IRQ_CALLBACK(s24_fd1094_int_callback)
|
||||
{
|
||||
s24_fd1094_setstate_and_decrypt(FD1094_STATE_IRQ);
|
||||
return (0x60+irq*4)/4; // vector address
|
||||
return (0x60+irqline*4)/4; // vector address
|
||||
}
|
||||
|
||||
static void s24_fd1094_rte_callback (void)
|
||||
|
Loading…
Reference in New Issue
Block a user