summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/z80pio.h
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2010-02-17 11:02:33 +0000
committer Curt Coder <curtcoder@mail.com>2010-02-17 11:02:33 +0000
commit24daf75e0244586a4434e49fa3309fc79138900c (patch)
treefd5e7f0bdad76a4422acad6c2bf1ecbaf537ac18 /src/emu/machine/z80pio.h
parent3a53e7d5ddfba7268c1f6db2070c327148e0d416 (diff)
Complete rewrite of the Z80-PIO implementation. The handshaking signals are now more accurately emulated. As a result, the Merit Megatouch games are no longer working since they relied on the earlier incorrect behavior. [Curt Coder]
Diffstat (limited to 'src/emu/machine/z80pio.h')
-rw-r--r--src/emu/machine/z80pio.h99
1 files changed, 43 insertions, 56 deletions
diff --git a/src/emu/machine/z80pio.h b/src/emu/machine/z80pio.h
index 90d0c47e794..9c4cc047698 100644
--- a/src/emu/machine/z80pio.h
+++ b/src/emu/machine/z80pio.h
@@ -1,6 +1,6 @@
/***************************************************************************
- Z80 PIO (Z8420) implementation
+ Zilog Z80 Parallel Input/Output Controller implementation
Copyright Nicola Salmoria and the MAME Team.
Visit http://mamedev.org for licensing and usage restrictions.
@@ -16,8 +16,8 @@
PA7 7 | | 34 PB7
PA6 8 | | 33 PB6
PA5 9 | | 32 PB5
- PA4 10 | Z80-PIO | 31 PB4
- GND 11 | | 30 PB3
+ PA4 10 | Z8420 | 31 PB4
+ GND 11 | | 30 PB3
PA3 12 | | 29 PB2
PA2 13 | | 28 PB1
PA1 14 | | 27 PB0
@@ -30,10 +30,21 @@
***************************************************************************/
-#ifndef __Z80PIO_H__
-#define __Z80PIO_H__
+#ifndef __Z80PIO__
+#define __Z80PIO__
+/***************************************************************************
+ MACROS / CONSTANTS
+***************************************************************************/
+
+#define Z80PIO DEVICE_GET_INFO_NAME(z80pio)
+
+#define MDRV_Z80PIO_ADD(_tag, _clock, _intrf) \
+ MDRV_DEVICE_ADD(_tag, Z80PIO, _clock) \
+ MDRV_DEVICE_CONFIG(_intrf)
+#define Z80PIO_INTERFACE(_name) \
+ const z80pio_interface (_name) =
/***************************************************************************
TYPE DEFINITIONS
@@ -42,71 +53,47 @@
typedef struct _z80pio_interface z80pio_interface;
struct _z80pio_interface
{
- devcb_write_line intr; /* callback when change interrupt status */
- devcb_read8 portAread; /* port A read callback */
- devcb_read8 portBread; /* port B read callback */
- devcb_write8 portAwrite; /* port A write callback */
- devcb_write8 portBwrite; /* port B write callback */
- devcb_write_line rdyA; /* portA ready active callback */
- devcb_write_line rdyB; /* portB ready active callback */
-};
+ devcb_write_line out_int_func;
+ devcb_read8 in_pa_func;
+ devcb_write8 out_pa_func;
+ devcb_write_line out_ardy_func;
+ devcb_read8 in_pb_func;
+ devcb_write8 out_pb_func;
+ devcb_write_line out_brdy_func;
+};
/***************************************************************************
- DEVICE CONFIGURATION MACROS
+ PROTOTYPES
***************************************************************************/
-#define MDRV_Z80PIO_ADD(_tag, _intrf) \
- MDRV_DEVICE_ADD(_tag, Z80PIO, 0) \
- MDRV_DEVICE_CONFIG(_intrf)
-
-
-
-/***************************************************************************
- CONTROL REGISTER READ/WRITE
-***************************************************************************/
+DEVICE_GET_INFO( z80pio );
-WRITE8_DEVICE_HANDLER( z80pio_c_w );
+/* control register access */
READ8_DEVICE_HANDLER( z80pio_c_r );
+WRITE8_DEVICE_HANDLER( z80pio_c_w );
-
-/***************************************************************************
- DATA REGISTER READ/WRITE
-***************************************************************************/
-
-WRITE8_DEVICE_HANDLER( z80pio_d_w );
+/* data register access */
READ8_DEVICE_HANDLER( z80pio_d_r );
+WRITE8_DEVICE_HANDLER( z80pio_d_w );
+/* register access */
+READ8_DEVICE_HANDLER( z80pio_cd_ba_r );
+WRITE8_DEVICE_HANDLER( z80pio_cd_ba_w );
-/***************************************************************************
- PORT I/O
-***************************************************************************/
-
-WRITE8_DEVICE_HANDLER( z80pio_p_w );
-READ8_DEVICE_HANDLER( z80pio_p_r );
-
-
-/***************************************************************************
- STROBE STATE MANAGEMENT
-***************************************************************************/
-
-void z80pio_astb_w(running_device *device, int state);
-void z80pio_bstb_w(running_device *device, int state);
+READ8_DEVICE_HANDLER( z80pio_ba_cd_r );
+WRITE8_DEVICE_HANDLER( z80pio_ba_cd_w );
+/* port access */
+READ8_DEVICE_HANDLER( z80pio_pa_r );
+WRITE8_DEVICE_HANDLER( z80pio_pa_w );
-/***************************************************************************
- READ/WRITE HANDLERS
-***************************************************************************/
-READ8_DEVICE_HANDLER(z80pio_r);
-WRITE8_DEVICE_HANDLER(z80pio_w);
-READ8_DEVICE_HANDLER(z80pio_alt_r);
-WRITE8_DEVICE_HANDLER(z80pio_alt_w);
+READ8_DEVICE_HANDLER( z80pio_pb_r );
+WRITE8_DEVICE_HANDLER( z80pio_pb_w );
-
-/* ----- device interface ----- */
-
-#define Z80PIO DEVICE_GET_INFO_NAME(z80pio)
-DEVICE_GET_INFO( z80pio );
+/* strobe */
+WRITE_LINE_DEVICE_HANDLER( z80pio_astb_w );
+WRITE_LINE_DEVICE_HANDLER( z80pio_bstb_w );
#endif