diff options
Diffstat (limited to 'src/emu/machine/6532riot.h')
-rw-r--r-- | src/emu/machine/6532riot.h | 136 |
1 files changed, 62 insertions, 74 deletions
diff --git a/src/emu/machine/6532riot.h b/src/emu/machine/6532riot.h index e757e97c141..5adaf26e497 100644 --- a/src/emu/machine/6532riot.h +++ b/src/emu/machine/6532riot.h @@ -4,84 +4,72 @@ ***************************************************************************/ -#ifndef RIOT_6532 -#define RIOT_6532 +#ifndef __RIOT6532_H__ +#define __RIOT6532_H__ -#define MAX_R6532 8 -struct riot6532_interface +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +typedef struct _riot6532_config riot6532_config; +struct _riot6532_config +{ + UINT32 clock; +}; + + +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 { - read8_machine_func in_a_func; - read8_machine_func in_b_func; - write8_machine_func out_a_func; - write8_machine_func out_b_func; - void (*irq_func)(running_machine *machine, int state); + 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; }; -void r6532_set_clock(int which, int clock); -void r6532_reset(running_machine *machine, int which); -void r6532_config(running_machine *machine, int which, const struct riot6532_interface* intf); -UINT8 r6532_read(running_machine *machine, int which, offs_t offset); -void r6532_write(running_machine *machine, int which, offs_t offset, UINT8 data); -void r6532_set_input_a(running_machine *machine, int which, UINT8 data); -void r6532_set_input_b(int which, UINT8 data); - -/******************* Standard 8-bit CPU interfaces, D0-D7 *******************/ - -READ8_HANDLER( r6532_0_r ); -READ8_HANDLER( r6532_1_r ); -READ8_HANDLER( r6532_2_r ); -READ8_HANDLER( r6532_3_r ); -READ8_HANDLER( r6532_4_r ); -READ8_HANDLER( r6532_5_r ); -READ8_HANDLER( r6532_6_r ); -READ8_HANDLER( r6532_7_r ); - -WRITE8_HANDLER( r6532_0_w ); -WRITE8_HANDLER( r6532_1_w ); -WRITE8_HANDLER( r6532_2_w ); -WRITE8_HANDLER( r6532_3_w ); -WRITE8_HANDLER( r6532_4_w ); -WRITE8_HANDLER( r6532_5_w ); -WRITE8_HANDLER( r6532_6_w ); -WRITE8_HANDLER( r6532_7_w ); - -/******************* 8-bit A/B port interfaces *******************/ - -WRITE8_HANDLER( r6532_0_porta_w ); -WRITE8_HANDLER( r6532_1_porta_w ); -WRITE8_HANDLER( r6532_2_porta_w ); -WRITE8_HANDLER( r6532_3_porta_w ); -WRITE8_HANDLER( r6532_4_porta_w ); -WRITE8_HANDLER( r6532_5_porta_w ); -WRITE8_HANDLER( r6532_6_porta_w ); -WRITE8_HANDLER( r6532_7_porta_w ); - -WRITE8_HANDLER( r6532_0_portb_w ); -WRITE8_HANDLER( r6532_1_portb_w ); -WRITE8_HANDLER( r6532_2_portb_w ); -WRITE8_HANDLER( r6532_3_portb_w ); -WRITE8_HANDLER( r6532_4_portb_w ); -WRITE8_HANDLER( r6532_5_portb_w ); -WRITE8_HANDLER( r6532_6_portb_w ); -WRITE8_HANDLER( r6532_7_portb_w ); - -READ8_HANDLER( r6532_0_porta_r ); -READ8_HANDLER( r6532_1_porta_r ); -READ8_HANDLER( r6532_2_porta_r ); -READ8_HANDLER( r6532_3_porta_r ); -READ8_HANDLER( r6532_4_porta_r ); -READ8_HANDLER( r6532_5_porta_r ); -READ8_HANDLER( r6532_6_porta_r ); -READ8_HANDLER( r6532_7_porta_r ); - -READ8_HANDLER( r6532_0_portb_r ); -READ8_HANDLER( r6532_1_portb_r ); -READ8_HANDLER( r6532_2_portb_r ); -READ8_HANDLER( r6532_3_portb_r ); -READ8_HANDLER( r6532_4_portb_r ); -READ8_HANDLER( r6532_5_portb_r ); -READ8_HANDLER( r6532_6_portb_r ); -READ8_HANDLER( r6532_7_portb_r ); + + +/*************************************************************************** + DEVICE CONFIGURATION MACROS +***************************************************************************/ + +#define MDRV_RIOT6532_ADD(_tag, _clock, _intrf) \ + MDRV_DEVICE_ADD(_tag, RIOT6532) \ + MDRV_DEVICE_CONFIG_DATA32(riot6532_config, clock, _clock) \ + MDRV_DEVICE_CONFIG(_intrf) + +#define MDRV_RIOT6532_REMOVE(_tag) \ + MDRV_DEVICE_REMOVE(_tag, RIOT6532) + + + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +READ8_DEVICE_HANDLER( riot6532_r ); +WRITE8_DEVICE_HANDLER( riot6532_w ); + +void riot6532_porta_in_set(const device_config *device, UINT8 data, UINT8 mask); +void riot6532_portb_in_set(const device_config *device, UINT8 data, UINT8 mask); + +UINT8 riot6532_porta_in_get(const device_config *device); +UINT8 riot6532_portb_in_get(const device_config *device); + +UINT8 riot6532_porta_out_get(const device_config *device); +UINT8 riot6532_portb_out_get(const device_config *device); + + +/* ----- device interface ----- */ + +#define RIOT6532 DEVICE_GET_INFO_NAME(riot6532) +DEVICE_GET_INFO( riot6532 ); #endif |