mirror of
https://github.com/holub/mame
synced 2025-05-22 05:38:52 +03:00
Converted 6532riot to devcb interfaces
- updated all drivers - converted drivers to RS/WS tms5220 interface where appropriate - removed quite some trampoline functions
This commit is contained in:
parent
47fbe6897d
commit
841cbd77c7
@ -41,8 +41,8 @@ struct _riot6532_port
|
||||
UINT8 in;
|
||||
UINT8 out;
|
||||
UINT8 ddr;
|
||||
riot_read_func in_func;
|
||||
riot_write_func out_func;
|
||||
devcb_resolved_read8 in_func;
|
||||
devcb_resolved_write8 out_func;
|
||||
};
|
||||
|
||||
|
||||
@ -55,6 +55,8 @@ struct _riot6532_state
|
||||
|
||||
riot6532_port port[2];
|
||||
|
||||
devcb_resolved_write_line irq_func;
|
||||
|
||||
UINT8 irqstate;
|
||||
UINT8 irqenable;
|
||||
|
||||
@ -96,8 +98,8 @@ INLINE void update_irqstate(const device_config *device)
|
||||
riot6532_state *riot = get_safe_token(device);
|
||||
int state = (riot->irqstate & riot->irqenable);
|
||||
|
||||
if (riot->intf->irq_func != NULL)
|
||||
(*riot->intf->irq_func)(device, (state != 0) ? ASSERT_LINE : CLEAR_LINE);
|
||||
if (riot->irq_func.write != NULL)
|
||||
devcb_call_write_line(&riot->irq_func, (state != 0) ? ASSERT_LINE : CLEAR_LINE);
|
||||
else
|
||||
logerror("%s:6532RIOT chip #%d: no irq callback function\n", cpuexec_describe_context(device->machine), riot->index);
|
||||
}
|
||||
@ -256,10 +258,9 @@ WRITE8_DEVICE_HANDLER( riot6532_w )
|
||||
/* if A0 == 0, we are writing to the port's output */
|
||||
else
|
||||
{
|
||||
UINT8 olddata = port->out;
|
||||
port->out = data;
|
||||
if (port->out_func != NULL)
|
||||
(*port->out_func)(device, data, olddata);
|
||||
if (port->out_func.write != NULL)
|
||||
devcb_call_write8(&port->out_func, 0, data);
|
||||
else
|
||||
logerror("%s:6532RIOT chip %s: Port %c is being written to but has no handler. %02X\n", cpuexec_describe_context(device->machine), device->tag, 'A' + (offset & 1), data);
|
||||
}
|
||||
@ -321,9 +322,9 @@ READ8_DEVICE_HANDLER( riot6532_r )
|
||||
else
|
||||
{
|
||||
/* call the input callback if it exists */
|
||||
if (port->in_func != NULL)
|
||||
if (port->in_func.read != NULL)
|
||||
{
|
||||
port->in = (*port->in_func)(device, port->in);
|
||||
port->in = devcb_call_read8(&port->in_func, 0);
|
||||
|
||||
/* changes to port A need to update the PA7 state */
|
||||
if (port == &riot->port[0])
|
||||
@ -437,10 +438,13 @@ static DEVICE_START( riot6532 )
|
||||
riot->index = device_list_index(device->machine->config->devicelist, RIOT6532, device->tag);
|
||||
|
||||
/* configure the ports */
|
||||
riot->port[0].in_func = riot->intf->in_a_func;
|
||||
riot->port[0].out_func = riot->intf->out_a_func;
|
||||
riot->port[1].in_func = riot->intf->in_b_func;
|
||||
riot->port[1].out_func = riot->intf->out_b_func;
|
||||
devcb_resolve_read8(&riot->port[0].in_func, &riot->intf->in_a_func, device);
|
||||
devcb_resolve_write8(&riot->port[0].out_func, &riot->intf->out_a_func, device);
|
||||
devcb_resolve_read8(&riot->port[1].in_func, &riot->intf->in_b_func, device);
|
||||
devcb_resolve_write8(&riot->port[1].out_func, &riot->intf->out_b_func, device);
|
||||
|
||||
/* resolve irq func */
|
||||
devcb_resolve_write_line(&riot->irq_func, &riot->intf->irq_func, device);
|
||||
|
||||
/* allocate timers */
|
||||
riot->timer = timer_alloc(device->machine, timer_end_callback, (void *)device);
|
||||
|
@ -7,24 +7,21 @@
|
||||
#ifndef __RIOT6532_H__
|
||||
#define __RIOT6532_H__
|
||||
|
||||
#include "devcb.h"
|
||||
|
||||
/***************************************************************************
|
||||
TYPE DEFINITIONS
|
||||
***************************************************************************/
|
||||
|
||||
typedef UINT8 (*riot_read_func)(const device_config *device, UINT8 olddata);
|
||||
typedef void (*riot_write_func)(const device_config *device, UINT8 newdata, UINT8 olddata);
|
||||
typedef void (*riot_irq_func)(const device_config *device, int state);
|
||||
|
||||
|
||||
typedef struct _riot6532_interface riot6532_interface;
|
||||
struct _riot6532_interface
|
||||
{
|
||||
riot_read_func in_a_func;
|
||||
riot_read_func in_b_func;
|
||||
riot_write_func out_a_func;
|
||||
riot_write_func out_b_func;
|
||||
riot_irq_func irq_func;
|
||||
devcb_read8 in_a_func;
|
||||
devcb_read8 in_b_func;
|
||||
devcb_write8 out_a_func;
|
||||
devcb_write8 out_b_func;
|
||||
devcb_write_line irq_func;
|
||||
};
|
||||
|
||||
|
||||
|
@ -46,6 +46,7 @@ TODO:
|
||||
If a command is still executing, /READY will be kept high until the command has
|
||||
finished if the next command is written.
|
||||
TMS5220C: see below.
|
||||
tomcat has a 5220 which is not hooked up at all
|
||||
|
||||
Notes:
|
||||
Looping has the tms5220 hookep up directly to the cpu. However currently the
|
||||
|
@ -459,35 +459,46 @@ static void r6532_irq(const device_config *device, int state)
|
||||
}
|
||||
|
||||
|
||||
static void r6532_porta_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( r6532_porta_w )
|
||||
{
|
||||
if (has_mc3417)
|
||||
cputag_set_input_line(device->machine, "cvsdcpu", INPUT_LINE_RESET, (newdata & 0x10) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
cputag_set_input_line(device->machine, "cvsdcpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
|
||||
|
||||
|
||||
static void r6532_portb_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
{
|
||||
if (has_tms5220)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
if (device != NULL)
|
||||
{
|
||||
if ((olddata & 0x01) && !(newdata & 0x01))
|
||||
{
|
||||
riot6532_porta_in_set(riot, tms5220_status_r(tms, 0), 0xff);
|
||||
logerror("(%f)%s:TMS5220 status read = %02X\n", attotime_to_double(timer_get_time(device->machine)), cpuexec_describe_context(device->machine), tms5220_status_r(tms, 0));
|
||||
}
|
||||
if ((olddata & 0x02) && !(newdata & 0x02))
|
||||
{
|
||||
logerror("(%f)%s:TMS5220 data write = %02X\n", attotime_to_double(timer_get_time(device->machine)), cpuexec_describe_context(device->machine), riot6532_porta_out_get(riot));
|
||||
tms5220_data_w(tms, 0, riot6532_porta_out_get(riot));
|
||||
tms5220_data_w(tms, 0, data);
|
||||
}
|
||||
}
|
||||
|
||||
static READ8_DEVICE_HANDLER( r6532_porta_r )
|
||||
{
|
||||
if (has_tms5220)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
logerror("(%f)%s:TMS5220 status read = %02X\n", attotime_to_double(timer_get_time(device->machine)), cpuexec_describe_context(device->machine), tms5220_status_r(tms, 0));
|
||||
return tms5220_status_r(tms, 0);
|
||||
}
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
static WRITE8_DEVICE_HANDLER( r6532_portb_w )
|
||||
{
|
||||
if (has_tms5220)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
|
||||
tms5220_rsq_w(tms, data & 0x01);
|
||||
tms5220_wsq_w(tms, (data >> 1) & 0x01);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static UINT8 r6532_portb_r(const device_config *device, UINT8 olddata)
|
||||
static READ8_DEVICE_HANDLER( r6532_portb_r )
|
||||
{
|
||||
UINT8 newdata = olddata;
|
||||
UINT8 newdata = riot6532_portb_in_get(device);
|
||||
if (has_tms5220)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
@ -501,11 +512,11 @@ static UINT8 r6532_portb_r(const device_config *device, UINT8 olddata)
|
||||
|
||||
static const riot6532_interface r6532_interface =
|
||||
{
|
||||
NULL, /* port A read handler */
|
||||
r6532_portb_r, /* port B read handler */
|
||||
r6532_porta_w, /* port A write handler */
|
||||
r6532_portb_w, /* port B write handler */
|
||||
r6532_irq /* IRQ callback */
|
||||
DEVCB_HANDLER(r6532_porta_r), /* port A read handler */
|
||||
DEVCB_HANDLER(r6532_portb_r), /* port B read handler */
|
||||
DEVCB_HANDLER(r6532_porta_w), /* port A write handler */
|
||||
DEVCB_HANDLER(r6532_portb_w), /* port B write handler */
|
||||
DEVCB_LINE(r6532_irq) /* IRQ callback */
|
||||
};
|
||||
|
||||
|
||||
|
@ -94,32 +94,26 @@ static void gottlieb1_sh_w(const device_config *riot, UINT8 data)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void snd_interrupt(const device_config *device, int state)
|
||||
static WRITE_LINE_DEVICE_HANDLER( snd_interrupt )
|
||||
{
|
||||
cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, state);
|
||||
}
|
||||
|
||||
|
||||
static UINT8 r6532_portb_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
return input_port_read(device->machine, "SB1");
|
||||
}
|
||||
|
||||
|
||||
static void r6532_portb_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( r6532_portb_w )
|
||||
{
|
||||
/* unsure if this is ever used, but the NMI is connected to the RIOT's PB7 */
|
||||
cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, (newdata & 0x80) ? CLEAR_LINE : ASSERT_LINE);
|
||||
cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
static const riot6532_interface gottlieb_riot6532_intf =
|
||||
{
|
||||
NULL,
|
||||
r6532_portb_r,
|
||||
NULL,
|
||||
r6532_portb_w,
|
||||
snd_interrupt
|
||||
DEVCB_NULL,
|
||||
DEVCB_INPUT_PORT("SB1"),
|
||||
DEVCB_NULL,
|
||||
DEVCB_HANDLER(r6532_portb_w),
|
||||
DEVCB_LINE(snd_interrupt)
|
||||
};
|
||||
|
||||
|
||||
|
@ -31,7 +31,7 @@ SOUND_START( starwars )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static UINT8 r6532_porta_r(const device_config *device, UINT8 olddata)
|
||||
static READ8_DEVICE_HANDLER( r6532_porta_r )
|
||||
{
|
||||
/* Configured as follows: */
|
||||
/* d7 (in) Main Ready Flag */
|
||||
@ -44,26 +44,22 @@ static UINT8 r6532_porta_r(const device_config *device, UINT8 olddata)
|
||||
/* d1 (out) TMS5220 Not Read */
|
||||
/* d0 (out) TMS5220 Not Write */
|
||||
/* Note: bit 4 is always set to avoid sound self test */
|
||||
UINT8 olddata = riot6532_porta_in_get(device);
|
||||
|
||||
return (olddata & 0xc0) | 0x10 | (tms5220_readyq_r(devtag_get_device(device->machine, "tms")) << 2);
|
||||
}
|
||||
|
||||
|
||||
static void r6532_porta_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( r6532_porta_w )
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
|
||||
/* handle 5220 read */
|
||||
if ((olddata & 2) != 0 && (newdata & 2) == 0)
|
||||
riot6532_portb_in_set(riot, tms5220_status_r(tms, 0), 0xff);
|
||||
|
||||
tms5220_rsq_w(device, (data & 2)>>1);
|
||||
/* handle 5220 write */
|
||||
if ((olddata & 1) != 0 && (newdata & 1) == 0)
|
||||
tms5220_data_w(tms, 0, riot6532_portb_out_get(riot));
|
||||
tms5220_wsq_w(device, (data & 1)>>0);
|
||||
}
|
||||
|
||||
|
||||
static void snd_interrupt(const device_config *device, int state)
|
||||
static WRITE_LINE_DEVICE_HANDLER( snd_interrupt )
|
||||
{
|
||||
cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, state);
|
||||
}
|
||||
@ -71,11 +67,11 @@ static void snd_interrupt(const device_config *device, int state)
|
||||
|
||||
const riot6532_interface starwars_riot6532_intf =
|
||||
{
|
||||
r6532_porta_r,
|
||||
NULL,
|
||||
r6532_porta_w,
|
||||
NULL,
|
||||
snd_interrupt
|
||||
DEVCB_HANDLER(r6532_porta_r),
|
||||
DEVCB_DEVICE_HANDLER("tms", tms5220_status_r),
|
||||
DEVCB_DEVICE_HANDLER("tms", r6532_porta_w),
|
||||
DEVCB_DEVICE_HANDLER("tms", tms5220_data_w),
|
||||
DEVCB_LINE(snd_interrupt)
|
||||
};
|
||||
|
||||
|
||||
|
@ -289,7 +289,7 @@ static WRITE8_HANDLER( sound_to_main_w )
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static UINT8 riot_porta_r(const device_config *device, UINT8 olddata)
|
||||
static READ8_DEVICE_HANDLER( riot_porta_r )
|
||||
{
|
||||
/* bit 7 = MAINFLAG */
|
||||
/* bit 6 = SOUNDFLAG */
|
||||
@ -300,34 +300,21 @@ static UINT8 riot_porta_r(const device_config *device, UINT8 olddata)
|
||||
/* bit 1 = TMS /read */
|
||||
/* bit 0 = TMS /write */
|
||||
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
return (main_to_sound_flag << 7) | (sound_to_main_flag << 6) | 0x10 | (tms5220_readyq_r(tms) << 2);
|
||||
return (main_to_sound_flag << 7) | (sound_to_main_flag << 6) | 0x10 | (tms5220_readyq_r(device) << 2);
|
||||
}
|
||||
|
||||
static UINT8 riot_portb_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
return tms5220_status_r(tms, 0);
|
||||
}
|
||||
|
||||
static void riot_porta_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( riot_porta_w )
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
|
||||
/* handle 5220 read */
|
||||
tms5220_rsq_w(tms, (newdata>>1) & 1);
|
||||
tms5220_rsq_w(tms, (data>>1) & 1);
|
||||
|
||||
/* handle 5220 write */
|
||||
tms5220_wsq_w(tms, newdata & 1);
|
||||
tms5220_wsq_w(tms, data & 1);
|
||||
}
|
||||
|
||||
static void riot_portb_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
{
|
||||
const device_config *tms = devtag_get_device(device->machine, "tms");
|
||||
tms5220_data_w(tms, 0, newdata);
|
||||
}
|
||||
|
||||
static void riot_irq(const device_config *device, int state)
|
||||
static WRITE_LINE_DEVICE_HANDLER( riot_irq )
|
||||
{
|
||||
cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
@ -647,11 +634,11 @@ GFXDECODE_END
|
||||
|
||||
static const riot6532_interface riot_intf =
|
||||
{
|
||||
riot_porta_r,
|
||||
riot_portb_r,
|
||||
riot_porta_w,
|
||||
riot_portb_w,
|
||||
riot_irq
|
||||
DEVCB_DEVICE_HANDLER("tms", riot_porta_r),
|
||||
DEVCB_DEVICE_HANDLER("tms", tms5220_status_r),
|
||||
DEVCB_DEVICE_HANDLER("tms", riot_porta_w),
|
||||
DEVCB_DEVICE_HANDLER("tms", tms5220_data_w),
|
||||
DEVCB_LINE(riot_irq)
|
||||
};
|
||||
|
||||
|
||||
|
@ -180,7 +180,7 @@ static const via6522_interface via_2_interface =
|
||||
*
|
||||
*************************************/
|
||||
|
||||
static void r6532_irq(const device_config *device, int state)
|
||||
static WRITE_LINE_DEVICE_HANDLER( r6532_irq )
|
||||
{
|
||||
cputag_set_input_line(device->machine, "audiocpu", 0, state);
|
||||
if (state == ASSERT_LINE)
|
||||
@ -188,20 +188,20 @@ static void r6532_irq(const device_config *device, int state)
|
||||
}
|
||||
|
||||
|
||||
static void r6532_soundlatch_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( r6532_soundlatch_w )
|
||||
{
|
||||
const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
|
||||
soundlatch_w(space, 0, newdata);
|
||||
soundlatch_w(space, 0, data);
|
||||
}
|
||||
|
||||
|
||||
static const riot6532_interface r6532_interface =
|
||||
{
|
||||
NULL, /* port A read handler */
|
||||
NULL, /* port B read handler */
|
||||
NULL, /* port A write handler */
|
||||
r6532_soundlatch_w, /* port B write handler */
|
||||
r6532_irq /* IRQ callback */
|
||||
DEVCB_NULL, /* port A read handler */
|
||||
DEVCB_NULL, /* port B read handler */
|
||||
DEVCB_NULL, /* port A write handler */
|
||||
DEVCB_HANDLER(r6532_soundlatch_w), /* port B write handler */
|
||||
DEVCB_LINE(r6532_irq) /* IRQ callback */
|
||||
};
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
- game has no sound, while sound hardware was developed, sound program was
|
||||
not prepared
|
||||
|
||||
ToDo:
|
||||
TODO:
|
||||
- add proper timing of interrupts and framerate (currently commented out,
|
||||
as they cause test mode to hang)
|
||||
- vector quality appears to be worse than original game (compared to original
|
||||
@ -18,6 +18,7 @@
|
||||
- current implementation of 68010 <-> tms32010 is a little bit hacky, after
|
||||
tms32010 is started by 68010, 68010 is suspended until tms32010 reads command
|
||||
and starts executing
|
||||
- hook up tms5220 - it is currently not used at all
|
||||
|
||||
*/
|
||||
|
||||
@ -354,7 +355,7 @@ static NVRAM_HANDLER(tomcat)
|
||||
|
||||
static const riot6532_interface tomcat_riot6532_intf =
|
||||
{
|
||||
NULL,
|
||||
DEVCB_NULL,
|
||||
/*
|
||||
PA0 = /WS OUTPUT (TMS-5220 WRITE STROBE)
|
||||
PA1 = /RS OUTPUT (TMS-5220 READ STROBE)
|
||||
@ -367,10 +368,10 @@ static const riot6532_interface tomcat_riot6532_intf =
|
||||
PA6 = /MUSRES OUTPUT (Reset the Yamaha)
|
||||
PA7 = MAINFLAG INPUT
|
||||
*/
|
||||
NULL,
|
||||
NULL,
|
||||
NULL, // PB0 - PB7 OUTPUT Speech Data
|
||||
NULL // connected to IRQ line of 6502
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL, // PB0 - PB7 OUTPUT Speech Data
|
||||
DEVCB_NULL // connected to IRQ line of 6502
|
||||
};
|
||||
|
||||
static MACHINE_DRIVER_START(tomcat)
|
||||
|
@ -16,14 +16,14 @@
|
||||
#define MASTER_CLOCK 3579575
|
||||
|
||||
|
||||
static void tourtabl_led_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( tourtabl_led_w )
|
||||
{
|
||||
set_led_status(0, newdata & 0x40); /* start 1 */
|
||||
set_led_status(1, newdata & 0x20); /* start 2 */
|
||||
set_led_status(2, newdata & 0x10); /* start 4 */
|
||||
set_led_status(3, newdata & 0x80); /* select game */
|
||||
set_led_status(0, data & 0x40); /* start 1 */
|
||||
set_led_status(1, data & 0x20); /* start 2 */
|
||||
set_led_status(2, data & 0x10); /* start 4 */
|
||||
set_led_status(3, data & 0x80); /* select game */
|
||||
|
||||
coin_lockout_global_w(!(newdata & 0x80));
|
||||
coin_lockout_global_w(!(data & 0x80));
|
||||
}
|
||||
|
||||
|
||||
@ -51,48 +51,28 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static UINT8 port6_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
return input_port_read(device->machine, "RIOT0_SWA");
|
||||
}
|
||||
|
||||
static UINT8 port7_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
return input_port_read(device->machine, "RIOT0_SWB");
|
||||
}
|
||||
|
||||
static UINT8 port8_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
return input_port_read(device->machine, "RIOT1_SWA");
|
||||
}
|
||||
|
||||
static UINT8 port9_r(const device_config *device, UINT8 olddata)
|
||||
{
|
||||
return input_port_read(device->machine, "RIOT1_SWB");
|
||||
}
|
||||
|
||||
static void watchdog_w(const device_config *device, UINT8 newdata, UINT8 olddata)
|
||||
static WRITE8_DEVICE_HANDLER( watchdog_w )
|
||||
{
|
||||
watchdog_reset(device->machine);
|
||||
}
|
||||
|
||||
static const riot6532_interface r6532_interface_0 =
|
||||
{
|
||||
port6_r,
|
||||
port7_r,
|
||||
NULL,
|
||||
watchdog_w,
|
||||
NULL
|
||||
DEVCB_INPUT_PORT("RIOT0_SWA"), /* Port 6 */
|
||||
DEVCB_INPUT_PORT("RIOT0_SWB"), /* Port 7 */
|
||||
DEVCB_NULL,
|
||||
DEVCB_HANDLER(watchdog_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
static const riot6532_interface r6532_interface_1 =
|
||||
{
|
||||
port8_r,
|
||||
port9_r,
|
||||
NULL,
|
||||
tourtabl_led_w,
|
||||
NULL
|
||||
DEVCB_INPUT_PORT("RIOT1_SWA"), /* Port 8 */
|
||||
DEVCB_INPUT_PORT("RIOT1_SWB"), /* Port 9 */
|
||||
DEVCB_NULL,
|
||||
DEVCB_HANDLER(tourtabl_led_w),
|
||||
DEVCB_NULL
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user