summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2009-03-02 09:31:05 +0000
committer Aaron Giles <aaron@aarongiles.com>2009-03-02 09:31:05 +0000
commit4ad8ec54f87813301e92291447feb34893c8b417 (patch)
treeef1dbc28bb8ec85d64e6264596e4cf02b08c75a2 /src
parentbd35db8db486045caa35019ab3ff2818fada6596 (diff)
Converted the following drivers to the new device-based 6821 PIA:
- qix - mcr/williams - coinmstr - funworld - goldnpkr - jokrwild - nyny - r2dtank - spiders - tugboat Added new function memory_install_read_port_handler() to more easily allow you to install read handlers for ports based on tag. Removed input_port_read_handler8/16/32/64 functions, since they were really only used for getting a memory handler for a port by tag, and this is no longer necessary. Moved input port handlers to internal code in the memory system. Added port names to the taito8741 device pending its proper devicification. Removed all remaining uses of input_port_n_r() functions, and purged them from src/emu/machine/generic.
Diffstat (limited to 'src')
-rw-r--r--src/emu/inptport.c78
-rw-r--r--src/emu/inptport.h6
-rw-r--r--src/emu/machine/generic.c125
-rw-r--r--src/emu/machine/generic.h104
-rw-r--r--src/emu/memory.c80
-rw-r--r--src/emu/memory.h3
-rw-r--r--src/mame/audio/mcr.c225
-rw-r--r--src/mame/audio/mcr.h3
-rw-r--r--src/mame/audio/qix.c162
-rw-r--r--src/mame/audio/spiders.c31
-rw-r--r--src/mame/drivers/arkanoid.c2
-rw-r--r--src/mame/drivers/asteroid.c4
-rw-r--r--src/mame/drivers/astrocde.c14
-rw-r--r--src/mame/drivers/ataxx.c24
-rw-r--r--src/mame/drivers/bzone.c4
-rw-r--r--src/mame/drivers/coinmstr.c468
-rw-r--r--src/mame/drivers/combatsc.c2
-rw-r--r--src/mame/drivers/dominob.c2
-rw-r--r--src/mame/drivers/exidy440.c4
-rw-r--r--src/mame/drivers/funworld.c94
-rw-r--r--src/mame/drivers/galaxian.c8
-rw-r--r--src/mame/drivers/goldnpkr.c226
-rw-r--r--src/mame/drivers/gsword.c3
-rw-r--r--src/mame/drivers/himesiki.c10
-rw-r--r--src/mame/drivers/itech8.c10
-rw-r--r--src/mame/drivers/jalmah.c4
-rw-r--r--src/mame/drivers/jokrwild.c53
-rw-r--r--src/mame/drivers/konamigv.c10
-rw-r--r--src/mame/drivers/leland.c18
-rw-r--r--src/mame/drivers/liberate.c2
-rw-r--r--src/mame/drivers/mcr68.c20
-rw-r--r--src/mame/drivers/megatech.c2
-rw-r--r--src/mame/drivers/mitchell.c6
-rw-r--r--src/mame/drivers/namcos23.c20
-rw-r--r--src/mame/drivers/neodrvr.c10
-rw-r--r--src/mame/drivers/nyny.c101
-rw-r--r--src/mame/drivers/phoenix.c2
-rw-r--r--src/mame/drivers/polepos.c6
-rw-r--r--src/mame/drivers/qix.c78
-rw-r--r--src/mame/drivers/r2dtank.c96
-rw-r--r--src/mame/drivers/segae.c10
-rw-r--r--src/mame/drivers/spiders.c146
-rw-r--r--src/mame/drivers/toaplan2.c6
-rw-r--r--src/mame/drivers/tugboat.c62
-rw-r--r--src/mame/drivers/williams.c8
-rw-r--r--src/mame/drivers/zaxxon.c6
-rw-r--r--src/mame/includes/mcr.h5
-rw-r--r--src/mame/includes/qix.h18
-rw-r--r--src/mame/includes/spiders.h8
-rw-r--r--src/mame/machine/mcr.c112
-rw-r--r--src/mame/machine/midyunit.c1
-rw-r--r--src/mame/machine/qix.c361
-rw-r--r--src/mame/machine/tait8741.c22
-rw-r--r--src/mame/machine/tait8741.h3
-rw-r--r--src/mame/machine/tnzs.c6
-rw-r--r--src/mame/video/qix.c10
56 files changed, 1498 insertions, 1406 deletions
diff --git a/src/emu/inptport.c b/src/emu/inptport.c
index ba12073bf87..7b73e898d49 100644
--- a/src/emu/inptport.c
+++ b/src/emu/inptport.c
@@ -286,50 +286,6 @@ static const char *const seqtypestrings[] = { "standard", "decrement", "incremen
/***************************************************************************
- PORT HANDLER TABLES
-***************************************************************************/
-
-static const read8_space_func port_handler8[] =
-{
- input_port_0_r, input_port_1_r, input_port_2_r, input_port_3_r,
- input_port_4_r, input_port_5_r, input_port_6_r, input_port_7_r,
- input_port_8_r, input_port_9_r, input_port_10_r, input_port_11_r,
- input_port_12_r, input_port_13_r, input_port_14_r, input_port_15_r,
- input_port_16_r, input_port_17_r, input_port_18_r, input_port_19_r,
- input_port_20_r, input_port_21_r, input_port_22_r, input_port_23_r,
- input_port_24_r, input_port_25_r, input_port_26_r, input_port_27_r,
- input_port_28_r, input_port_29_r, input_port_30_r, input_port_31_r
-};
-
-
-static const read16_space_func port_handler16[] =
-{
- input_port_0_word_r, input_port_1_word_r, input_port_2_word_r, input_port_3_word_r,
- input_port_4_word_r, input_port_5_word_r, input_port_6_word_r, input_port_7_word_r,
- input_port_8_word_r, input_port_9_word_r, input_port_10_word_r, input_port_11_word_r,
- input_port_12_word_r, input_port_13_word_r, input_port_14_word_r, input_port_15_word_r,
- input_port_16_word_r, input_port_17_word_r, input_port_18_word_r, input_port_19_word_r,
- input_port_20_word_r, input_port_21_word_r, input_port_22_word_r, input_port_23_word_r,
- input_port_24_word_r, input_port_25_word_r, input_port_26_word_r, input_port_27_word_r,
- input_port_28_word_r, input_port_29_word_r, input_port_30_word_r, input_port_31_word_r
-};
-
-
-static const read32_space_func port_handler32[] =
-{
- input_port_0_dword_r, input_port_1_dword_r, input_port_2_dword_r, input_port_3_dword_r,
- input_port_4_dword_r, input_port_5_dword_r, input_port_6_dword_r, input_port_7_dword_r,
- input_port_8_dword_r, input_port_9_dword_r, input_port_10_dword_r, input_port_11_dword_r,
- input_port_12_dword_r, input_port_13_dword_r, input_port_14_dword_r, input_port_15_dword_r,
- input_port_16_dword_r, input_port_17_dword_r, input_port_18_dword_r, input_port_19_dword_r,
- input_port_20_dword_r, input_port_21_dword_r, input_port_22_dword_r, input_port_23_dword_r,
- input_port_24_dword_r, input_port_25_dword_r, input_port_26_dword_r, input_port_27_dword_r,
- input_port_28_dword_r, input_port_29_dword_r, input_port_30_dword_r, input_port_31_dword_r
-};
-
-
-
-/***************************************************************************
COMMON SHARED STRINGS
***************************************************************************/
@@ -1524,40 +1480,6 @@ const char *input_port_string_from_token(const input_port_token token)
-/*-------------------------------------------------
- input_port_read_handler* - return a memory
- handler corresponding to a given input port
- tag
--------------------------------------------------*/
-
-read8_space_func input_port_read_handler8(const input_port_config *portlist, const char *tag)
-{
- int portnum = get_port_index(portlist, tag);
- return (portnum == -1) ? SMH_NOP : port_handler8[portnum];
-}
-
-
-read16_space_func input_port_read_handler16(const input_port_config *portlist, const char *tag)
-{
- int portnum = get_port_index(portlist, tag);
- return (portnum == -1) ? SMH_NOP : port_handler16[portnum];
-}
-
-
-read32_space_func input_port_read_handler32(const input_port_config *portlist, const char *tag)
-{
- int portnum = get_port_index(portlist, tag);
- return (portnum == -1) ? SMH_NOP : port_handler32[portnum];
-}
-
-
-read64_space_func input_port_read_handler64(const input_port_config *portlist, const char *tag)
-{
- return SMH_NOP;
-}
-
-
-
/***************************************************************************
INITIALIZATION HELPERS
***************************************************************************/
diff --git a/src/emu/inptport.h b/src/emu/inptport.h
index 796f22495c1..a53a55e44be 100644
--- a/src/emu/inptport.h
+++ b/src/emu/inptport.h
@@ -1029,11 +1029,5 @@ int input_condition_true(running_machine *machine, const input_condition *condit
/* convert an input_port_token to a default string */
const char *input_port_string_from_token(const input_port_token token);
-/* return a memory handler corresponding to a given input port tag */
-read8_space_func input_port_read_handler8(const input_port_config *portlist, const char *tag);
-read16_space_func input_port_read_handler16(const input_port_config *portlist, const char *tag);
-read32_space_func input_port_read_handler32(const input_port_config *portlist, const char *tag);
-read64_space_func input_port_read_handler64(const input_port_config *portlist, const char *tag);
-
#endif /* __INPTPORT_H__ */
diff --git a/src/emu/machine/generic.c b/src/emu/machine/generic.c
index ca1577fa7f9..776e6de9efb 100644
--- a/src/emu/machine/generic.c
+++ b/src/emu/machine/generic.c
@@ -762,131 +762,6 @@ READ32_HANDLER( watchdog_reset32_r ) { watchdog_reset(space->machine); return 0x
***************************************************************************/
/*-------------------------------------------------
- input_port_read_indexed - return the value of
- an input port specified by index
--------------------------------------------------*/
-
-static input_port_value input_port_read_indexed(running_machine *machine, int portnum)
-{
- const input_port_config *port = input_port_by_index(machine->portconfig, portnum);
- return (port == NULL) ? 0 : input_port_read_direct(port);
-}
-
-
-/*-------------------------------------------------
- 8-bit read handlers
--------------------------------------------------*/
-
-READ8_HANDLER( input_port_0_r ) { return input_port_read_indexed(space->machine, 0); }
-READ8_HANDLER( input_port_1_r ) { return input_port_read_indexed(space->machine, 1); }
-READ8_HANDLER( input_port_2_r ) { return input_port_read_indexed(space->machine, 2); }
-READ8_HANDLER( input_port_3_r ) { return input_port_read_indexed(space->machine, 3); }
-READ8_HANDLER( input_port_4_r ) { return input_port_read_indexed(space->machine, 4); }
-READ8_HANDLER( input_port_5_r ) { return input_port_read_indexed(space->machine, 5); }
-READ8_HANDLER( input_port_6_r ) { return input_port_read_indexed(space->machine, 6); }
-READ8_HANDLER( input_port_7_r ) { return input_port_read_indexed(space->machine, 7); }
-READ8_HANDLER( input_port_8_r ) { return input_port_read_indexed(space->machine, 8); }
-READ8_HANDLER( input_port_9_r ) { return input_port_read_indexed(space->machine, 9); }
-READ8_HANDLER( input_port_10_r ) { return input_port_read_indexed(space->machine, 10); }
-READ8_HANDLER( input_port_11_r ) { return input_port_read_indexed(space->machine, 11); }
-READ8_HANDLER( input_port_12_r ) { return input_port_read_indexed(space->machine, 12); }
-READ8_HANDLER( input_port_13_r ) { return input_port_read_indexed(space->machine, 13); }
-READ8_HANDLER( input_port_14_r ) { return input_port_read_indexed(space->machine, 14); }
-READ8_HANDLER( input_port_15_r ) { return input_port_read_indexed(space->machine, 15); }
-READ8_HANDLER( input_port_16_r ) { return input_port_read_indexed(space->machine, 16); }
-READ8_HANDLER( input_port_17_r ) { return input_port_read_indexed(space->machine, 17); }
-READ8_HANDLER( input_port_18_r ) { return input_port_read_indexed(space->machine, 18); }
-READ8_HANDLER( input_port_19_r ) { return input_port_read_indexed(space->machine, 19); }
-READ8_HANDLER( input_port_20_r ) { return input_port_read_indexed(space->machine, 20); }
-READ8_HANDLER( input_port_21_r ) { return input_port_read_indexed(space->machine, 21); }
-READ8_HANDLER( input_port_22_r ) { return input_port_read_indexed(space->machine, 22); }
-READ8_HANDLER( input_port_23_r ) { return input_port_read_indexed(space->machine, 23); }
-READ8_HANDLER( input_port_24_r ) { return input_port_read_indexed(space->machine, 24); }
-READ8_HANDLER( input_port_25_r ) { return input_port_read_indexed(space->machine, 25); }
-READ8_HANDLER( input_port_26_r ) { return input_port_read_indexed(space->machine, 26); }
-READ8_HANDLER( input_port_27_r ) { return input_port_read_indexed(space->machine, 27); }
-READ8_HANDLER( input_port_28_r ) { return input_port_read_indexed(space->machine, 28); }
-READ8_HANDLER( input_port_29_r ) { return input_port_read_indexed(space->machine, 29); }
-READ8_HANDLER( input_port_30_r ) { return input_port_read_indexed(space->machine, 30); }
-READ8_HANDLER( input_port_31_r ) { return input_port_read_indexed(space->machine, 31); }
-
-
-/*-------------------------------------------------
- 16-bit read handlers
--------------------------------------------------*/
-
-READ16_HANDLER( input_port_0_word_r ) { return input_port_read_indexed(space->machine, 0); }
-READ16_HANDLER( input_port_1_word_r ) { return input_port_read_indexed(space->machine, 1); }
-READ16_HANDLER( input_port_2_word_r ) { return input_port_read_indexed(space->machine, 2); }
-READ16_HANDLER( input_port_3_word_r ) { return input_port_read_indexed(space->machine, 3); }
-READ16_HANDLER( input_port_4_word_r ) { return input_port_read_indexed(space->machine, 4); }
-READ16_HANDLER( input_port_5_word_r ) { return input_port_read_indexed(space->machine, 5); }
-READ16_HANDLER( input_port_6_word_r ) { return input_port_read_indexed(space->machine, 6); }
-READ16_HANDLER( input_port_7_word_r ) { return input_port_read_indexed(space->machine, 7); }
-READ16_HANDLER( input_port_8_word_r ) { return input_port_read_indexed(space->machine, 8); }
-READ16_HANDLER( input_port_9_word_r ) { return input_port_read_indexed(space->machine, 9); }
-READ16_HANDLER( input_port_10_word_r ) { return input_port_read_indexed(space->machine, 10); }
-READ16_HANDLER( input_port_11_word_r ) { return input_port_read_indexed(space->machine, 11); }
-READ16_HANDLER( input_port_12_word_r ) { return input_port_read_indexed(space->machine, 12); }
-READ16_HANDLER( input_port_13_word_r ) { return input_port_read_indexed(space->machine, 13); }
-READ16_HANDLER( input_port_14_word_r ) { return input_port_read_indexed(space->machine, 14); }
-READ16_HANDLER( input_port_15_word_r ) { return input_port_read_indexed(space->machine, 15); }
-READ16_HANDLER( input_port_16_word_r ) { return input_port_read_indexed(space->machine, 16); }
-READ16_HANDLER( input_port_17_word_r ) { return input_port_read_indexed(space->machine, 17); }
-READ16_HANDLER( input_port_18_word_r ) { return input_port_read_indexed(space->machine, 18); }
-READ16_HANDLER( input_port_19_word_r ) { return input_port_read_indexed(space->machine, 19); }
-READ16_HANDLER( input_port_20_word_r ) { return input_port_read_indexed(space->machine, 20); }
-READ16_HANDLER( input_port_21_word_r ) { return input_port_read_indexed(space->machine, 21); }
-READ16_HANDLER( input_port_22_word_r ) { return input_port_read_indexed(space->machine, 22); }
-READ16_HANDLER( input_port_23_word_r ) { return input_port_read_indexed(space->machine, 23); }
-READ16_HANDLER( input_port_24_word_r ) { return input_port_read_indexed(space->machine, 24); }
-READ16_HANDLER( input_port_25_word_r ) { return input_port_read_indexed(space->machine, 25); }
-READ16_HANDLER( input_port_26_word_r ) { return input_port_read_indexed(space->machine, 26); }
-READ16_HANDLER( input_port_27_word_r ) { return input_port_read_indexed(space->machine, 27); }
-READ16_HANDLER( input_port_28_word_r ) { return input_port_read_indexed(space->machine, 28); }
-READ16_HANDLER( input_port_29_word_r ) { return input_port_read_indexed(space->machine, 29); }
-READ16_HANDLER( input_port_30_word_r ) { return input_port_read_indexed(space->machine, 30); }
-READ16_HANDLER( input_port_31_word_r ) { return input_port_read_indexed(space->machine, 31); }
-
-
-/*-------------------------------------------------
- 32-bit read handlers
--------------------------------------------------*/
-
-READ32_HANDLER( input_port_0_dword_r ) { return input_port_read_indexed(space->machine, 0); }
-READ32_HANDLER( input_port_1_dword_r ) { return input_port_read_indexed(space->machine, 1); }
-READ32_HANDLER( input_port_2_dword_r ) { return input_port_read_indexed(space->machine, 2); }
-READ32_HANDLER( input_port_3_dword_r ) { return input_port_read_indexed(space->machine, 3); }
-READ32_HANDLER( input_port_4_dword_r ) { return input_port_read_indexed(space->machine, 4); }
-READ32_HANDLER( input_port_5_dword_r ) { return input_port_read_indexed(space->machine, 5); }
-READ32_HANDLER( input_port_6_dword_r ) { return input_port_read_indexed(space->machine, 6); }
-READ32_HANDLER( input_port_7_dword_r ) { return input_port_read_indexed(space->machine, 7); }
-READ32_HANDLER( input_port_8_dword_r ) { return input_port_read_indexed(space->machine, 8); }
-READ32_HANDLER( input_port_9_dword_r ) { return input_port_read_indexed(space->machine, 9); }
-READ32_HANDLER( input_port_10_dword_r ) { return input_port_read_indexed(space->machine, 10); }
-READ32_HANDLER( input_port_11_dword_r ) { return input_port_read_indexed(space->machine, 11); }
-READ32_HANDLER( input_port_12_dword_r ) { return input_port_read_indexed(space->machine, 12); }
-READ32_HANDLER( input_port_13_dword_r ) { return input_port_read_indexed(space->machine, 13); }
-READ32_HANDLER( input_port_14_dword_r ) { return input_port_read_indexed(space->machine, 14); }
-READ32_HANDLER( input_port_15_dword_r ) { return input_port_read_indexed(space->machine, 15); }
-READ32_HANDLER( input_port_16_dword_r ) { return input_port_read_indexed(space->machine, 16); }
-READ32_HANDLER( input_port_17_dword_r ) { return input_port_read_indexed(space->machine, 17); }
-READ32_HANDLER( input_port_18_dword_r ) { return input_port_read_indexed(space->machine, 18); }
-READ32_HANDLER( input_port_19_dword_r ) { return input_port_read_indexed(space->machine, 19); }
-READ32_HANDLER( input_port_20_dword_r ) { return input_port_read_indexed(space->machine, 20); }
-READ32_HANDLER( input_port_21_dword_r ) { return input_port_read_indexed(space->machine, 21); }
-READ32_HANDLER( input_port_22_dword_r ) { return input_port_read_indexed(space->machine, 22); }
-READ32_HANDLER( input_port_23_dword_r ) { return input_port_read_indexed(space->machine, 23); }
-READ32_HANDLER( input_port_24_dword_r ) { return input_port_read_indexed(space->machine, 24); }
-READ32_HANDLER( input_port_25_dword_r ) { return input_port_read_indexed(space->machine, 25); }
-READ32_HANDLER( input_port_26_dword_r ) { return input_port_read_indexed(space->machine, 26); }
-READ32_HANDLER( input_port_27_dword_r ) { return input_port_read_indexed(space->machine, 27); }
-READ32_HANDLER( input_port_28_dword_r ) { return input_port_read_indexed(space->machine, 28); }
-READ32_HANDLER( input_port_29_dword_r ) { return input_port_read_indexed(space->machine, 29); }
-READ32_HANDLER( input_port_30_dword_r ) { return input_port_read_indexed(space->machine, 30); }
-READ32_HANDLER( input_port_31_dword_r ) { return input_port_read_indexed(space->machine, 31); }
-
-/*-------------------------------------------------
custom_port_read - act like input_port_read
but it is a custom port, it is useful for
e.g. input ports which expect the same port
diff --git a/src/emu/machine/generic.h b/src/emu/machine/generic.h
index 60de3df8596..1fd3fa62a18 100644
--- a/src/emu/machine/generic.h
+++ b/src/emu/machine/generic.h
@@ -182,109 +182,7 @@ READ32_HANDLER( watchdog_reset32_r );
-/* ----- generic input port read handlers ----- */
-
-/* 8-bit handlers */
-READ8_HANDLER( input_port_0_r );
-READ8_HANDLER( input_port_1_r );
-READ8_HANDLER( input_port_2_r );
-READ8_HANDLER( input_port_3_r );
-READ8_HANDLER( input_port_4_r );
-READ8_HANDLER( input_port_5_r );
-READ8_HANDLER( input_port_6_r );
-READ8_HANDLER( input_port_7_r );
-READ8_HANDLER( input_port_8_r );
-READ8_HANDLER( input_port_9_r );
-READ8_HANDLER( input_port_10_r );
-READ8_HANDLER( input_port_11_r );
-READ8_HANDLER( input_port_12_r );
-READ8_HANDLER( input_port_13_r );
-READ8_HANDLER( input_port_14_r );
-READ8_HANDLER( input_port_15_r );
-READ8_HANDLER( input_port_16_r );
-READ8_HANDLER( input_port_17_r );
-READ8_HANDLER( input_port_18_r );
-READ8_HANDLER( input_port_19_r );
-READ8_HANDLER( input_port_20_r );
-READ8_HANDLER( input_port_21_r );
-READ8_HANDLER( input_port_22_r );
-READ8_HANDLER( input_port_23_r );
-READ8_HANDLER( input_port_24_r );
-READ8_HANDLER( input_port_25_r );
-READ8_HANDLER( input_port_26_r );
-READ8_HANDLER( input_port_27_r );
-READ8_HANDLER( input_port_28_r );
-READ8_HANDLER( input_port_29_r );
-READ8_HANDLER( input_port_30_r );
-READ8_HANDLER( input_port_31_r );
-
-/* 16-bit handlers */
-READ16_HANDLER( input_port_0_word_r );
-READ16_HANDLER( input_port_1_word_r );
-READ16_HANDLER( input_port_2_word_r );
-READ16_HANDLER( input_port_3_word_r );
-READ16_HANDLER( input_port_4_word_r );
-READ16_HANDLER( input_port_5_word_r );
-READ16_HANDLER( input_port_6_word_r );
-READ16_HANDLER( input_port_7_word_r );
-READ16_HANDLER( input_port_8_word_r );
-READ16_HANDLER( input_port_9_word_r );
-READ16_HANDLER( input_port_10_word_r );
-READ16_HANDLER( input_port_11_word_r );
-READ16_HANDLER( input_port_12_word_r );
-READ16_HANDLER( input_port_13_word_r );
-READ16_HANDLER( input_port_14_word_r );
-READ16_HANDLER( input_port_15_word_r );
-READ16_HANDLER( input_port_16_word_r );
-READ16_HANDLER( input_port_17_word_r );
-READ16_HANDLER( input_port_18_word_r );
-READ16_HANDLER( input_port_19_word_r );
-READ16_HANDLER( input_port_20_word_r );
-READ16_HANDLER( input_port_21_word_r );
-READ16_HANDLER( input_port_22_word_r );
-READ16_HANDLER( input_port_23_word_r );
-READ16_HANDLER( input_port_24_word_r );
-READ16_HANDLER( input_port_25_word_r );
-READ16_HANDLER( input_port_26_word_r );
-READ16_HANDLER( input_port_27_word_r );
-READ16_HANDLER( input_port_28_word_r );
-READ16_HANDLER( input_port_29_word_r );
-READ16_HANDLER( input_port_30_word_r );
-READ16_HANDLER( input_port_31_word_r );
-
-/* 32-bit handlers */
-READ32_HANDLER( input_port_0_dword_r );
-READ32_HANDLER( input_port_1_dword_r );
-READ32_HANDLER( input_port_2_dword_r );
-READ32_HANDLER( input_port_3_dword_r );
-READ32_HANDLER( input_port_4_dword_r );
-READ32_HANDLER( input_port_5_dword_r );
-READ32_HANDLER( input_port_6_dword_r );
-READ32_HANDLER( input_port_7_dword_r );
-READ32_HANDLER( input_port_8_dword_r );
-READ32_HANDLER( input_port_9_dword_r );
-READ32_HANDLER( input_port_10_dword_r );
-READ32_HANDLER( input_port_11_dword_r );
-READ32_HANDLER( input_port_12_dword_r );
-READ32_HANDLER( input_port_13_dword_r );
-READ32_HANDLER( input_port_14_dword_r );
-READ32_HANDLER( input_port_15_dword_r );
-READ32_HANDLER( input_port_16_dword_r );
-READ32_HANDLER( input_port_17_dword_r );
-READ32_HANDLER( input_port_18_dword_r );
-READ32_HANDLER( input_port_19_dword_r );
-READ32_HANDLER( input_port_20_dword_r );
-READ32_HANDLER( input_port_21_dword_r );
-READ32_HANDLER( input_port_22_dword_r );
-READ32_HANDLER( input_port_23_dword_r );
-READ32_HANDLER( input_port_24_dword_r );
-READ32_HANDLER( input_port_25_dword_r );
-READ32_HANDLER( input_port_26_dword_r );
-READ32_HANDLER( input_port_27_dword_r );
-READ32_HANDLER( input_port_28_dword_r );
-READ32_HANDLER( input_port_29_dword_r );
-READ32_HANDLER( input_port_30_dword_r );
-READ32_HANDLER( input_port_31_dword_r );
+/* ----- generic input port helpers ----- */
/* custom handler */
CUSTOM_INPUT( custom_port_read );
diff --git a/src/emu/memory.c b/src/emu/memory.c
index cf14862028b..83a93621003 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -361,6 +361,12 @@ static const char *handler_to_string(const address_table *table, UINT8 entry);
static void dump_map(FILE *file, const address_space *space, const address_table *table);
static void mem_dump(running_machine *machine);
+/* input port handlers */
+static UINT8 input_port_read8(const input_port_config *port, offs_t offset);
+static UINT16 input_port_read16(const input_port_config *port, offs_t offset, UINT16 mem_mask);
+static UINT32 input_port_read32(const input_port_config *port, offs_t offset, UINT32 mem_mask);
+static UINT64 input_port_read64(const input_port_config *port, offs_t offset, UINT64 mem_mask);
+
/***************************************************************************
@@ -1319,6 +1325,31 @@ UINT64 *_memory_install_device_handler64(const address_space *space, const devic
}
+/*-------------------------------------------------
+ memory_install_read_port_handler - install a
+ new 8-bit input port handler into the given
+ address space
+-------------------------------------------------*/
+
+void memory_install_read_port_handler(const address_space *space, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *tag)
+{
+ const input_port_config *port = input_port_by_tag(space->machine->portconfig, tag);
+ address_space *spacerw = (address_space *)space;
+ genf *handler = NULL;
+
+ if (port == NULL)
+ fatalerror("Non-existent port referenced: '%s'\n", tag);
+ switch (space->dbits)
+ {
+ case 8: handler = (genf *)input_port_read8; break;
+ case 16: handler = (genf *)input_port_read16; break;
+ case 32: handler = (genf *)input_port_read32; break;
+ case 64: handler = (genf *)input_port_read64; break;
+ }
+ space_map_range(spacerw, ROW_READ, space->dbits, 0, addrstart, addrend, addrmask, addrmirror, handler, (void *)port, tag);
+}
+
+
/***************************************************************************
DEBUGGER HELPERS
@@ -1682,15 +1713,20 @@ static void memory_init_populate(running_machine *machine)
/* if we have a read port tag, look it up */
if (entry->read_porttag != NULL)
{
- switch (space->dbits)
+ const input_port_config *port = input_port_by_tag(machine->portconfig, entry->read_porttag);
+ int bits = (entry->read_bits == 0) ? space->dbits : entry->read_bits;
+ genf *handler = NULL;
+
+ if (port == NULL)
+ fatalerror("Non-existent port referenced: '%s'\n", entry->read_porttag);
+ switch (bits)
{
- case 8: rhandler.shandler8 = input_port_read_handler8(machine->portconfig, entry->read_porttag); break;
- case 16: rhandler.shandler16 = input_port_read_handler16(machine->portconfig, entry->read_porttag); break;
- case 32: rhandler.shandler32 = input_port_read_handler32(machine->portconfig, entry->read_porttag); break;
- case 64: rhandler.shandler64 = input_port_read_handler64(machine->portconfig, entry->read_porttag); break;
+ case 8: handler = (genf *)input_port_read8; break;
+ case 16: handler = (genf *)input_port_read16; break;
+ case 32: handler = (genf *)input_port_read32; break;
+ case 64: handler = (genf *)input_port_read64; break;
}
- if (rhandler.generic == NULL)
- fatalerror("Non-existent port referenced: '%s'\n", entry->read_porttag);
+ space_map_range_private(space, ROW_READ, bits, entry->read_mask, entry->addrstart, entry->addrend, entry->addrmask, entry->addrmirror, handler, (void *)port, entry->read_porttag);
}
/* install the read handler if present */
@@ -3450,6 +3486,36 @@ static void mem_dump(running_machine *machine)
/***************************************************************************
+ INPUT PORT READ HANDLERS
+***************************************************************************/
+
+/*-------------------------------------------------
+ input port handlers
+-------------------------------------------------*/
+
+static UINT8 input_port_read8(const input_port_config *port, offs_t offset)
+{
+ return input_port_read_direct(port);
+}
+
+static UINT16 input_port_read16(const input_port_config *port, offs_t offset, UINT16 mem_mask)
+{
+ return input_port_read_direct(port);
+}
+
+static UINT32 input_port_read32(const input_port_config *port, offs_t offset, UINT32 mem_mask)
+{
+ return input_port_read_direct(port);
+}
+
+static UINT64 input_port_read64(const input_port_config *port, offs_t offset, UINT64 mem_mask)
+{
+ return input_port_read_direct(port);
+}
+
+
+
+/***************************************************************************
STUB HANDLERS THAT MAP TO BYTE READS
***************************************************************************/
diff --git a/src/emu/memory.h b/src/emu/memory.h
index bf9decdbb83..650474f22d3 100644
--- a/src/emu/memory.h
+++ b/src/emu/memory.h
@@ -935,6 +935,9 @@ UINT32 *_memory_install_device_handler32(const address_space *space, const devic
/* same as above but explicitly for 64-bit handlers */
UINT64 *_memory_install_device_handler64(const address_space *space, const device_config *device, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read64_device_func rhandler, write64_device_func whandler, const char *rhandler_name, const char *whandler_name) ATTR_NONNULL;
+/* install a new input port handler into the given address space */
+void memory_install_read_port_handler(const address_space *space, offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *tag) ATTR_NONNULL;
+
/* ----- debugger helpers ----- */
diff --git a/src/mame/audio/mcr.c b/src/mame/audio/mcr.c
index 6fa0e5b6868..eefaff7b550 100644
--- a/src/mame/audio/mcr.c
+++ b/src/mame/audio/mcr.c
@@ -128,7 +128,6 @@ void mcr_sound_init(running_machine *machine, UINT8 config)
/* Turbo Chip Squeak */
if (mcr_sound_config & MCR_TURBO_CHIP_SQUEAK)
{
- pia_config(machine, 0, &turbocs_pia_intf);
turbocs_sound_cpu = cputag_get_cpu(machine, "tcscpu");
state_save_register_global(machine, turbocs_status);
}
@@ -136,7 +135,6 @@ void mcr_sound_init(running_machine *machine, UINT8 config)
/* Chip Squeak Deluxe */
if (mcr_sound_config & MCR_CHIP_SQUEAK_DELUXE)
{
- pia_config(machine, 0, &csdeluxe_pia_intf);
csdeluxe_sound_cpu = cputag_get_cpu(machine, "csdcpu");
state_save_register_global(machine, csdeluxe_status);
}
@@ -144,8 +142,6 @@ void mcr_sound_init(running_machine *machine, UINT8 config)
/* Sounds Good */
if (mcr_sound_config & MCR_SOUNDS_GOOD)
{
- /* special case: Spy Hunter 2 has both Turbo CS and Sounds Good, so we use PIA slot 1 */
- pia_config(machine, 1, &soundsgood_pia_intf);
soundsgood_sound_cpu = cputag_get_cpu(machine, "sgcpu");
state_save_register_global(machine, soundsgood_status);
}
@@ -153,8 +149,6 @@ void mcr_sound_init(running_machine *machine, UINT8 config)
/* Squawk n Talk */
if (mcr_sound_config & MCR_SQUAWK_N_TALK)
{
- pia_config(machine, 0, &squawkntalk_pia0_intf);
- pia_config(machine, 1, &squawkntalk_pia1_intf);
squawkntalk_sound_cpu = cputag_get_cpu(machine, "sntcpu");
state_save_register_global(machine, squawkntalk_tms_command);
state_save_register_global(machine, squawkntalk_tms_strobes);
@@ -212,9 +206,6 @@ void mcr_sound_reset(running_machine *machine)
williams_cvsd_reset_w(1);
williams_cvsd_reset_w(0);
}
-
- /* reset any PIAs */
- pia_reset();
}
@@ -507,60 +498,60 @@ MACHINE_DRIVER_END
*************************************/
/********* internal interfaces ***********/
-static WRITE8_HANDLER( csdeluxe_porta_w )
+static WRITE8_DEVICE_HANDLER( csdeluxe_porta_w )
{
dacval = (dacval & ~0x3fc) | (data << 2);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "csddac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "csddac"), dacval << 6);
}
-static WRITE8_HANDLER( csdeluxe_portb_w )
+static WRITE8_DEVICE_HANDLER( csdeluxe_portb_w )
{
- UINT8 z_mask = pia_get_port_b_z_mask(0);
+ UINT8 z_mask = pianew_get_port_b_z_mask(device);
dacval = (dacval & ~0x003) | (data >> 6);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "csddac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "csddac"), dacval << 6);
if (~z_mask & 0x10) csdeluxe_status = (csdeluxe_status & ~1) | ((data >> 4) & 1);
if (~z_mask & 0x20) csdeluxe_status = (csdeluxe_status & ~2) | ((data >> 4) & 2);
}
-static void csdeluxe_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( csdeluxe_irq )
{
- int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0);
+ int combined_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
cpu_set_input_line(csdeluxe_sound_cpu, 4, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
static TIMER_CALLBACK( csdeluxe_delayed_data_w )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
+ const device_config *pia = devtag_get_device(machine, PIA6821, "csdpia");
- pia_0_portb_w(space, 0, param & 0x0f);
- pia_0_ca1_w(space, 0, ~param & 0x10);
+ pia_portb_w(pia, 0, param & 0x0f);
+ pia_ca1_w(pia, 0, ~param & 0x10);
/* oftentimes games will write one nibble at a time; the sync on this is very */
/* important, so we boost the interleave briefly while this happens */
cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(100));
}
-static READ16_HANDLER( csdeluxe_pia_r )
+static READ16_DEVICE_HANDLER( csdeluxe_pia_r )
{
/* Spy Hunter accesses the MSB; Turbo Tag access via the LSB */
/* My guess is that Turbo Tag works through a fluke, whereby the 68000 */
/* using the MOVEP instruction outputs the same value on the high and */
/* low bytes. */
if (ACCESSING_BITS_8_15)
- return pia_0_alt_r(space, offset) << 8;
+ return pia_alt_r(device, offset) << 8;
else
- return pia_0_alt_r(space, offset);
+ return pia_alt_r(device, offset);
}
-static WRITE16_HANDLER( csdeluxe_pia_w )
+static WRITE16_DEVICE_HANDLER( csdeluxe_pia_w )
{
if (ACCESSING_BITS_8_15)
- pia_0_alt_w(space, offset, data >> 8);
+ pia_alt_w(device, offset, data >> 8);
else
- pia_0_alt_w(space, offset, data);
+ pia_alt_w(device, offset, data);
}
@@ -588,7 +579,7 @@ static ADDRESS_MAP_START( csdeluxe_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
AM_RANGE(0x000000, 0x007fff) AM_ROM
- AM_RANGE(0x018000, 0x018007) AM_READWRITE(csdeluxe_pia_r, csdeluxe_pia_w)
+ AM_RANGE(0x018000, 0x018007) AM_DEVREADWRITE(PIA6821, "csdpia", csdeluxe_pia_r, csdeluxe_pia_w)
AM_RANGE(0x01c000, 0x01cfff) AM_RAM
ADDRESS_MAP_END
@@ -596,9 +587,18 @@ ADDRESS_MAP_END
/********* PIA interfaces ***********/
static const pia6821_interface csdeluxe_pia_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ csdeluxe_porta_w, csdeluxe_portb_w, 0, 0,
- /*irqs : A/B */ csdeluxe_irq, csdeluxe_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(csdeluxe_porta_w), /* port A out */
+ DEVCB_HANDLER(csdeluxe_portb_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(csdeluxe_irq), /* IRQA */
+ DEVCB_LINE(csdeluxe_irq) /* IRQB */
};
@@ -606,6 +606,8 @@ static const pia6821_interface csdeluxe_pia_intf =
MACHINE_DRIVER_START(chip_squeak_deluxe)
MDRV_CPU_ADD("csdcpu", M68000, CSDELUXE_CLOCK/2)
MDRV_CPU_PROGRAM_MAP(csdeluxe_map,0)
+
+ MDRV_PIA6821_ADD("csdpia", csdeluxe_pia_intf)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("csddac", DAC, 0)
@@ -615,6 +617,8 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START(chip_squeak_deluxe_stereo)
MDRV_CPU_ADD("csdcpu", M68000, CSDELUXE_CLOCK/2)
MDRV_CPU_PROGRAM_MAP(csdeluxe_map,0)
+
+ MDRV_PIA6821_ADD("csdpia", csdeluxe_pia_intf)
MDRV_SOUND_ADD("csddac", DAC, 0)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
@@ -632,36 +636,36 @@ MACHINE_DRIVER_END
*************************************/
/********* internal interfaces ***********/
-static WRITE8_HANDLER( soundsgood_porta_w )
+static WRITE8_DEVICE_HANDLER( soundsgood_porta_w )
{
dacval = (dacval & ~0x3fc) | (data << 2);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "sgdac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "sgdac"), dacval << 6);
}
-static WRITE8_HANDLER( soundsgood_portb_w )
+static WRITE8_DEVICE_HANDLER( soundsgood_portb_w )
{
- UINT8 z_mask = pia_get_port_b_z_mask(1);
+ UINT8 z_mask = pianew_get_port_b_z_mask(device);
dacval = (dacval & ~0x003) | (data >> 6);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "sgdac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "sgdac"), dacval << 6);
if (~z_mask & 0x10) soundsgood_status = (soundsgood_status & ~1) | ((data >> 4) & 1);
if (~z_mask & 0x20) soundsgood_status = (soundsgood_status & ~2) | ((data >> 4) & 2);
}
-static void soundsgood_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( soundsgood_irq )
{
- int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1);
+ int combined_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
cpu_set_input_line(soundsgood_sound_cpu, 4, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
static TIMER_CALLBACK( soundsgood_delayed_data_w )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
+ const device_config *pia = devtag_get_device(machine, PIA6821, "sgpia");
- pia_1_portb_w(space, 0, (param >> 1) & 0x0f);
- pia_1_ca1_w(space, 0, ~param & 0x01);
+ pia_portb_w(pia, 0, (param >> 1) & 0x0f);
+ pia_ca1_w(pia, 0, ~param & 0x01);
/* oftentimes games will write one nibble at a time; the sync on this is very */
/* important, so we boost the interleave briefly while this happens */
@@ -694,20 +698,26 @@ static ADDRESS_MAP_START( soundsgood_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x7ffff)
AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x060007) AM_READWRITE8(pia_1_alt_r, pia_1_alt_w, 0xff00)
+ AM_RANGE(0x060000, 0x060007) AM_DEVREADWRITE8(PIA6821, "sgpia", pia_alt_r, pia_alt_w, 0xff00)
AM_RANGE(0x070000, 0x070fff) AM_RAM
ADDRESS_MAP_END
/********* PIA interfaces ***********/
-/* Note: we map this board to PIA #1. It is only used in Spy Hunter and Spy Hunter 2 */
-/* For Spy Hunter 2, we also have a Turbo Chip Squeak in PIA slot 0, so we don't want */
-/* to interfere */
static const pia6821_interface soundsgood_pia_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ soundsgood_porta_w, soundsgood_portb_w, 0, 0,
- /*irqs : A/B */ soundsgood_irq, soundsgood_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(soundsgood_porta_w), /* port A out */
+ DEVCB_HANDLER(soundsgood_portb_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(soundsgood_irq), /* IRQA */
+ DEVCB_LINE(soundsgood_irq) /* IRQB */
};
@@ -715,6 +725,8 @@ static const pia6821_interface soundsgood_pia_intf =
MACHINE_DRIVER_START(sounds_good)
MDRV_CPU_ADD("sgcpu", M68000, SOUNDSGOOD_CLOCK/2)
MDRV_CPU_PROGRAM_MAP(soundsgood_map,0)
+
+ MDRV_PIA6821_ADD("sgpia", soundsgood_pia_intf)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("sgdac", DAC, 0)
@@ -732,32 +744,32 @@ MACHINE_DRIVER_END
*************************************/
/********* internal interfaces ***********/
-static WRITE8_HANDLER( turbocs_porta_w )
+static WRITE8_DEVICE_HANDLER( turbocs_porta_w )
{
dacval = (dacval & ~0x3fc) | (data << 2);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "tcsdac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "tcsdac"), dacval << 6);
}
-static WRITE8_HANDLER( turbocs_portb_w )
+static WRITE8_DEVICE_HANDLER( turbocs_portb_w )
{
dacval = (dacval & ~0x003) | (data >> 6);
- dac_signed_data_16_w(devtag_get_device(space->machine, SOUND, "tcsdac"), dacval << 6);
+ dac_signed_data_16_w(devtag_get_device(device->machine, SOUND, "tcsdac"), dacval << 6);
turbocs_status = (data >> 4) & 3;
}
-static void turbocs_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( turbocs_irq )
{
- int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0);
+ int combined_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
cpu_set_input_line(turbocs_sound_cpu, M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
static TIMER_CALLBACK( turbocs_delayed_data_w )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
+ const device_config *pia = devtag_get_device(machine, PIA6821, "tcspia");
- pia_0_portb_w(space, 0, (param >> 1) & 0x0f);
- pia_0_ca1_w(space, 0, ~param & 0x01);
+ pia_portb_w(pia, 0, (param >> 1) & 0x0f);
+ pia_ca1_w(pia, 0, ~param & 0x01);
/* oftentimes games will write one nibble at a time; the sync on this is very */
/* important, so we boost the interleave briefly while this happens */
@@ -788,7 +800,7 @@ void turbocs_reset_w(running_machine *machine, int state)
static ADDRESS_MAP_START( turbocs_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x3ffc) AM_READWRITE(pia_0_alt_r, pia_0_alt_w)
+ AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x3ffc) AM_DEVREADWRITE(PIA6821, "tcspia", pia_alt_r, pia_alt_w)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -796,9 +808,18 @@ ADDRESS_MAP_END
/********* PIA interfaces ***********/
static const pia6821_interface turbocs_pia_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ turbocs_porta_w, turbocs_portb_w, 0, 0,
- /*irqs : A/B */ turbocs_irq, turbocs_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(turbocs_porta_w), /* port A out */
+ DEVCB_HANDLER(turbocs_portb_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(turbocs_irq), /* IRQA */
+ DEVCB_LINE(turbocs_irq) /* IRQB */
};
@@ -806,6 +827,8 @@ static const pia6821_interface turbocs_pia_intf =
MACHINE_DRIVER_START(turbo_chip_squeak)
MDRV_CPU_ADD("tcscpu", M6809E, TURBOCS_CLOCK)
MDRV_CPU_PROGRAM_MAP(turbocs_map,0)
+
+ MDRV_PIA6821_ADD("tcspia", turbocs_pia_intf)
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("tcsdac", DAC, 0)
@@ -813,19 +836,6 @@ MACHINE_DRIVER_START(turbo_chip_squeak)
MACHINE_DRIVER_END
-MACHINE_DRIVER_START(turbo_chip_squeak_plus_sounds_good)
- MDRV_IMPORT_FROM(turbo_chip_squeak)
- MDRV_SPEAKER_REMOVE("mono")
- MDRV_IMPORT_FROM(sounds_good)
-
- MDRV_SOUND_REPLACE("tcsdac", DAC, 0)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-
- MDRV_SOUND_REPLACE("sgdac", DAC, 0)
- MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-MACHINE_DRIVER_END
-
-
/*************************************
*
@@ -836,7 +846,7 @@ MACHINE_DRIVER_END
*************************************/
/********* internal interfaces ***********/
-static WRITE8_HANDLER( squawkntalk_porta1_w )
+static WRITE8_DEVICE_HANDLER( squawkntalk_porta1_w )
{
logerror("Write to AY-8912 = %02X\n", data);
}
@@ -846,14 +856,14 @@ static WRITE8_HANDLER( squawkntalk_dac_w )
logerror("Write to DAC = %02X\n", data);
}
-static WRITE8_HANDLER( squawkntalk_porta2_w )
+static WRITE8_DEVICE_HANDLER( squawkntalk_porta2_w )
{
squawkntalk_tms_command = data;
}
-static WRITE8_HANDLER( squawkntalk_portb2_w )
+static WRITE8_DEVICE_HANDLER( squawkntalk_portb2_w )
{
- const device_config *tms = devtag_get_device(space->machine, SOUND, "sntspeech");
+ const device_config *tms = devtag_get_device(device->machine, SOUND, "sntspeech");
/* bits 0-1 select read/write strobes on the TMS5200 */
data &= 0x03;
@@ -864,37 +874,39 @@ static WRITE8_HANDLER( squawkntalk_portb2_w )
tms5220_data_w(tms, offset, squawkntalk_tms_command);
/* DoT expects the ready line to transition on a command/write here, so we oblige */
- pia_1_ca2_w(space, 0, 1);
- pia_1_ca2_w(space, 0, 0);
+ pia_ca2_w(device, 0, 1);
+ pia_ca2_w(device, 0, 0);
}
/* read strobe -- read the current status from the TMS5200 */
else if (((data ^ squawkntalk_tms_strobes) & 0x01) && !(data & 0x01))
{
- pia_1_porta_w(space, 0, tms5220_status_r(tms, offset));
+ pia_porta_w(device, 0, tms5220_status_r(tms, offset));
/* DoT expects the ready line to transition on a command/write here, so we oblige */
- pia_1_ca2_w(space, 0, 1);
- pia_1_ca2_w(space, 0, 0);
+ pia_ca2_w(device, 0, 1);
+ pia_ca2_w(device, 0, 0);
}
/* remember the state */
squawkntalk_tms_strobes = data;
}
-static void squawkntalk_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( squawkntalk_irq )
{
- int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) | pia_get_irq_a(1) | pia_get_irq_b(1);
+ const device_config *pia0 = devtag_get_device(device->machine, PIA6821, "sntpia0");
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "sntpia1");
+ int combined_state = pianew_get_irq_a(pia0) | pianew_get_irq_b(pia0) | pianew_get_irq_a(pia1) | pianew_get_irq_b(pia1);
cpu_set_input_line(squawkntalk_sound_cpu, M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
static TIMER_CALLBACK( squawkntalk_delayed_data_w )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
+ const device_config *pia0 = devtag_get_device(machine, PIA6821, "sntpia0");
- pia_0_porta_w(space, 0, ~param & 0x0f);
- pia_0_cb1_w(space, 0, ~param & 0x10);
+ pia_porta_w(pia0, 0, ~param & 0x0f);
+ pia_cb1_w(pia0, 0, ~param & 0x10);
}
@@ -918,8 +930,8 @@ void squawkntalk_reset_w(running_machine *machine, int state)
static ADDRESS_MAP_START( squawkntalk_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x4f6c) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x4f6c) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x4f6c) AM_DEVREADWRITE(PIA6821, "sntpia0", pia_r, pia_w)
+ AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x4f6c) AM_DEVREADWRITE(PIA6821, "sntpia1", pia_r, pia_w)
AM_RANGE(0x1000, 0x1fff) AM_MIRROR(0x4000) AM_WRITE(squawkntalk_dac_w)
AM_RANGE(0x8000, 0xbfff) AM_MIRROR(0x4000) AM_ROM
ADDRESS_MAP_END
@@ -930,8 +942,8 @@ ADDRESS_MAP_END
ADDRESS_MAP_START( squawkntalk_alt_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x676c) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x676c) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x676c) AM_DEVREADWRITE(PIA6821, "sntpia0", pia_r, pia_w)
+ AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x676c) AM_DEVREADWRITE(PIA6821, "sntpia1", pia_r, pia_w)
AM_RANGE(0x0800, 0x0fff) AM_MIRROR(0x6000) AM_WRITE(squawkntalk_dac_w)
AM_RANGE(0x8000, 0x9fff) AM_MIRROR(0x6000) AM_ROM
ADDRESS_MAP_END
@@ -941,16 +953,34 @@ ADDRESS_MAP_END
/********* PIA interfaces ***********/
static const pia6821_interface squawkntalk_pia0_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ squawkntalk_porta1_w, 0, 0, 0,
- /*irqs : A/B */ squawkntalk_irq, squawkntalk_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(squawkntalk_porta1_w), /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(squawkntalk_irq), /* IRQA */
+ DEVCB_LINE(squawkntalk_irq) /* IRQB */
};
static const pia6821_interface squawkntalk_pia1_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ squawkntalk_porta2_w, squawkntalk_portb2_w, 0, 0,
- /*irqs : A/B */ squawkntalk_irq, squawkntalk_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(squawkntalk_porta2_w), /* port A out */
+ DEVCB_HANDLER(squawkntalk_portb2_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(squawkntalk_irq), /* IRQA */
+ DEVCB_LINE(squawkntalk_irq) /* IRQB */
};
@@ -958,6 +988,9 @@ static const pia6821_interface squawkntalk_pia1_intf =
MACHINE_DRIVER_START(squawk_n_talk)
MDRV_CPU_ADD("sntcpu", M6802, SQUAWKTALK_CLOCK)
MDRV_CPU_PROGRAM_MAP(squawkntalk_map,0)
+
+ MDRV_PIA6821_ADD("sntpia0", squawkntalk_pia0_intf)
+ MDRV_PIA6821_ADD("sntpia1", squawkntalk_pia1_intf)
/* only used on Discs of Tron, which is stereo */
MDRV_SOUND_ADD("sntspeech", TMS5200, 640000)
diff --git a/src/mame/audio/mcr.h b/src/mame/audio/mcr.h
index fc7a0be2691..a7e5a18c2e9 100644
--- a/src/mame/audio/mcr.h
+++ b/src/mame/audio/mcr.h
@@ -6,7 +6,7 @@
***************************************************************************/
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
@@ -68,5 +68,4 @@ MACHINE_DRIVER_EXTERN( chip_squeak_deluxe );
MACHINE_DRIVER_EXTERN( chip_squeak_deluxe_stereo );
MACHINE_DRIVER_EXTERN( sounds_good );
MACHINE_DRIVER_EXTERN( turbo_chip_squeak );
-MACHINE_DRIVER_EXTERN( turbo_chip_squeak_plus_sounds_good );
MACHINE_DRIVER_EXTERN( squawk_n_talk );
diff --git a/src/mame/audio/qix.c b/src/mame/audio/qix.c
index bf7cf288849..96cd15f8a3c 100644
--- a/src/mame/audio/qix.c
+++ b/src/mame/audio/qix.c
@@ -3,10 +3,11 @@
audio\qix.c
*************************************************************************/
+
#include "driver.h"
#include "cpu/m6800/m6800.h"
+#include "cpu/m6809/m6809.h"
#include "qix.h"
-#include "machine/6821pia.h"
#include "sound/sn76496.h"
#include "sound/discrete.h"
@@ -17,20 +18,22 @@
#define QIX_VOL_DATA_R NODE_04
+static WRITE_LINE_DEVICE_HANDLER( qix_pia_dint );
+static WRITE_LINE_DEVICE_HANDLER( qix_pia_sint );
+
+
/***************************************************************************
Audio handlers
***************************************************************************/
-WRITE8_HANDLER( qix_dac_w )
+static WRITE8_DEVICE_HANDLER( qix_dac_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
- discrete_sound_w(discrete, QIX_DAC_DATA, data);
+ discrete_sound_w(device, QIX_DAC_DATA, data);
}
-WRITE8_HANDLER( qix_vol_w )
+static WRITE8_DEVICE_HANDLER( qix_vol_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
- discrete_sound_w(discrete, QIX_VOL_DATA, data);
+ discrete_sound_w(device, QIX_VOL_DATA, data);
}
@@ -86,14 +89,73 @@ DISCRETE_SOUND_END
/*************************************
*
+ * PIA handlers
+ *
+ *************************************/
+
+static WRITE8_DEVICE_HANDLER( sndpia_2_warning_w )
+{
+ popmessage("PIA 5 write!!");
+}
+
+
+static TIMER_CALLBACK( deferred_sndpia1_porta_w )
+{
+ const device_config *device = ptr;
+ pia_porta_w(device, 0, param);
+}
+
+
+static WRITE8_DEVICE_HANDLER( sync_sndpia1_porta_w )
+{
+ /* we need to synchronize this so the sound CPU doesn't drop anything important */
+ timer_call_after_resynch(device->machine, (void *)device, data, deferred_sndpia1_porta_w);
+}
+
+
+static WRITE8_DEVICE_HANDLER( slither_coinctl_w )
+{
+ coin_lockout_w(0, (~data >> 6) & 1);
+ coin_counter_w(0, (data >> 5) & 1);
+}
+
+
+
+/*************************************
+ *
+ * IRQ generation
+ *
+ *************************************/
+
+static WRITE_LINE_DEVICE_HANDLER( qix_pia_dint )
+{
+ int combined_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
+
+ /* DINT is connected to the data CPU's IRQ line */
+ cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+static WRITE_LINE_DEVICE_HANDLER( qix_pia_sint )
+{
+ int combined_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
+
+ /* SINT is connected to the sound CPU's IRQ line */
+ cputag_set_input_line(device->machine, "audiocpu", M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+
+/*************************************
+ *
* Audio CPU memory handlers
*
*************************************/
static ADDRESS_MAP_START( audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x5ffc) AM_READWRITE(pia_5_r, pia_5_w)
- AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x3ffc) AM_READWRITE(pia_4_r, pia_4_w)
+ AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x5ffc) AM_DEVREADWRITE(PIA6821, "sndpia2", pia_r, pia_w)
+ AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x3ffc) AM_DEVREADWRITE(PIA6821, "sndpia1", pia_r, pia_w)
AM_RANGE(0xd000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -101,6 +163,78 @@ ADDRESS_MAP_END
/*************************************
*
+ * PIA interfaces
+ *
+ *************************************/
+
+static const pia6821_interface qixsnd_pia_0_intf =
+{
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_DEVICE_HANDLER(PIA6821, "sndpia1", sync_sndpia1_porta_w), /* port A out */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", qix_vol_w), /* port B out */
+ DEVCB_DEVICE_HANDLER(PIA6821, "sndpia1", pia_ca1_w), /* line CA2 out */
+ DEVCB_HANDLER(qix_flip_screen_w), /* port CB2 out */
+ DEVCB_LINE(qix_pia_dint), /* IRQA */
+ DEVCB_LINE(qix_pia_dint) /* IRQB */
+};
+
+static const pia6821_interface qixsnd_pia_1_intf =
+{
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_DEVICE_HANDLER(PIA6821, "sndpia0", pia_porta_w), /* port A out */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", qix_dac_w), /* port B out */
+ DEVCB_DEVICE_HANDLER(PIA6821, "sndpia0", pia_ca1_w), /* line CA2 out */
+ DEVCB_NULL, /* line CB2 out */
+ DEVCB_LINE(qix_pia_sint), /* IRQA */
+ DEVCB_LINE(qix_pia_sint) /* IRQB */
+};
+
+static const pia6821_interface qixsnd_pia_2_intf =
+{
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(sndpia_2_warning_w), /* port A out */
+ DEVCB_HANDLER(sndpia_2_warning_w), /* port B out */
+ DEVCB_HANDLER(sndpia_2_warning_w), /* line CA2 out */
+ DEVCB_HANDLER(sndpia_2_warning_w), /* line CB2 out */
+ DEVCB_NULL,
+ DEVCB_NULL
+};
+
+static const pia6821_interface slithersnd_pia_0_intf =
+{
+ DEVCB_INPUT_PORT("P2"), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(slither_coinctl_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_HANDLER(qix_flip_screen_w), /* port CB2 out */
+ DEVCB_LINE(qix_pia_dint), /* IRQA */
+ DEVCB_LINE(qix_pia_dint) /* IRQB */
+};
+
+
+
+/*************************************
+ *
* Machine drivers
*
*************************************/
@@ -109,6 +243,10 @@ MACHINE_DRIVER_START( qix_audio )
MDRV_CPU_ADD("audiocpu", M6802, SOUND_CLOCK_OSC/2) /* 0.92 MHz */
MDRV_CPU_PROGRAM_MAP(audio_map,0)
+ MDRV_PIA6821_ADD("sndpia0", qixsnd_pia_0_intf)
+ MDRV_PIA6821_ADD("sndpia1", qixsnd_pia_1_intf)
+ MDRV_PIA6821_ADD("sndpia2", qixsnd_pia_2_intf)
+
MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MDRV_SOUND_ADD("discrete", DISCRETE, 0)
@@ -119,14 +257,10 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START( slither_audio )
- MDRV_CPU_REMOVE("audiocpu")
+ MDRV_PIA6821_ADD("sndpia0", slithersnd_pia_0_intf)
- MDRV_SPEAKER_REMOVE("lspeaker")
- MDRV_SPEAKER_REMOVE("rspeaker")
MDRV_SPEAKER_STANDARD_MONO("mono")
- MDRV_SOUND_REMOVE("discrete")
-
MDRV_SOUND_ADD("sn1", SN76489, SLITHER_CLOCK_OSC/4/4)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
diff --git a/src/mame/audio/spiders.c b/src/mame/audio/spiders.c
index 9f9e3a61159..7b918794d68 100644
--- a/src/mame/audio/spiders.c
+++ b/src/mame/audio/spiders.c
@@ -6,7 +6,7 @@
#include "driver.h"
#include "sound/discrete.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "includes/spiders.h"
@@ -170,34 +170,31 @@ DISCRETE_SOUND_END
-WRITE8_HANDLER( spiders_audio_command_w )
+WRITE8_DEVICE_HANDLER( spiders_audio_command_w )
{
- pia_set_input_a(4, data & 0xf8, 0);
- pia_set_input_ca1(4, data & 0x80 ? 1 : 0);
+ pianew_set_input_a(device, data & 0xf8, 0);
+ pia_ca1_w(device, 0, data & 0x80 ? 1 : 0);
}
-WRITE8_HANDLER( spiders_audio_a_w )
+WRITE8_DEVICE_HANDLER( spiders_audio_a_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
- discrete_sound_w(discrete, SPIDER_WEB_SOUND_MOD_DATA, 1 + (data & 4) * 8 + (data & 2) * 4 + (data & 1) * 2);
+ discrete_sound_w(device, SPIDER_WEB_SOUND_MOD_DATA, 1 + (data & 4) * 8 + (data & 2) * 4 + (data & 1) * 2);
}
-WRITE8_HANDLER( spiders_audio_b_w )
+WRITE8_DEVICE_HANDLER( spiders_audio_b_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
- discrete_sound_w(discrete, SPIDERS_WEB_SOUND_DATA, data);
+ discrete_sound_w(device, SPIDERS_WEB_SOUND_DATA, data);
}
-WRITE8_HANDLER( spiders_audio_ctrl_w )
+WRITE8_DEVICE_HANDLER( spiders_audio_ctrl_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
- discrete_sound_w(discrete, SPIDERS_FIRE_EN, data & 0x10 ? 1 : 0);
- discrete_sound_w(discrete, SPIDERS_EXP_EN, data & 0x08 ? 1 : 0);
- discrete_sound_w(discrete, SPIDERS_SUPER_WEB_EXPL_EN, data & 0x04 ? 1 : 0);
- discrete_sound_w(discrete, SPIDERS_SUPER_WEB_EN, data & 0x02 ? 1 : 0);
- discrete_sound_w(discrete, SPIDERS_X_EN, data & 0x01 ? 1 : 0);
+ discrete_sound_w(device, SPIDERS_FIRE_EN, data & 0x10 ? 1 : 0);
+ discrete_sound_w(device, SPIDERS_EXP_EN, data & 0x08 ? 1 : 0);
+ discrete_sound_w(device, SPIDERS_SUPER_WEB_EXPL_EN, data & 0x04 ? 1 : 0);
+ discrete_sound_w(device, SPIDERS_SUPER_WEB_EN, data & 0x02 ? 1 : 0);
+ discrete_sound_w(device, SPIDERS_X_EN, data & 0x01 ? 1 : 0);
}
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 561a7fae7e9..59c8ea1f24d 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -570,7 +570,7 @@ static INPUT_PORTS_START( arkanoid )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
- PORT_START("UNUSED") /* This is read by input_port_4_r in ay8910_interface */
+ PORT_START("UNUSED") /* This is read in ay8910_interface */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("P1") /* Spinner Player 1 */
diff --git a/src/mame/drivers/asteroid.c b/src/mame/drivers/asteroid.c
index a7645c06582..7178e620046 100644
--- a/src/mame/drivers/asteroid.c
+++ b/src/mame/drivers/asteroid.c
@@ -880,8 +880,8 @@ ROM_END
static DRIVER_INIT( asteroib )
{
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, input_port_read_handler8(machine->portconfig, "IN0"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2003, 0x2003, 0, 0, input_port_read_handler8(machine->portconfig, "HS"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, "IN0");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2003, 0x2003, 0, 0, "HS");
}
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index 5b0e421e3fa..49015067bd8 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -1741,8 +1741,8 @@ static DRIVER_INIT( demndrgn )
astrocade_video_config = 0x00;
memory_install_read8_handler(iospace, 0x14, 0x14, 0x1fff, 0xff00, demndrgn_io_r);
- memory_install_read8_handler(iospace, 0x1c, 0x1c, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "FIREX"));
- memory_install_read8_handler(iospace, 0x1d, 0x1d, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "FIREY"));
+ memory_install_read_port_handler(iospace, 0x1c, 0x1c, 0x0000, 0xff00, "FIREX");
+ memory_install_read_port_handler(iospace, 0x1d, 0x1d, 0x0000, 0xff00, "FIREY");
memory_install_write8_handler(iospace, 0x97, 0x97, 0x0000, 0xff00, demndrgn_sound_w);
/* reset banking */
@@ -1756,11 +1756,11 @@ static DRIVER_INIT( tenpindx )
const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
astrocade_video_config = 0x00;
- memory_install_read8_handler(iospace, 0x60, 0x60, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "P60"));
- memory_install_read8_handler(iospace, 0x61, 0x61, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "P61"));
- memory_install_read8_handler(iospace, 0x62, 0x62, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "P62"));
- memory_install_read8_handler(iospace, 0x63, 0x63, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "P63"));
- memory_install_read8_handler(iospace, 0x64, 0x64, 0x0000, 0xff00, input_port_read_handler8(machine->portconfig, "P64"));
+ memory_install_read_port_handler(iospace, 0x60, 0x60, 0x0000, 0xff00, "P60");
+ memory_install_read_port_handler(iospace, 0x61, 0x61, 0x0000, 0xff00, "P61");
+ memory_install_read_port_handler(iospace, 0x62, 0x62, 0x0000, 0xff00, "P62");
+ memory_install_read_port_handler(iospace, 0x63, 0x63, 0x0000, 0xff00, "P63");
+ memory_install_read_port_handler(iospace, 0x64, 0x64, 0x0000, 0xff00, "P64");
memory_install_write8_handler(iospace, 0x65, 0x66, 0x0000, 0xff00, tenpindx_lamp_w);
memory_install_write8_handler(iospace, 0x67, 0x67, 0x0000, 0xff00, tenpindx_counter_w);
memory_install_write8_handler(iospace, 0x68, 0x68, 0x0000, 0xff00, tenpindx_lights_w);
diff --git a/src/mame/drivers/ataxx.c b/src/mame/drivers/ataxx.c
index afe7d2e6476..8a30f545d1b 100644
--- a/src/mame/drivers/ataxx.c
+++ b/src/mame/drivers/ataxx.c
@@ -697,9 +697,9 @@ static DRIVER_INIT( wsf )
leland_rotate_memory(machine, "slave");
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, input_port_read_handler8(machine->portconfig, "P1_P2"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, input_port_read_handler8(machine->portconfig, "P3_P4"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, input_port_read_handler8(machine->portconfig, "BUTTONS"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1_P2");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P3_P4");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "BUTTONS");
}
@@ -724,9 +724,9 @@ static DRIVER_INIT( indyheat )
/* set up additional input ports */
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x02, 0, 0, indyheat_wheel_r);
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_r);
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, input_port_read_handler8(machine->portconfig, "P1"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, input_port_read_handler8(machine->portconfig, "P2"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, input_port_read_handler8(machine->portconfig, "P3"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P2");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
/* set up additional output ports */
memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_w);
@@ -752,9 +752,9 @@ static DRIVER_INIT( brutforc )
leland_rotate_memory(machine, "slave");
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, input_port_read_handler8(machine->portconfig, "P2"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, input_port_read_handler8(machine->portconfig, "P1"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, input_port_read_handler8(machine->portconfig, "P3"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
}
@@ -781,9 +781,9 @@ static DRIVER_INIT( asylum )
memory_set_bankptr(machine, 4, auto_malloc(0x1000));
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, input_port_read_handler8(machine->portconfig, "P2"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, input_port_read_handler8(machine->portconfig, "P1"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, input_port_read_handler8(machine->portconfig, "P3"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
}
diff --git a/src/mame/drivers/bzone.c b/src/mame/drivers/bzone.c
index cc7224522da..f4813ce54d5 100644
--- a/src/mame/drivers/bzone.c
+++ b/src/mame/drivers/bzone.c
@@ -790,8 +790,8 @@ static DRIVER_INIT( bradley )
memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x400, 0x7ff, 0, 0, SMH_BANK1, SMH_BANK1);
memory_set_bankptr(machine, 1, auto_malloc(0x400));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1808, 0x1808, 0, 0, input_port_read_handler8(machine->portconfig, "1808"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1809, 0x1809, 0, 0, input_port_read_handler8(machine->portconfig, "1809"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1808, 0x1808, 0, 0, "1808");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1809, 0x1809, 0, 0, "1809");
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180a, 0x180a, 0, 0, analog_data_r);
memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1848, 0x1850, 0, 0, analog_select_w);
}
diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c
index 2d54f634a5f..c6645010664 100644
--- a/src/mame/drivers/coinmstr.c
+++ b/src/mame/drivers/coinmstr.c
@@ -24,7 +24,7 @@ x
#include "driver.h"
#include "cpu/z80/z80.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "video/mc6845.h"
#include "sound/ay8910.h"
@@ -199,10 +199,10 @@ static ADDRESS_MAP_START( quizmstr_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x03) AM_WRITE(question_w)
AM_RANGE(0x40, 0x41) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w)
AM_RANGE(0x41, 0x41) AM_DEVREAD(SOUND, "ay", ay8910_r)
- AM_RANGE(0x48, 0x4b) AM_READWRITE(pia_0_r, pia_0_w)
+ AM_RANGE(0x48, 0x4b) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
AM_RANGE(0x50, 0x53) AM_READNOP
AM_RANGE(0x50, 0x53) AM_WRITENOP
- AM_RANGE(0x58, 0x5b) AM_READWRITE(pia_2_r, pia_2_w)
+ AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE(PIA6821, "pia2", pia_r, pia_w)
AM_RANGE(0x70, 0x70) AM_DEVWRITE(H46505, "crtc", mc6845_address_w)
AM_RANGE(0x71, 0x71) AM_DEVWRITE(H46505, "crtc", mc6845_register_w)
AM_RANGE(0xc0, 0xc3) AM_READNOP
@@ -217,9 +217,9 @@ static ADDRESS_MAP_START( trailblz_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x41, 0x41) AM_DEVWRITE(H46505, "crtc", mc6845_register_w)
AM_RANGE(0x48, 0x49) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w)
AM_RANGE(0x49, 0x49) AM_DEVREAD(SOUND, "ay", ay8910_r)
- AM_RANGE(0x50, 0x53) AM_READWRITE(pia_0_r, pia_0_w) //?
- AM_RANGE(0x60, 0x63) AM_READWRITE(pia_1_r, pia_1_w)
- AM_RANGE(0x70, 0x73) AM_READWRITE(pia_2_r, pia_2_w)
+ AM_RANGE(0x50, 0x53) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w) //?
+ AM_RANGE(0x60, 0x63) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
+ AM_RANGE(0x70, 0x73) AM_DEVREADWRITE(PIA6821, "pia2", pia_r, pia_w)
AM_RANGE(0xc1, 0xc3) AM_WRITENOP
ADDRESS_MAP_END
@@ -251,15 +251,15 @@ static ADDRESS_MAP_START( pokeroul_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x41, 0x41) AM_DEVWRITE(H46505, "crtc", mc6845_register_w)
AM_RANGE(0x48, 0x49) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w)
AM_RANGE(0x49, 0x49) AM_DEVREAD(SOUND, "ay", ay8910_r)
- AM_RANGE(0x58, 0x5b) AM_READWRITE(pia_0_r, pia_0_w) /* confirmed */
- AM_RANGE(0x68, 0x6b) AM_READWRITE(pia_1_r, pia_1_w) /* confirmed */
- AM_RANGE(0x78, 0x7b) AM_READWRITE(pia_2_r, pia_2_w) /* confirmed */
+ AM_RANGE(0x58, 0x5b) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w) /* confirmed */
+ AM_RANGE(0x68, 0x6b) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w) /* confirmed */
+ AM_RANGE(0x78, 0x7b) AM_DEVREADWRITE(PIA6821, "pia2", pia_r, pia_w) /* confirmed */
AM_RANGE(0xc0, 0xc1) AM_READ(ff_r) /* needed to boot */
ADDRESS_MAP_END
static INPUT_PORTS_START( quizmstr )
- PORT_START("IN0")
+ PORT_START("PIA0.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1) PORT_NAME("Bookkeeping") PORT_TOGGLE /* Button 2 for second page, Button 3 erases data */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
@@ -268,21 +268,61 @@ static INPUT_PORTS_START( quizmstr )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE) PORT_TOGGLE
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
+
+ PORT_START("PIA0.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA0.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
- /* If 0x40 is HIGH the DIP Test Mode does work but bookkeeping shows always 0's */
- /* If 0x40 is LOW Bookkeeping does work, but the second page (selected categories) is missing */
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_START("PIA1.A")
+ PORT_DIPNAME( 0x01, 0x01, "PIA1.A" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "2-01" )
+ PORT_START("PIA1.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA1.B" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -307,8 +347,20 @@ static INPUT_PORTS_START( quizmstr )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN3")
- PORT_DIPNAME( 0x01, 0x01, "3-01" )
+ PORT_START("PIA2.A")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ /* If 0x40 is HIGH the DIP Test Mode does work but bookkeeping shows always 0's */
+ /* If 0x40 is LOW Bookkeeping does work, but the second page (selected categories) is missing */
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PIA2.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA2.B" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -361,21 +413,59 @@ static INPUT_PORTS_START( quizmstr )
INPUT_PORTS_END
static INPUT_PORTS_START( trailblz )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_START("PIA0.A")
+ PORT_DIPNAME( 0x01, 0x01, "PIA0.A" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN1")
+ PORT_START("PIA0.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA0.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("PIA1.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_DIPNAME( 0x02, 0x02, "1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
@@ -393,8 +483,8 @@ static INPUT_PORTS_START( trailblz )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "2" )
+ PORT_START("PIA1.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA1.B" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -419,8 +509,22 @@ static INPUT_PORTS_START( trailblz )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN3")
- PORT_DIPNAME( 0x01, 0x01, "3" )
+ PORT_START("PIA2.A")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
+
+ PORT_START("PIA2.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA2.B" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -473,7 +577,7 @@ static INPUT_PORTS_START( trailblz )
INPUT_PORTS_END
static INPUT_PORTS_START( supnudg2 )
- PORT_START("IN0")
+ PORT_START("PIA0.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
@@ -487,26 +591,34 @@ static INPUT_PORTS_START( supnudg2 )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
- PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
- PORT_DIPNAME( 0x02, 0x02, "1" )
+ PORT_START("PIA0.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA0.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Cont")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Pass")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Sel")
- PORT_DIPNAME( 0x40, 0x40, "Show Refill?" )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Show Stats?" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN2")
- PORT_DIPNAME( 0x01, 0x01, "2" )
+ PORT_START("PIA1.A")
+ PORT_DIPNAME( 0x01, 0x01, "PIA1.A" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -531,8 +643,52 @@ static INPUT_PORTS_START( supnudg2 )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN3")
- PORT_DIPNAME( 0x01, 0x01, "3" )
+ PORT_START("PIA1.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA1.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("PIA2.A")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_DIPNAME( 0x02, 0x02, "1" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Cont")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Pass")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Sel")
+ PORT_DIPNAME( 0x40, 0x40, "Show Refill?" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Show Stats?" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("PIA2.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA2.B" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
@@ -585,7 +741,7 @@ static INPUT_PORTS_START( supnudg2 )
INPUT_PORTS_END
static INPUT_PORTS_START( pokeroul )
- PORT_START("IN0")
+ PORT_START("PIA0.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Cancel / Collect") PORT_CODE(KEYCODE_N)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Hold 1 & 5 (auto?)") PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Hold 2 / Bet / Half Gamble / Previous Hand") PORT_CODE(KEYCODE_X)
@@ -594,8 +750,34 @@ static INPUT_PORTS_START( pokeroul )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Short Term Meters") PORT_TOGGLE PORT_CODE(KEYCODE_0)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Refill Mode") PORT_TOGGLE PORT_CODE(KEYCODE_9)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("0-8") PORT_CODE(KEYCODE_S)
+
+ PORT_START("PIA0.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA0.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN1")
+ PORT_START("PIA1.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE (2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE (2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -605,7 +787,7 @@ static INPUT_PORTS_START( pokeroul )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("IN2")
+ PORT_START("PIA1.B")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -615,7 +797,7 @@ static INPUT_PORTS_START( pokeroul )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("IN3")
+ PORT_START("PIA2.A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -625,6 +807,32 @@ static INPUT_PORTS_START( pokeroul )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_START("PIA2.B")
+ PORT_DIPNAME( 0x01, 0x01, "PIA2.B" )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
@@ -695,115 +903,57 @@ static VIDEO_UPDATE( coinmstr )
/* Declare PIA structure */
/* PIA 0 */
-static const pia6821_interface quizmstr_pia_0_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-/* PIA 1 */
-static const pia6821_interface quizmstr_pia_1_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-/* PIA 2 */
-static const pia6821_interface quizmstr_pia_2_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_1_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-
-/* PIA 0 */
-static const pia6821_interface trailblz_pia_0_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-/* PIA 1 */
-static const pia6821_interface trailblz_pia_1_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_1_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-/* PIA 2 */
-static const pia6821_interface trailblz_pia_2_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-
-/* PIA 0 */
-static const pia6821_interface pokeroul_pia_0_intf =
+static const pia6821_interface pia_0_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+ DEVCB_INPUT_PORT("PIA0.A"), /* port A in */
+ DEVCB_INPUT_PORT("PIA0.B"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
/* PIA 1 */
-static const pia6821_interface pokeroul_pia_1_intf =
+static const pia6821_interface pia_1_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_1_r, input_port_2_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+ DEVCB_INPUT_PORT("PIA1.A"), /* port A in */
+ DEVCB_INPUT_PORT("PIA1.B"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
/* PIA 2 */
-static const pia6821_interface pokeroul_pia_2_intf =
+static const pia6821_interface pia_2_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_3_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+ DEVCB_INPUT_PORT("PIA2.A"), /* port A in */
+ DEVCB_INPUT_PORT("PIA2.B"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static MACHINE_START( quizmstr )
-{
- pia_config(machine, 0, &quizmstr_pia_0_intf);
- pia_config(machine, 1, &quizmstr_pia_1_intf);
- pia_config(machine, 2, &quizmstr_pia_2_intf);
-}
-
-static MACHINE_RESET( quizmstr )
-{
- pia_reset();
-}
-
-static MACHINE_START( trailblz )
-{
- pia_config(machine, 0, &trailblz_pia_0_intf);
- pia_config(machine, 1, &trailblz_pia_1_intf);
- pia_config(machine, 2, &trailblz_pia_2_intf);
-}
-
-static MACHINE_RESET( trailblz )
-{
- pia_reset();
-}
-
-static MACHINE_START( pokeroul )
-{
- pia_config(machine, 0, &pokeroul_pia_0_intf);
- pia_config(machine, 1, &pokeroul_pia_1_intf);
- pia_config(machine, 2, &pokeroul_pia_2_intf);
-}
-
-static MACHINE_RESET( pokeroul )
-{
- pia_reset();
-}
static const ay8910_interface ay8912_interface =
{
@@ -832,6 +982,10 @@ static MACHINE_DRIVER_START( coinmstr )
MDRV_CPU_ADD("cpu",Z80,8000000) // ?
MDRV_CPU_PROGRAM_MAP(coinmstr_map,0)
MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
+
+ MDRV_PIA6821_ADD("pia0", pia_0_intf)
+ MDRV_PIA6821_ADD("pia1", pia_1_intf)
+ MDRV_PIA6821_ADD("pia2", pia_2_intf)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -861,36 +1015,24 @@ static MACHINE_DRIVER_START( quizmstr )
MDRV_IMPORT_FROM(coinmstr)
MDRV_CPU_MODIFY("cpu")
MDRV_CPU_IO_MAP(quizmstr_io_map,0)
-
- MDRV_MACHINE_START(quizmstr)
- MDRV_MACHINE_RESET(quizmstr)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( trailblz )
MDRV_IMPORT_FROM(coinmstr)
MDRV_CPU_MODIFY("cpu")
MDRV_CPU_IO_MAP(trailblz_io_map,0)
-
- MDRV_MACHINE_START(trailblz)
- MDRV_MACHINE_RESET(trailblz)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( supnudg2 )
MDRV_IMPORT_FROM(coinmstr)
MDRV_CPU_MODIFY("cpu")
MDRV_CPU_IO_MAP(supnudg2_io_map,0)
-
- MDRV_MACHINE_START(quizmstr)
- MDRV_MACHINE_RESET(quizmstr)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( pokeroul )
MDRV_IMPORT_FROM(coinmstr)
MDRV_CPU_MODIFY("cpu")
MDRV_CPU_IO_MAP(pokeroul_io_map,0)
-
- MDRV_MACHINE_START(pokeroul)
- MDRV_MACHINE_RESET(pokeroul)
MACHINE_DRIVER_END
/*
diff --git a/src/mame/drivers/combatsc.c b/src/mame/drivers/combatsc.c
index 9c33b66c347..76fc37e7a63 100644
--- a/src/mame/drivers/combatsc.c
+++ b/src/mame/drivers/combatsc.c
@@ -831,7 +831,7 @@ static DRIVER_INIT( combasct )
static DRIVER_INIT( combasc )
{
/* joystick instead of trackball */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0404, 0x0404, 0, 0, input_port_read_handler8(machine->portconfig, "IN1"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0404, 0x0404, 0, 0, "IN1");
combasc_init_common(machine);
}
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index 66afc1eae07..427bf2543d5 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -239,7 +239,7 @@ static const ay8910_interface ay8910_config =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
- DEVCB_NULL,//input_port_5_r,
+ DEVCB_NULL,
DEVCB_INPUT_PORT("DSW"),
DEVCB_NULL,
DEVCB_NULL
diff --git a/src/mame/drivers/exidy440.c b/src/mame/drivers/exidy440.c
index 1b04ed6fda5..a1527b7d5db 100644
--- a/src/mame/drivers/exidy440.c
+++ b/src/mame/drivers/exidy440.c
@@ -1947,8 +1947,8 @@ static DRIVER_INIT( topsecex )
/* extra input ports and scrolling */
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec5, 0x2ec5, 0, 0, topsecex_input_port_5_r);
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec6, 0x2ec6, 0, 0, input_port_read_handler8(machine->portconfig, "AN0"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec7, 0x2ec7, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec6, 0x2ec6, 0, 0, "AN0");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec7, 0x2ec7, 0, 0, "IN4");
topsecex_yscroll = memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec1, 0x2ec1, 0, 0, topsecex_yscroll_w);
}
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index dc7b379dcb1..dd3431f9126 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -1034,7 +1034,7 @@
#include "driver.h"
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "sound/ay8910.h"
#include "machine/eeprom.h"
#include "funworld.lh"
@@ -1072,7 +1072,7 @@ static WRITE8_DEVICE_HANDLER(funworld_lamp_b_w)
output_set_lamp_value(6, (data >> 1) & 1); /* button 7 (start/play) */
}
-static WRITE8_HANDLER(pia1_ca2_w)
+static WRITE8_DEVICE_HANDLER(pia1_ca2_w)
{
/* TAB and Impera games are writting 0x01 constantly, and 0x00 with each screen change */
// popmessage("PIA1 CA2: %02X", data);
@@ -1085,8 +1085,8 @@ static WRITE8_HANDLER(pia1_ca2_w)
static ADDRESS_MAP_START( funworld_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0x0800, 0x0803) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0a00, 0x0a03) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD(SOUND, "ay8910", ay8910_r)
AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE(SOUND, "ay8910", ay8910_address_data_w)
AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
@@ -1100,8 +1100,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( magicrd2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0x0800, 0x0803) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0a00, 0x0a03) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD(SOUND, "ay8910", ay8910_r)
AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE(SOUND, "ay8910", ay8910_address_data_w)
AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
@@ -1116,8 +1116,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cuoreuno_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0x0800, 0x0803) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0a00, 0x0a03) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0800, 0x0803) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0a00, 0x0a03) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x0c00, 0x0c00) AM_DEVREAD(SOUND, "ay8910", ay8910_r)
AM_RANGE(0x0c00, 0x0c01) AM_DEVWRITE(SOUND, "ay8910", ay8910_address_data_w)
AM_RANGE(0x0e00, 0x0e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
@@ -1131,8 +1131,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( royalmcu_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0x2800, 0x2803) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x2a00, 0x2a03) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x2a00, 0x2a03) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x2c00, 0x2c00) AM_DEVREAD(SOUND, "ay8910", ay8910_r)
AM_RANGE(0x2c00, 0x2c01) AM_DEVWRITE(SOUND, "ay8910", ay8910_address_data_w)
AM_RANGE(0x2e00, 0x2e00) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
@@ -1144,11 +1144,11 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( saloon_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0x0800, 0x0800) AM_READ(input_port_0_r)
- AM_RANGE(0x0a01, 0x0a01) AM_READ(input_port_1_r)
+ AM_RANGE(0x0800, 0x0800) AM_READ_PORT("IN0")
+ AM_RANGE(0x0a01, 0x0a01) AM_READ_PORT("IN1")
AM_RANGE(0x081c, 0x081c) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x081d, 0x081d) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
- AM_RANGE(0x1000, 0x1000) AM_READ(input_port_2_r)
+ AM_RANGE(0x1000, 0x1000) AM_READ_PORT("IN2")
AM_RANGE(0x1800, 0x1800) AM_DEVREAD(SOUND, "ay8910", ay8910_r)
AM_RANGE(0x1800, 0x1801) AM_DEVWRITE(SOUND, "ay8910", ay8910_address_data_w)
// AM_RANGE(0x2000, 0x2000) AM_READNOP /* some unknown reads... maybe a DSW */
@@ -1872,7 +1872,7 @@ static INPUT_PORTS_START( saloon )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-7") PORT_CODE(KEYCODE_J)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2-8") PORT_CODE(KEYCODE_K)
- PORT_START("IN3")
+ PORT_START("DSW")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-1") PORT_CODE(KEYCODE_Z)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-2") PORT_CODE(KEYCODE_X)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3-3") PORT_CODE(KEYCODE_C)
@@ -1943,26 +1943,34 @@ GFXDECODE_END
static const pia6821_interface pia0_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_0_r, input_port_1_r, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- 0, 0, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_INPUT_PORT("IN0"), /* port A in */
+ DEVCB_INPUT_PORT("IN1"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
static const pia6821_interface pia1_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_2_r, input_port_3_r, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- 0, 0, pia1_ca2_w, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_INPUT_PORT("IN2"), /* port A in */
+ DEVCB_INPUT_PORT("DSW"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_HANDLER(pia1_ca2_w), /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -2009,6 +2017,9 @@ static MACHINE_DRIVER_START( funworld )
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
MDRV_NVRAM_HANDLER(generic_0fill)
+
+ MDRV_PIA6821_ADD("pia0", pia0_intf)
+ MDRV_PIA6821_ADD("pia1", pia1_intf)
/* video hardware */
@@ -2884,9 +2895,6 @@ ROM_END
static DRIVER_INIT( funworld )
{
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( tabblue )
@@ -2924,10 +2932,6 @@ static DRIVER_INIT( tabblue )
src[x] = nad + nbd; /* decrypted byte */
}
-
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( jolyc980 )
@@ -2950,10 +2954,6 @@ static DRIVER_INIT( jolyc980 )
// ROM[0xc1fc] = 0x4c;
// ROM[0xc1fd] = 0x1c;
// ROM[0xc1fe] = 0x80;
-
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( magicd2a )
@@ -2974,10 +2974,6 @@ static DRIVER_INIT( magicd2a )
UINT8 *ROM = memory_region(machine, "maincpu");
ROM[0xc1c6] = 0x92;
-
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( magicd2b )
@@ -2999,10 +2995,6 @@ static DRIVER_INIT( magicd2b )
}
ROM[0xc1c6] = 0x92;
-
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( soccernw )
@@ -3019,10 +3011,6 @@ static DRIVER_INIT( soccernw )
// ROM[0xa33a] = 0xea;
// ROM[0xa33b] = 0xea;
// ROM[0xa33c] = 0xea;
-
- /* Initializing PIAs... */
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
}
static DRIVER_INIT( saloon )
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index 7a91e905bc5..27f0f1b8601 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -2735,10 +2735,10 @@ static DRIVER_INIT( explorer )
/* I/O appears to be direct, not via PPIs */
memory_install_readwrite8_handler(space, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
- memory_install_read8_handler(space, 0x8000, 0x8000, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN0"));
- memory_install_read8_handler(space, 0x8001, 0x8001, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN1"));
- memory_install_read8_handler(space, 0x8002, 0x8002, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN2"));
- memory_install_read8_handler(space, 0x8003, 0x8003, 0, 0xffc, input_port_read_handler8(machine->portconfig, "IN3"));
+ memory_install_read_port_handler(space, 0x8000, 0x8000, 0, 0xffc, "IN0");
+ memory_install_read_port_handler(space, 0x8001, 0x8001, 0, 0xffc, "IN1");
+ memory_install_read_port_handler(space, 0x8002, 0x8002, 0, 0xffc, "IN2");
+ memory_install_read_port_handler(space, 0x8003, 0x8003, 0, 0xffc, "IN3");
memory_install_write8_handler(space, 0x8000, 0x8000, 0, 0xfff, soundlatch_w);
memory_install_write8_handler(space, 0x9000, 0x9000, 0, 0xfff, explorer_sound_control_w);
}
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 6ef06dbc635..cbc2580f47b 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -605,7 +605,7 @@
#include "driver.h"
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "sound/discrete.h"
#include "pmpoker.lh"
@@ -761,28 +761,28 @@ static UINT8 pia0_PA_data;
There are 4 sets of 5 bits each and are connected to PIA0, portA.
The selector bits are located in PIA1, portB (bits 4-7).
*/
-static READ8_HANDLER( goldnpkr_mux_port_r )
+static READ8_DEVICE_HANDLER( goldnpkr_mux_port_r )
{
switch( mux_data & 0xf0 ) /* bits 4-7 */
{
- case 0x10: return input_port_read(space->machine, "IN0-0");
- case 0x20: return input_port_read(space->machine, "IN0-1");
- case 0x40: return input_port_read(space->machine, "IN0-2");
- case 0x80: return input_port_read(space->machine, "IN0-3");
+ case 0x10: return input_port_read(device->machine, "IN0-0");
+ case 0x20: return input_port_read(device->machine, "IN0-1");
+ case 0x40: return input_port_read(device->machine, "IN0-2");
+ case 0x80: return input_port_read(device->machine, "IN0-3");
}
return 0xff;
}
-static READ8_HANDLER( pottnpkr_mux_port_r )
+static READ8_DEVICE_HANDLER( pottnpkr_mux_port_r )
{
UINT8 pa_0_4 = 0xff, pa_7; /* Temporary place holder for bits 0 to 4 & 7 */
switch( mux_data & 0xf0 ) /* bits 4-7 */
{
- case 0x10: return input_port_read(space->machine, "IN0-0");
- case 0x20: return input_port_read(space->machine, "IN0-1");
- case 0x40: return input_port_read(space->machine, "IN0-2");
- case 0x80: return input_port_read(space->machine, "IN0-3");
+ case 0x10: return input_port_read(device->machine, "IN0-0");
+ case 0x20: return input_port_read(device->machine, "IN0-1");
+ case 0x40: return input_port_read(device->machine, "IN0-2");
+ case 0x80: return input_port_read(device->machine, "IN0-3");
}
pa_7 = (pia0_PA_data >> 7) & 1; /* To do: bit PA5 to pin CB1 */
@@ -791,12 +791,12 @@ static READ8_HANDLER( pottnpkr_mux_port_r )
return ( (pa_0_4 & 0x3f) | (pa_7 << 6) | (pa_7 << 7) ) ;
}
-static WRITE8_HANDLER( mux_w )
+static WRITE8_DEVICE_HANDLER( mux_w )
{
mux_data = data ^ 0xff; /* inverted */
}
-static WRITE8_HANDLER( mux_port_w )
+static WRITE8_DEVICE_HANDLER( mux_port_w )
{
pia0_PA_data = data;
}
@@ -836,7 +836,7 @@ static WRITE8_HANDLER( mux_port_w )
*/
-static WRITE8_HANDLER( lamps_a_w )
+static WRITE8_DEVICE_HANDLER( lamps_a_w )
{
output_set_lamp_value(0, 1 - ((data) & 1)); /* Lamp 0 */
output_set_lamp_value(1, 1 - ((data >> 1) & 1)); /* Lamp 1 */
@@ -862,16 +862,14 @@ static WRITE8_HANDLER( lamps_a_w )
*/
}
-static WRITE8_HANDLER( sound_w )
+static WRITE8_DEVICE_HANDLER( sound_w )
{
- const device_config *discrete = devtag_get_device(space->machine, SOUND, "discrete");
-
/* 555 voltage controlled */
logerror("Sound Data: %2x\n",data & 0x0f);
/* discrete sound is connected to PIA1, portA: bits 0-3 */
- discrete_sound_w(discrete, NODE_01, data >> 3 & 0x01);
- discrete_sound_w(discrete, NODE_10, data & 0x07);
+ discrete_sound_w(device, NODE_01, data >> 3 & 0x01);
+ discrete_sound_w(device, NODE_10, data & 0x07);
}
@@ -884,8 +882,8 @@ static ADDRESS_MAP_START( goldnpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
- AM_RANGE(0x0844, 0x0847) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0848, 0x084b) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x4000, 0x7fff) AM_ROM
@@ -896,8 +894,8 @@ static ADDRESS_MAP_START( pottnpkr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
- AM_RANGE(0x0844, 0x0847) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0848, 0x084b) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x2000, 0x3fff) AM_ROM
@@ -908,8 +906,8 @@ static ADDRESS_MAP_START( witchcrd_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size) /* battery backed RAM */
AM_RANGE(0x0800, 0x0800) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x0801, 0x0801) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
- AM_RANGE(0x0844, 0x0847) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x0848, 0x084b) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x0844, 0x0847) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x0848, 0x084b) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(goldnpkr_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(goldnpkr_colorram_w) AM_BASE(&colorram)
AM_RANGE(0x2000, 0x2000) AM_READ_PORT("SW2")
@@ -2096,54 +2094,52 @@ GFXDECODE_END
static const pia6821_interface goldnpkr_pia0_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- goldnpkr_mux_port_r, 0, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- 0, lamps_a_w, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_HANDLER(goldnpkr_mux_port_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(lamps_a_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
static const pia6821_interface goldnpkr_pia1_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_4_r, 0, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
-
- sound_w, mux_w, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_INPUT_PORT("SW1"), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", sound_w), /* port A out */
+ DEVCB_HANDLER(mux_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
/***** Jack Potten's Poker & Witch Card *****/
static const pia6821_interface pottnpkr_pia0_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- pottnpkr_mux_port_r, 0, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- mux_port_w, lamps_a_w, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
-};
-
-static const pia6821_interface pottnpkr_pia1_intf =
-{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_4_r, 0, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
-
- sound_w, mux_w, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_HANDLER(pottnpkr_mux_port_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(mux_port_w), /* port A out */
+ DEVCB_HANDLER(lamps_a_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -2312,6 +2308,9 @@ static MACHINE_DRIVER_START( goldnpkr_base )
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
MDRV_NVRAM_HANDLER(generic_0fill)
+
+ MDRV_PIA6821_ADD("pia0", goldnpkr_pia0_intf)
+ MDRV_PIA6821_ADD("pia1", goldnpkr_pia1_intf)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -2351,6 +2350,8 @@ static MACHINE_DRIVER_START( pottnpkr )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(pottnpkr_map, 0)
+ MDRV_PIA6821_MODIFY("pia0", pottnpkr_pia0_intf)
+
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD("discrete", DISCRETE, 0)
@@ -2366,6 +2367,8 @@ static MACHINE_DRIVER_START( witchcrd )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(witchcrd_map, 0)
+ MDRV_PIA6821_MODIFY("pia0", pottnpkr_pia0_intf)
+
/* video hardware */
MDRV_PALETTE_INIT(witchcrd)
@@ -3193,18 +3196,6 @@ ROM_END
* Driver Init *
*************************/
-static DRIVER_INIT( goldnpkr )
-{
- pia_config(machine, 0, &goldnpkr_pia0_intf);
- pia_config(machine, 1, &goldnpkr_pia1_intf);
-}
-
-static DRIVER_INIT( pottnpkr )
-{
- pia_config(machine, 0, &pottnpkr_pia0_intf);
- pia_config(machine, 1, &pottnpkr_pia1_intf);
-}
-
/*
Golden Poker H/W sets:
@@ -3250,9 +3241,6 @@ static DRIVER_INIT( royale )
// ROM[0x60bb] = 0xea;
// ROM[0x60bc] = 0xea;
-
- pia_config(machine, 0, &pottnpkr_pia0_intf);
- pia_config(machine, 1, &pottnpkr_pia1_intf);
}
/*************************
@@ -3260,46 +3248,46 @@ static DRIVER_INIT( royale )
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1981, goldnpkr, 0, goldnpkr, goldnpkr, goldnpkr, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Big Boy)", 0, layout_goldnpkr )
-GAMEL( 1981, goldnpkb, goldnpkr, goldnpkr, goldnpkr, goldnpkr, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Mini Boy)", 0, layout_goldnpkr )
-GAMEL( 1981, pmpoker, 0, goldnpkr, pmpoker, goldnpkr, ROT0, "PlayMan", "PlayMan Poker (german)", 0, layout_pmpoker )
-GAMEL( 198?, pottnpkr, 0, pottnpkr, pottnpkr, pottnpkr, ROT0, "Bootleg", "Jack Potten's Poker (set 1)", 0, layout_goldnpkr )
-GAMEL( 198?, potnpkra, pottnpkr, pottnpkr, potnpkra, pottnpkr, ROT0, "Bootleg on Coinmaster H/W", "Jack Potten's Poker (set 2)", 0, layout_goldnpkr )
-GAMEL( 198?, potnpkrb, pottnpkr, pottnpkr, pottnpkr, pottnpkr, ROT0, "Bootleg", "Jack Potten's Poker (set 3)", 0, layout_goldnpkr )
-GAMEL( 198?, potnpkrc, pottnpkr, pottnpkr, potnpkrc, pottnpkr, ROT0, "Bootleg", "Jack Potten's Poker (set 4)", 0, layout_goldnpkr )
-GAMEL( 198?, potnpkrd, pottnpkr, pottnpkr, potnpkrc, pottnpkr, ROT0, "Bootleg", "Jack Potten's Poker (set 5)", 0, layout_goldnpkr )
-GAMEL( 198?, potnpkre, pottnpkr, pottnpkr, pottnpkr, pottnpkr, ROT0, "Bootleg", "Jack Potten's Poker (set 6)", 0, layout_goldnpkr )
-GAMEL( 1991, goodluck, 0, witchcrd, goodluck, pottnpkr, ROT0, "Unknown", "Good Luck", 0, layout_goldnpkr )
+GAMEL( 1981, goldnpkr, 0, goldnpkr, goldnpkr, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Big Boy)", 0, layout_goldnpkr )
+GAMEL( 1981, goldnpkb, goldnpkr, goldnpkr, goldnpkr, 0, ROT0, "Bonanza Enterprises, Ltd", "Golden Poker Double Up (Mini Boy)", 0, layout_goldnpkr )
+GAMEL( 1981, pmpoker, 0, goldnpkr, pmpoker, 0, ROT0, "PlayMan", "PlayMan Poker (german)", 0, layout_pmpoker )
+GAMEL( 198?, pottnpkr, 0, pottnpkr, pottnpkr, 0, ROT0, "Bootleg", "Jack Potten's Poker (set 1)", 0, layout_goldnpkr )
+GAMEL( 198?, potnpkra, pottnpkr, pottnpkr, potnpkra, 0, ROT0, "Bootleg on Coinmaster H/W", "Jack Potten's Poker (set 2)", 0, layout_goldnpkr )
+GAMEL( 198?, potnpkrb, pottnpkr, pottnpkr, pottnpkr, 0, ROT0, "Bootleg", "Jack Potten's Poker (set 3)", 0, layout_goldnpkr )
+GAMEL( 198?, potnpkrc, pottnpkr, pottnpkr, potnpkrc, 0, ROT0, "Bootleg", "Jack Potten's Poker (set 4)", 0, layout_goldnpkr )
+GAMEL( 198?, potnpkrd, pottnpkr, pottnpkr, potnpkrc, 0, ROT0, "Bootleg", "Jack Potten's Poker (set 5)", 0, layout_goldnpkr )
+GAMEL( 198?, potnpkre, pottnpkr, pottnpkr, pottnpkr, 0, ROT0, "Bootleg", "Jack Potten's Poker (set 6)", 0, layout_goldnpkr )
+GAMEL( 1991, goodluck, 0, witchcrd, goodluck, 0, ROT0, "Unknown", "Good Luck", 0, layout_goldnpkr )
GAMEL( 198?, royale, 0, goldnpkr, royale, royale, ROT0, "Unknown", "Royale (set 1)", GAME_NOT_WORKING, layout_goldnpkr )
GAMEL( 198?, royalea, royale, goldnpkr, royale, royale, ROT0, "Unknown", "Royale (set 2)", GAME_NOT_WORKING, layout_goldnpkr )
-GAME( 1991, witchcrd, 0, witchcrd, witchcrd, pottnpkr, ROT0, "Video Klein", "Witch Card (Video Klein)", GAME_NOT_WORKING )
-GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, pottnpkr, ROT0, "Unknown", "Witch Card (spanish, witch game, set 1)", 0 )
-GAME( 1991, witchcdb, witchcrd, witchcrd, witchcda, pottnpkr, ROT0, "Unknown", "Witch Card (spanish, witch game, set 2)", 0 )
-GAME( 1991, witchcdc, witchcrd, witchcrd, witchcdc, pottnpkr, ROT0, "Unknown", "Witch Card (english, no witch game)", 0 )
-GAME( 1993, sloco93, 0, witchcrd, sloco93, pottnpkr, ROT0, "Unknown", "Super Loco 93 (spanish, set 1)", 0 )
-GAME( 1993, sloco93a, sloco93, witchcrd, sloco93, pottnpkr, ROT0, "Unknown", "Super Loco 93 (spanish, set 2)", 0 )
-GAME( 198?, maverik, 0, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Maverik", 0 )
-GAMEL( 1989, brasil89, 0, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Brasil 89", 0, layout_goldnpkr )
-GAME( 1991, poker91, 0, witchcrd, poker91, pottnpkr, ROT0, "Unknown", "Poker 91", 0 )
-GAMEL( 1990, bsuerte, 0, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 1)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertea, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 2)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerteb, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 3)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertec, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 4)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerted, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 5)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertee, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 6)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertef, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 7)", 0, layout_goldnpkr )
-GAME( 1991, bsuerteg, bsuerte, witchcrd, bsuertew, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 8)", 0 )
-GAME( 1991, bsuerteh, bsuerte, witchcrd, bsuertew, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 9)", 0 )
-GAMEL( 1991, bsuertei, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 10)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertej, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 11)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertek, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 12)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertel, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 13)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertem, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 14)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerten, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 15)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerteo, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 16)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertep, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 17)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerteq, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 18)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerter, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 19)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertes, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 20)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuertet, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 21)", 0, layout_goldnpkr )
-GAMEL( 1991, bsuerteu, bsuerte, witchcrd, bsuerte, pottnpkr, ROT0, "Unknown", "Buena Suerte (spanish, set 22)", 0, layout_goldnpkr )
+GAME( 1991, witchcrd, 0, witchcrd, witchcrd, 0, ROT0, "Video Klein", "Witch Card (Video Klein)", GAME_NOT_WORKING )
+GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, 0, ROT0, "Unknown", "Witch Card (spanish, witch game, set 1)", 0 )
+GAME( 1991, witchcdb, witchcrd, witchcrd, witchcda, 0, ROT0, "Unknown", "Witch Card (spanish, witch game, set 2)", 0 )
+GAME( 1991, witchcdc, witchcrd, witchcrd, witchcdc, 0, ROT0, "Unknown", "Witch Card (english, no witch game)", 0 )
+GAME( 1993, sloco93, 0, witchcrd, sloco93, 0, ROT0, "Unknown", "Super Loco 93 (spanish, set 1)", 0 )
+GAME( 1993, sloco93a, sloco93, witchcrd, sloco93, 0, ROT0, "Unknown", "Super Loco 93 (spanish, set 2)", 0 )
+GAME( 198?, maverik, 0, witchcrd, bsuerte, 0, ROT0, "Unknown", "Maverik", 0 )
+GAMEL( 1989, brasil89, 0, witchcrd, bsuerte, 0, ROT0, "Unknown", "Brasil 89", 0, layout_goldnpkr )
+GAME( 1991, poker91, 0, witchcrd, poker91, 0, ROT0, "Unknown", "Poker 91", 0 )
+GAMEL( 1990, bsuerte, 0, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 1)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertea, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 2)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerteb, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 3)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertec, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 4)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerted, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 5)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertee, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 6)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertef, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 7)", 0, layout_goldnpkr )
+GAME( 1991, bsuerteg, bsuerte, witchcrd, bsuertew, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 8)", 0 )
+GAME( 1991, bsuerteh, bsuerte, witchcrd, bsuertew, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 9)", 0 )
+GAMEL( 1991, bsuertei, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 10)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertej, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 11)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertek, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 12)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertel, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 13)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertem, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 14)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerten, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 15)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerteo, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 16)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertep, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 17)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerteq, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 18)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerter, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 19)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertes, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 20)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuertet, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 21)", 0, layout_goldnpkr )
+GAMEL( 1991, bsuerteu, bsuerte, witchcrd, bsuerte, 0, ROT0, "Unknown", "Buena Suerte (spanish, set 22)", 0, layout_goldnpkr )
diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c
index d2eda7fb1c6..57902c2bfa9 100644
--- a/src/mame/drivers/gsword.c
+++ b/src/mame/drivers/gsword.c
@@ -248,7 +248,8 @@ static const struct TAITO8741interface gsword_8741interface=
4, /* 4 chips */
{ TAITO8741_MASTER,TAITO8741_SLAVE,TAITO8741_PORT,TAITO8741_PORT }, /* program mode */
{ 1,0,0,0 }, /* serial port connection */
- { input_port_7_r,input_port_6_r,gsword_8741_2_r,gsword_8741_3_r } /* port handler */
+ { NULL,NULL,gsword_8741_2_r,gsword_8741_3_r }, /* port handler */
+ { "DSW2","DSW1",NULL,NULL }
};
static MACHINE_RESET( gsword )
diff --git a/src/mame/drivers/himesiki.c b/src/mame/drivers/himesiki.c
index 2015de68a4a..becf569eb6c 100644
--- a/src/mame/drivers/himesiki.c
+++ b/src/mame/drivers/himesiki.c
@@ -126,12 +126,12 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( himesiki_iom0, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(input_port_2_r)
- AM_RANGE(0x01, 0x01) AM_READ(input_port_3_r)
- AM_RANGE(0x02, 0x02) AM_READ(input_port_4_r)
+ AM_RANGE(0x00, 0x00) AM_READ_PORT("1P")
+ AM_RANGE(0x01, 0x01) AM_READ_PORT("2P")
+ AM_RANGE(0x02, 0x02) AM_READ_PORT("OTHERS")
AM_RANGE(0x03, 0x03) AM_WRITENOP // 8255 cw
- AM_RANGE(0x04, 0x04) AM_READ(input_port_0_r)
- AM_RANGE(0x05, 0x05) AM_READ(input_port_1_r)
+ AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")
+ AM_RANGE(0x05, 0x05) AM_READ_PORT("DSW2")
AM_RANGE(0x06, 0x06) AM_WRITE(himesiki_rombank_w)
AM_RANGE(0x07, 0x07) AM_WRITENOP // 8255 cw
AM_RANGE(0x08, 0x08) AM_WRITE(himesiki_flip_w)
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c
index bc7201c50db..c586608c029 100644
--- a/src/mame/drivers/itech8.c
+++ b/src/mame/drivers/itech8.c
@@ -2713,11 +2713,11 @@ static DRIVER_INIT( neckneck )
static DRIVER_INIT( rimrockn )
{
/* additional input ports */
- memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0161, 0x0161, 0, 0, input_port_read_handler8(machine->portconfig, "161"));
- memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0162, 0x0162, 0, 0, input_port_read_handler8(machine->portconfig, "162"));
- memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0163, 0x0163, 0, 0, input_port_read_handler8(machine->portconfig, "163"));
- memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0164, 0x0164, 0, 0, input_port_read_handler8(machine->portconfig, "164"));
- memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0165, 0x0165, 0, 0, input_port_read_handler8(machine->portconfig, "165"));
+ memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0161, 0x0161, 0, 0, "161");
+ memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0162, 0x0162, 0, 0, "162");
+ memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0163, 0x0163, 0, 0, "163");
+ memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0164, 0x0164, 0, 0, "164");
+ memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0165, 0x0165, 0, 0, "165");
/* different banking mechanism (disable the old one) */
memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01a0, 0x01a0, 0, 0, rimrockn_bank_w);
diff --git a/src/mame/drivers/jalmah.c b/src/mame/drivers/jalmah.c
index 0c7128186ca..eab24993945 100644
--- a/src/mame/drivers/jalmah.c
+++ b/src/mame/drivers/jalmah.c
@@ -923,8 +923,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( urashima, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ(input_port_0_word_r)
- AM_RANGE(0x080002, 0x080003) AM_READ(input_port_1_word_r)
+ AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW")
// 0x080004, 0x080005 MCU read,different for each game
AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w)
// 0x080012, 0x080013 MCU write related,same for each game
diff --git a/src/mame/drivers/jokrwild.c b/src/mame/drivers/jokrwild.c
index b8c590dc9da..a11bb4ddbef 100644
--- a/src/mame/drivers/jokrwild.c
+++ b/src/mame/drivers/jokrwild.c
@@ -93,7 +93,7 @@
#include "driver.h"
#include "cpu/m6809/m6809.h"
#include "video/mc6845.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
/*************************
@@ -176,8 +176,8 @@ static ADDRESS_MAP_START( jokrwild_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_WRITE(jokrwild_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x2000, 0x27ff) AM_RAM AM_WRITE(jokrwild_colorram_w) AM_BASE(&colorram)
// AM_RANGE(0x0010, 0x0010) AM_READ(random_gen_r)
-// AM_RANGE(0x4004, 0x4007) AM_READWRITE(pia_0_r, pia_0_w)
-// AM_RANGE(0x4008, 0x400b) AM_READWRITE(pia_1_r, pia_1_w)
+// AM_RANGE(0x4004, 0x4007) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+// AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
// AM_RANGE(0x4010, 0x4010) AM_READNOP /* R ???? */
AM_RANGE(0x6000, 0x6000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0x6001, 0x6001) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
@@ -309,26 +309,34 @@ GFXDECODE_END
static const pia6821_interface pia0_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_0_r, input_port_1_r, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- 0, 0, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_INPUT_PORT("IN0"), /* port A in */
+ DEVCB_INPUT_PORT("IN1"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
static const pia6821_interface pia1_intf =
{
- /* PIA inputs: A, B, CA1, CB1, CA2, CB2 */
- input_port_2_r, input_port_3_r, 0, 0, 0, 0,
-
- /* PIA outputs: A, B, CA2, CB2 */
- 0, 0, 0, 0,
-
- /* PIA IRQs: A, B */
- 0, 0
+ DEVCB_INPUT_PORT("IN2"), /* port A in */
+ DEVCB_INPUT_PORT("IN3"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -362,6 +370,9 @@ static MACHINE_DRIVER_START( jokrwild )
// MDRV_NVRAM_HANDLER(generic_0fill)
+ MDRV_PIA6821_ADD("pia0", pia0_intf)
+ MDRV_PIA6821_ADD("pia1", pia1_intf)
+
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
@@ -437,10 +448,6 @@ static DRIVER_INIT( jokrwild )
offs = i & 0xff;
srcp[i] = srcp[i] ^ 0xcc ^ offs;
}
-
- /* Initializing PIAs... */
-// pia_config(machine, 0, &pia0_intf);
-// pia_config(machine, 1, &pia1_intf);
}
diff --git a/src/mame/drivers/konamigv.c b/src/mame/drivers/konamigv.c
index 2d9e53573b6..72561cf62f6 100644
--- a/src/mame/drivers/konamigv.c
+++ b/src/mame/drivers/konamigv.c
@@ -722,11 +722,11 @@ static DRIVER_INIT( kdeadeye )
{
intelflash_init( machine, 0, FLASH_SHARP_LH28F400, NULL );
- memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, input_port_read_handler32(machine->portconfig, "GUNX1") );
- memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, input_port_read_handler32(machine->portconfig, "GUNY1") );
- memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800a0, 0x1f6800a3, 0, 0, input_port_read_handler32(machine->portconfig, "GUNX2") );
- memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800b0, 0x1f6800b3, 0, 0, input_port_read_handler32(machine->portconfig, "GUNY2") );
- memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c3, 0, 0, input_port_read_handler32(machine->portconfig, "BUTTONS") );
+ memory_install_read_port_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, "GUNX1" );
+ memory_install_read_port_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, "GUNY1" );
+ memory_install_read_port_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800a0, 0x1f6800a3, 0, 0, "GUNX2" );
+ memory_install_read_port_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800b0, 0x1f6800b3, 0, 0, "GUNY2" );
+ memory_install_read_port_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c3, 0, 0, "BUTTONS" );
memory_install_write32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0, kdeadeye_0_w );
memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f380000, 0x1f3fffff, 0, 0, btcflash_r, btcflash_w );
diff --git a/src/mame/drivers/leland.c b/src/mame/drivers/leland.c
index 422b9f08821..c2e8d77512b 100644
--- a/src/mame/drivers/leland.c
+++ b/src/mame/drivers/leland.c
@@ -2233,8 +2233,8 @@ static DRIVER_INIT( teamqb )
init_master_ports(machine, 0x40, 0x80);
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, input_port_read_handler8(machine->portconfig, "IN5"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
}
@@ -2263,8 +2263,8 @@ static DRIVER_INIT( aafb )
init_master_ports(machine, 0x00, 0xc0);
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, input_port_read_handler8(machine->portconfig, "IN5"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
}
@@ -2293,8 +2293,8 @@ static DRIVER_INIT( aafbb )
init_master_ports(machine, 0x80, 0x40);
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, input_port_read_handler8(machine->portconfig, "IN5"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
}
@@ -2323,8 +2323,8 @@ static DRIVER_INIT( aafbd2p )
init_master_ports(machine, 0x00, 0x40);
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, input_port_read_handler8(machine->portconfig, "IN5"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
}
@@ -2429,7 +2429,7 @@ static DRIVER_INIT( pigout )
init_master_ports(machine, 0x00, 0x40);
/* set up additional input ports */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, input_port_read_handler8(machine->portconfig, "IN4"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN4");
}
diff --git a/src/mame/drivers/liberate.c b/src/mame/drivers/liberate.c
index 14f68ea6805..9f31061509b 100644
--- a/src/mame/drivers/liberate.c
+++ b/src/mame/drivers/liberate.c
@@ -927,7 +927,7 @@ static DRIVER_INIT( yellowcb )
{
DRIVER_INIT_CALL(prosport);
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa000, 0xa000, 0, 0, input_port_0_r);
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa000, 0xa000, 0, 0, "IN0");
}
static DRIVER_INIT( liberate )
diff --git a/src/mame/drivers/mcr68.c b/src/mame/drivers/mcr68.c
index 8c18d0d0e81..414026b9a69 100644
--- a/src/mame/drivers/mcr68.c
+++ b/src/mame/drivers/mcr68.c
@@ -73,10 +73,10 @@ static UINT8 protection_data[5];
*
*************************************/
-READ8_HANDLER( zwackery_port_2_r )
+READ8_DEVICE_HANDLER( zwackery_port_2_r )
{
- int result = input_port_read(space->machine, "IN2");
- int wheel = input_port_read(space->machine, "IN5");
+ int result = input_port_read(device->machine, "IN2");
+ int wheel = input_port_read(device->machine, "IN5");
return result | ((wheel >> 2) & 0x3e);
}
@@ -334,9 +334,9 @@ static ADDRESS_MAP_START( zwackery_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x080000, 0x080fff) AM_RAM
AM_RANGE(0x084000, 0x084fff) AM_RAM
AM_RANGE(0x100000, 0x10000f) AM_READWRITE(zwackery_6840_r, mcr68_6840_upper_w)
- AM_RANGE(0x104000, 0x104007) AM_READWRITE8(pia_2_r, pia_2_w, 0xff00)
- AM_RANGE(0x108000, 0x108007) AM_READWRITE8(pia_3_r, pia_3_w, 0x00ff)
- AM_RANGE(0x10c000, 0x10c007) AM_READWRITE8(pia_4_r, pia_4_w, 0x00ff)
+ AM_RANGE(0x104000, 0x104007) AM_DEVREADWRITE8(PIA6821, "pia0", pia_r, pia_w, 0xff00)
+ AM_RANGE(0x108000, 0x108007) AM_DEVREADWRITE8(PIA6821, "pia1", pia_r, pia_w, 0x00ff)
+ AM_RANGE(0x10c000, 0x10c007) AM_DEVREADWRITE8(PIA6821, "pia2", pia_r, pia_w, 0x00ff)
AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(zwackery_videoram_w) AM_BASE(&videoram16) AM_SIZE(&videoram_size)
AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(zwackery_paletteram_w) AM_BASE(&paletteram16)
AM_RANGE(0xc00000, 0xc00fff) AM_RAM_WRITE(zwackery_spriteram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
@@ -888,6 +888,10 @@ static MACHINE_DRIVER_START( zwackery )
// MDRV_WATCHDOG_VBLANK_INIT(8)
MDRV_MACHINE_START(zwackery)
MDRV_MACHINE_RESET(zwackery)
+
+ MDRV_PIA6821_ADD("pia0", zwackery_pia0_intf)
+ MDRV_PIA6821_ADD("pia1", zwackery_pia1_intf)
+ MDRV_PIA6821_ADD("pia2", zwackery_pia2_intf)
/* video hardware */
MDRV_SCREEN_ADD("screen", RASTER)
@@ -949,7 +953,9 @@ static MACHINE_DRIVER_START( spyhunt2 )
/* basic machine hardware */
MDRV_IMPORT_FROM(mcr68)
- MDRV_IMPORT_FROM(turbo_chip_squeak_plus_sounds_good)
+ MDRV_IMPORT_FROM(sounds_good)
+ MDRV_SPEAKER_REMOVE("mono")
+ MDRV_IMPORT_FROM(turbo_chip_squeak)
MACHINE_DRIVER_END
diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c
index 5590ccf8752..6c8cd64bf50 100644
--- a/src/mame/drivers/megatech.c
+++ b/src/mame/drivers/megatech.c
@@ -533,7 +533,7 @@ static ADDRESS_MAP_START( megatech_bios_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x6800, 0x6800) AM_READ_PORT("BIOS_IN0")
AM_RANGE(0x6801, 0x6801) AM_READ_PORT("BIOS_IN1")
AM_RANGE(0x6802, 0x6807) AM_READWRITE(bios_ctrl_r, bios_ctrl_w)
-// AM_RANGE(0x6805, 0x6805) AM_READ(input_port_8_r)
+// AM_RANGE(0x6805, 0x6805) AM_READ_PORT("???")
AM_RANGE(0x7000, 0x77ff) AM_ROM // from bios rom (0x7000-0x77ff populated in ROM)
//AM_RANGE(0x7800, 0x7fff) AM_RAM // ?
AM_RANGE(0x8000, 0x9fff) AM_READ(megatech_instr_r) // window into 68k address space, reads instr rom and writes to reset banks on z80 carts?
diff --git a/src/mame/drivers/mitchell.c b/src/mame/drivers/mitchell.c
index c286c7aa423..bb3f2af3256 100644
--- a/src/mame/drivers/mitchell.c
+++ b/src/mame/drivers/mitchell.c
@@ -391,8 +391,8 @@ static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
The Mahjong games and Block Block need special input treatment */
AM_RANGE(0x01, 0x01) AM_WRITE(input_w)
AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_READ(input_port_12_r) AM_DEVWRITE(SOUND, "ym", ym2413_data_port_w) /* mgakuen only */
- AM_RANGE(0x04, 0x04) AM_READ(input_port_13_r) AM_DEVWRITE(SOUND, "ym", ym2413_register_port_w) /* mgakuen only */
+ AM_RANGE(0x03, 0x03) AM_DEVWRITE(SOUND, "ym", ym2413_data_port_w)
+ AM_RANGE(0x04, 0x04) AM_DEVWRITE(SOUND, "ym", ym2413_register_port_w)
AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE(SOUND, "oki", okim6295_w)
AM_RANGE(0x06, 0x06) AM_WRITE(SMH_NOP) /* watchdog? irq ack? */
AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */
@@ -2105,6 +2105,8 @@ static DRIVER_INIT( mgakuen )
{
input_type = 1;
configure_banks(machine);
+ memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, "DSW1");
+ memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, "DSW2");
}
static DRIVER_INIT( mgakuen2 )
{
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index 1778091064b..23793dc133f 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1214,8 +1214,12 @@ static WRITE8_HANDLER( s23_mcu_settings_w )
s23_setstate ^= 1;
}
+static INPUT_PORTS_START( ss23 )
+ PORT_START("H8PORT")
+INPUT_PORTS_END
+
static ADDRESS_MAP_START( s23h8iomap, ADDRESS_SPACE_IO, 8 )
- AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ( input_port_0_r )
+ AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT( "H8PORT" )
AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ( s23_mcu_p8_r ) AM_WRITENOP
AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE( s23_mcu_pa_r, s23_mcu_pa_w )
AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE( s23_mcu_portB_r, s23_mcu_portB_w )
@@ -1720,10 +1724,10 @@ ROM_START( finfrl2j )
ROM_END
/* Games */
-GAME( 1997, rapidrvr, 0, gorgon, 0, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1997, motoxgo, 0, s23, 0, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1997, timecrs2, 0, s23, 0, ss23, ROT0, "Namco", "Time Crisis 2 (TSS3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1997, timcrs2b, timecrs2, s23, 0, ss23, ROT0, "Namco", "Time Crisis 2 (TSS2 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1999, 500gp, 0, ss23, 0, ss23, ROT0, "Namco", "500GP", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1999, finfurl2, 0, ss23, 0, ss23, ROT0, "Namco", "Final Furlong 2 (World)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1999, finfrl2j, finfurl2, ss23, 0, ss23, ROT0, "Namco", "Final Furlong 2 (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1997, rapidrvr, 0, gorgon, ss23, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1997, motoxgo, 0, s23, ss23, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1997, timecrs2, 0, s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1997, timcrs2b, timecrs2, s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS2 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1999, 500gp, 0, ss23, ss23, ss23, ROT0, "Namco", "500GP", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1999, finfurl2, 0, ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (World)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
+GAME( 1999, finfrl2j, finfurl2, ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/neodrvr.c b/src/mame/drivers/neodrvr.c
index 8c3c1d24638..abdc90fb885 100644
--- a/src/mame/drivers/neodrvr.c
+++ b/src/mame/drivers/neodrvr.c
@@ -7555,8 +7555,8 @@ static DRIVER_INIT( jockeygp )
memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, SMH_BANK8, SMH_BANK8);
memory_set_bankptr(machine, NEOGEO_BANK_EXTRA_RAM, extra_ram);
-// memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, input_port_read_handler16(machine->portconfig, "IN5") );
-// memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, input_port_read_handler16(machine->portconfig, "IN6") );
+// memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
+// memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
DRIVER_INIT_CALL(neogeo);
}
@@ -7572,8 +7572,8 @@ static DRIVER_INIT( vliner )
memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, SMH_BANK8, SMH_BANK8);
memory_set_bankptr(machine, NEOGEO_BANK_EXTRA_RAM, extra_ram);
- memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, input_port_read_handler16(machine->portconfig, "IN5") );
- memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, input_port_read_handler16(machine->portconfig, "IN6") );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
DRIVER_INIT_CALL(neogeo);
}
@@ -7581,7 +7581,7 @@ static DRIVER_INIT( vliner )
static DRIVER_INIT( kog )
{
/* overlay cartridge ROM */
- memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0ffffe, 0x0fffff, 0, 0, input_port_read_handler16(machine->portconfig, "JUMPER") );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0ffffe, 0x0fffff, 0, 0, "JUMPER");
kog_px_decrypt(machine);
neogeo_bootleg_sx_decrypt(machine, 1);
diff --git a/src/mame/drivers/nyny.c b/src/mame/drivers/nyny.c
index 6307b92cb55..18e7b657300 100644
--- a/src/mame/drivers/nyny.c
+++ b/src/mame/drivers/nyny.c
@@ -63,7 +63,7 @@
#include "driver.h"
#include "machine/rescap.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "machine/74123.h"
#include "video/mc6845.h"
#include "cpu/m6800/m6800.h"
@@ -100,7 +100,7 @@ static UINT16 star_shift_reg;
*
*************************************/
-static WRITE8_HANDLER( flipscreen_w );
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w );
static WRITE8_HANDLER( audio_2_command_w );
@@ -111,17 +111,19 @@ static WRITE8_HANDLER( audio_2_command_w );
*
*************************************/
-static void main_cpu_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( main_cpu_irq )
{
- int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1) | pia_get_irq_b(2);
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "pia1");
+ const device_config *pia2 = devtag_get_device(device->machine, PIA6821, "pia2");
+ int combined_state = pianew_get_irq_a(pia1) | pianew_get_irq_b(pia1) | pianew_get_irq_b(pia2);
- cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
-static void main_cpu_firq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( main_cpu_firq )
{
- cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
}
@@ -134,17 +136,17 @@ static void main_cpu_firq(running_machine *machine, int state)
static INTERRUPT_GEN( update_pia_1 )
{
- const address_space *space = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "pia1");
/* update the different PIA pins from the input ports */
/* CA1 - copy of PA0 (COIN1) */
- pia_1_ca1_w(space, 0, input_port_read(device->machine, "IN0") & 0x01);
+ pia_ca1_w(pia1, 0, input_port_read(device->machine, "IN0") & 0x01);
/* CA2 - copy of PA1 (SERVICE1) */
- pia_1_ca2_w(space, 0, input_port_read(device->machine, "IN0") & 0x02);
+ pia_ca2_w(pia1, 0, input_port_read(device->machine, "IN0") & 0x02);
/* CB1 - (crosshatch) */
- pia_1_cb1_w(space, 0, input_port_read(device->machine, "CROSS"));
+ pia_cb1_w(pia1, 0, input_port_read(device->machine, "CROSS"));
/* CB2 - NOT CONNECTED */
}
@@ -152,9 +154,18 @@ static INTERRUPT_GEN( update_pia_1 )
static const pia6821_interface pia_1_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, input_port_1_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ main_cpu_irq, main_cpu_irq
+ DEVCB_INPUT_PORT("IN0"), /* port A in */
+ DEVCB_INPUT_PORT("IN1"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(main_cpu_irq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
@@ -165,13 +176,13 @@ static const pia6821_interface pia_1_intf =
*
*************************************/
-static WRITE8_HANDLER( pia_2_port_a_w )
+static WRITE8_DEVICE_HANDLER( pia_2_port_a_w )
{
star_delay_counter = (star_delay_counter & 0x0f00) | data;
}
-static WRITE8_HANDLER( pia_2_port_b_w )
+static WRITE8_DEVICE_HANDLER( pia_2_port_b_w )
{
/* bits 0-3 go to bits 8-11 of the star delay counter */
star_delay_counter = (star_delay_counter & 0x00ff) | ((data & 0x0f) << 8);
@@ -180,15 +191,24 @@ static WRITE8_HANDLER( pia_2_port_b_w )
star_enable = data & 0x10;
/* bits 5-7 go to the music board connector */
- audio_2_command_w(space, 0, data & 0xe0);
+ audio_2_command_w(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, data & 0xe0);
}
static const pia6821_interface pia_2_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ pia_2_port_a_w, pia_2_port_b_w, flipscreen_w, 0,
- /*irqs : A/B */ main_cpu_firq, main_cpu_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(pia_2_port_a_w), /* port A out */
+ DEVCB_HANDLER(pia_2_port_b_w), /* port B out */
+ DEVCB_LINE(flipscreen_w), /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(main_cpu_firq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
@@ -207,8 +227,8 @@ static const pia6821_interface pia_2_intf =
static WRITE8_DEVICE_HANDLER(ic48_1_74123_output_changed)
{
- const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_2_ca1_w(space, 0, data);
+ const device_config *pia2 = devtag_get_device(device->machine, PIA6821, "pia2");
+ pia_ca1_w(pia2, 0, data);
}
@@ -233,9 +253,6 @@ static const ttl74123_config ic48_1_config =
static MACHINE_START( nyny )
{
- pia_config(machine, 1, &pia_1_intf);
- pia_config(machine, 2, &pia_2_intf);
-
/* setup for save states */
state_save_register_global(machine, flipscreen);
state_save_register_global(machine, star_enable);
@@ -247,19 +264,6 @@ static MACHINE_START( nyny )
/*************************************
*
- * Machine reset
- *
- *************************************/
-
-static MACHINE_RESET( nyny )
-{
- pia_reset();
-}
-
-
-
-/*************************************
- *
* Video system
*
*************************************/
@@ -267,9 +271,9 @@ static MACHINE_RESET( nyny )
#define NUM_PENS (8)
-static WRITE8_HANDLER( flipscreen_w )
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w )
{
- flipscreen = data ? 0 : 1;
+ flipscreen = state ? 0 : 1;
}
@@ -495,11 +499,13 @@ static WRITE8_HANDLER( audio_2_command_w )
static READ8_HANDLER( nyny_pia_1_2_r )
{
+ const device_config *pia1 = devtag_get_device(space->machine, PIA6821, "pia1");
+ const device_config *pia2 = devtag_get_device(space->machine, PIA6821, "pia2");
UINT8 ret = 0;
/* the address bits are directly connected to the chip selects */
- if (offset & 0x04) ret = pia_1_r(space, offset & 0x03);
- if (offset & 0x08) ret = pia_2_alt_r(space, offset & 0x03);
+ if (offset & 0x04) ret = pia_r(pia1, offset & 0x03);
+ if (offset & 0x08) ret = pia_alt_r(pia2, offset & 0x03);
return ret;
}
@@ -507,9 +513,12 @@ static READ8_HANDLER( nyny_pia_1_2_r )
static WRITE8_HANDLER( nyny_pia_1_2_w )
{
+ const device_config *pia1 = devtag_get_device(space->machine, PIA6821, "pia1");
+ const device_config *pia2 = devtag_get_device(space->machine, PIA6821, "pia2");
+
/* the address bits are directly connected to the chip selects */
- if (offset & 0x04) pia_1_w(space, offset & 0x03, data);
- if (offset & 0x08) pia_2_alt_w(space, offset & 0x03, data);
+ if (offset & 0x04) pia_w(pia1, offset & 0x03, data);
+ if (offset & 0x08) pia_alt_w(pia2, offset & 0x03, data);
}
@@ -667,7 +676,6 @@ static MACHINE_DRIVER_START( nyny )
MDRV_CPU_PROGRAM_MAP(nyny_audio_2_map,0)
MDRV_MACHINE_START(nyny)
- MDRV_MACHINE_RESET(nyny)
MDRV_NVRAM_HANDLER(generic_0fill)
/* video hardware */
@@ -682,6 +690,9 @@ static MACHINE_DRIVER_START( nyny )
/* 74LS123 */
MDRV_TTL74123_ADD("ic48_1", ic48_1_config)
+
+ MDRV_PIA6821_ADD("pia1", pia_1_intf)
+ MDRV_PIA6821_ADD("pia2", pia_2_intf)
/* audio hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c
index 3a618610695..d29ce230c14 100644
--- a/src/mame/drivers/phoenix.c
+++ b/src/mame/drivers/phoenix.c
@@ -1036,7 +1036,7 @@ ROM_END
static DRIVER_INIT( condor )
{
/* additional inputs for coinage */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x5000, 0, 0, input_port_read_handler8(machine->portconfig, "DSW1") );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x5000, 0, 0, "DSW1");
}
diff --git a/src/mame/drivers/polepos.c b/src/mame/drivers/polepos.c
index 0392795ffd1..10c1d680e98 100644
--- a/src/mame/drivers/polepos.c
+++ b/src/mame/drivers/polepos.c
@@ -1738,9 +1738,9 @@ static DRIVER_INIT( topracra )
polepos_gear_bit = 0x20;
/* extra direct mapped inputs read */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x02, 0x02, 0, 0, input_port_read_handler8(machine->portconfig, "STEER"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, input_port_read_handler8(machine->portconfig, "IN0"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, input_port_read_handler8(machine->portconfig, "DSWA"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x02, 0x02, 0, 0, "STEER");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, "IN0");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, "DSWA");
}
diff --git a/src/mame/drivers/qix.c b/src/mame/drivers/qix.c
index e61571e31aa..87e54dcd558 100644
--- a/src/mame/drivers/qix.c
+++ b/src/mame/drivers/qix.c
@@ -224,7 +224,6 @@ Interrupts:
#include "driver.h"
#include "cpu/m6805/m6805.h"
#include "rendlay.h"
-#include "machine/6821pia.h"
#include "qix.h"
#include "cpu/m6809/m6809.h"
@@ -244,10 +243,10 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8800, 0x8bff) AM_READ(SMH_NOP) /* 6850 ACIA */
AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
- AM_RANGE(0x9000, 0x93ff) AM_READWRITE(pia_3_r, pia_3_w)
- AM_RANGE(0x9400, 0x97ff) AM_READWRITE(pia_0_r, qix_pia_0_w)
- AM_RANGE(0x9800, 0x9bff) AM_READWRITE(pia_1_r, pia_1_w)
- AM_RANGE(0x9c00, 0x9fff) AM_READWRITE(pia_2_r, pia_2_w)
+ AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE(PIA6821, "sndpia0", pia_r, pia_w)
+ AM_RANGE(0x9400, 0x97ff) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, qix_pia_w)
+ AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
+ AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE(PIA6821, "pia2", pia_r, pia_w)
AM_RANGE(0xa000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -258,10 +257,10 @@ static ADDRESS_MAP_START( zoo_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0800, 0x0bff) AM_READ(SMH_NOP) /* ACIA */
AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
- AM_RANGE(0x1000, 0x13ff) AM_READWRITE(pia_3_r, pia_3_w)
- AM_RANGE(0x1400, 0x17ff) AM_READWRITE(pia_0_r, qix_pia_0_w)
- AM_RANGE(0x1800, 0x1bff) AM_READWRITE(pia_1_r, pia_1_w)
- AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(pia_2_r, pia_2_w)
+ AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE(PIA6821, "sndpia0", pia_r, pia_w)
+ AM_RANGE(0x1400, 0x17ff) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, qix_pia_w)
+ AM_RANGE(0x1800, 0x1bff) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
+ AM_RANGE(0x1c00, 0x1fff) AM_DEVREADWRITE(PIA6821, "pia2", pia_r, pia_w)
AM_RANGE(0x8000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -549,7 +548,7 @@ static const m6809_config encryption_config =
TRUE, /* encrypt only the first byte in 10 xx and 11 xx opcodes */
};
-static MACHINE_DRIVER_START( qix )
+static MACHINE_DRIVER_START( qix_base )
MDRV_DRIVER_DATA(qix_state)
@@ -562,14 +561,20 @@ static MACHINE_DRIVER_START( qix )
/* Zookeeper settings and high score table seem especially sensitive to this */
MDRV_QUANTUM_PERFECT_CPU("maincpu")
- MDRV_MACHINE_START(qix)
MDRV_MACHINE_RESET(qix)
MDRV_NVRAM_HANDLER(generic_0fill)
+
+ MDRV_PIA6821_ADD("pia0", qix_pia_0_intf)
+ MDRV_PIA6821_ADD("pia1", qix_pia_1_intf)
+ MDRV_PIA6821_ADD("pia2", qix_pia_2_intf)
/* video hardware */
MDRV_IMPORT_FROM(qix_video)
+MACHINE_DRIVER_END
- /* audio hardware */
+
+static MACHINE_DRIVER_START( qix )
+ MDRV_IMPORT_FROM(qix_base)
MDRV_IMPORT_FROM(qix_audio)
MACHINE_DRIVER_END
@@ -583,6 +588,9 @@ static MACHINE_DRIVER_START( mcu )
MDRV_CPU_PROGRAM_MAP(mcu_map,0)
MDRV_MACHINE_START(qixmcu)
+
+ MDRV_PIA6821_MODIFY("pia0", qixmcu_pia_0_intf)
+ MDRV_PIA6821_MODIFY("pia2", qixmcu_pia_2_intf)
MACHINE_DRIVER_END
@@ -602,12 +610,13 @@ MACHINE_DRIVER_END
static MACHINE_DRIVER_START( slither )
/* basic machine hardware */
- MDRV_IMPORT_FROM(qix)
+ MDRV_IMPORT_FROM(qix_base)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_CLOCK(SLITHER_CLOCK_OSC/4/4) /* 1.34 MHz */
- MDRV_MACHINE_START(slither)
+ MDRV_PIA6821_MODIFY("pia1", slither_pia_1_intf)
+ MDRV_PIA6821_MODIFY("pia2", slither_pia_2_intf)
/* video hardware */
MDRV_IMPORT_FROM(slither_video)
@@ -635,7 +644,7 @@ ROM_START( qix )
ROM_LOAD( "u18", 0xf000, 0x0800, CRC(de77728b) SHA1(8e183bb27858aad9a996e4a2e5a95f0145d1f5b4) )
ROM_LOAD( "u19", 0xf800, 0x0800, CRC(c0994776) SHA1(9452a98c78a038679c4e58f4a9983adb28ea5e78) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "u4", 0xc800, 0x0800, CRC(5b906a09) SHA1(84a2e817d6718e0276fcea702811a91bc054a670) )
ROM_LOAD( "u5", 0xd000, 0x0800, CRC(254a3587) SHA1(66045c71cc1d04d4e03c728e578f570fbf7c650d) )
ROM_LOAD( "u6", 0xd800, 0x0800, CRC(ace30389) SHA1(50c6275d13cfbca7750d5a3e725faedba7574e04) )
@@ -660,7 +669,7 @@ ROM_START( qixa )
ROM_LOAD( "qu18", 0xf000, 0x0800, CRC(353be980) SHA1(a50e02fcc69771a13b238aa0e8dc3c56b01a58d5) )
ROM_LOAD( "qu19", 0xf800, 0x0800, CRC(f46a69ca) SHA1(dacb53c0318445da3fbb86f9a45914c5b7a4c4a1) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "qu3", 0xc000, 0x0800, CRC(8b4c0ef0) SHA1(6d18d1052f342e3b3313f2174b20f2a179e2c6bd) )
ROM_LOAD( "qu4", 0xc800, 0x0800, CRC(66a5c260) SHA1(8cce71bcd3a432650f0d0c94f3a2151ba8154220) )
ROM_LOAD( "qu5", 0xd000, 0x0800, CRC(70160ea3) SHA1(a411130c5c669a181564369a8921b26e0f0b5450) )
@@ -682,7 +691,7 @@ ROM_START( qixb )
ROM_LOAD( "lk16.bin", 0xe000, 0x1000, CRC(698b1f9c) SHA1(7e7637ca5985f072e821e16f8b65aedb87df136b) )
ROM_LOAD( "lk17.bin", 0xf000, 0x1000, CRC(7e3adde6) SHA1(dfe66317f87e10919f1ea4b4d565703e73039821) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "lk10.bin", 0xc000, 0x1000, CRC(7eac67d0) SHA1(ca5938422aaa1e380af0afa505876d4682ac69b9) )
ROM_LOAD( "lk11.bin", 0xd000, 0x1000, CRC(90ccbb6a) SHA1(b65592384597dc2aafc02f49b6b6f477c9112580) )
ROM_LOAD( "lk12.bin", 0xe000, 0x1000, CRC(be9b9f7d) SHA1(e681bdb9aa8b8c31af1c14e23d0f420577d6db63) )
@@ -704,7 +713,7 @@ ROM_START( qix2 )
ROM_LOAD( "u18.rmb", 0xf000, 0x0800, CRC(1f91ed7a) SHA1(85bb5370a244719663a4f859f66860613aa2b86e) )
ROM_LOAD( "u19.rmb", 0xf800, 0x0800, CRC(68e8d5a6) SHA1(d09252c393be2fdaf3b9b9f477c79f721d15943f) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "u3.rmb", 0xc000, 0x0800, CRC(19cebaca) SHA1(7d7e79ab0920952cf7618567c9c65397535b6d4f) )
ROM_LOAD( "u4.rmb", 0xc800, 0x0800, CRC(6cfb4185) SHA1(6545dece8eaeb716877aa6e7b24c21f6e5991451) )
ROM_LOAD( "u5.rmb", 0xd000, 0x0800, CRC(948f53f3) SHA1(db6eddec8ba41335316d80b6f97e932bf91139af) )
@@ -728,7 +737,7 @@ ROM_START( sdungeon )
ROM_LOAD( "sd18.u18", 0xe000, 0x1000, CRC(7ef1ffc0) SHA1(eca49a916b6b51b91ed45ff89bb37a67fee7db0e) )
ROM_LOAD( "sd19.u19", 0xf000, 0x1000, CRC(7b20b7ac) SHA1(554e29adc75cc465ea603a628f9d60d6d903e7ab) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "sd05.u5", 0xa000, 0x1000, CRC(0b2bf48e) SHA1(51bfb35521864f09a20b38aeeb98ab1399d139a5) )
ROM_LOAD( "sd06.u6", 0xb000, 0x1000, CRC(f86db512) SHA1(7e7ae64db7821f18a5eefdcc7a2e1abc37abd3ac) )
ROM_LOAD( "sd07.u7", 0xc000, 0x1000, CRC(7b796831) SHA1(cd3d8975e99886f51b27530f0e261f749aadee73) )
@@ -754,7 +763,7 @@ ROM_START( elecyoyo )
ROM_LOAD( "yy18", 0xe000, 0x1000, CRC(0b6661c0) SHA1(3e24acbfea1a3b83223d780ea34c83759a751175) )
ROM_LOAD( "yy19-1", 0xf000, 0x1000, CRC(95b8b244) SHA1(2852dcfc6a638118ee7fe60b957d8aa9a5a8984c) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "yy5", 0xa000, 0x1000, CRC(3793fec5) SHA1(d31f3ba6364755c98beb814b5e7d5541e8b4e1a0) )
ROM_LOAD( "yy6", 0xb000, 0x1000, CRC(2e8b1265) SHA1(6fb67b6a5b627bcbd10c72ac8c9e4d9f4dd7860f) )
ROM_LOAD( "yy7", 0xc000, 0x1000, CRC(20f93411) SHA1(126c27442a4e35d054a236c41930603241d08ccf) )
@@ -779,7 +788,7 @@ ROM_START( elecyoy2 )
ROM_LOAD( "yy18", 0xe000, 0x1000, CRC(0b6661c0) SHA1(3e24acbfea1a3b83223d780ea34c83759a751175) )
ROM_LOAD( "yy19", 0xf000, 0x1000, CRC(d0215d2e) SHA1(816131bc272252df6cea1b84a42750a71ce4f427) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "yy5", 0xa000, 0x1000, CRC(3793fec5) SHA1(d31f3ba6364755c98beb814b5e7d5541e8b4e1a0) )
ROM_LOAD( "yy6", 0xb000, 0x1000, CRC(2e8b1265) SHA1(6fb67b6a5b627bcbd10c72ac8c9e4d9f4dd7860f) )
ROM_LOAD( "yy7", 0xc000, 0x1000, CRC(20f93411) SHA1(126c27442a4e35d054a236c41930603241d08ccf) )
@@ -804,7 +813,7 @@ ROM_START( kram )
ROM_LOAD( "ks18", 0xe000, 0x1000, CRC(79158b03) SHA1(0d4873471b5b7ace0de8ec421ff3d74650790f7e) )
ROM_LOAD( "ks19-1", 0xf000, 0x1000, CRC(759ea6ce) SHA1(7962f713dd93c73475fa1f64635d8e965336484b) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "ks5", 0xa000, 0x1000, CRC(1c472080) SHA1(a85400be562ef6b817f8a654f29d966d3a198ab4) )
ROM_LOAD( "ks6", 0xb000, 0x1000, CRC(b8926622) SHA1(e25a8b2ff192f6ab0328fd7b3c58d638342f79e2) )
ROM_LOAD( "ks7", 0xc000, 0x1000, CRC(c98a7485) SHA1(e310d53ae65d456e12a2475e9ac578592b0e82ba) )
@@ -829,7 +838,7 @@ ROM_START( kram2 )
ROM_LOAD( "ks18", 0xe000, 0x1000, CRC(79158b03) SHA1(0d4873471b5b7ace0de8ec421ff3d74650790f7e) )
ROM_LOAD( "ks19", 0xf000, 0x1000, CRC(053c5e09) SHA1(cd6e5b54abf73c1ccf318ca18fceb56b51a3847f) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "ks5", 0xa000, 0x1000, CRC(1c472080) SHA1(a85400be562ef6b817f8a654f29d966d3a198ab4) )
ROM_LOAD( "ks6", 0xb000, 0x1000, CRC(b8926622) SHA1(e25a8b2ff192f6ab0328fd7b3c58d638342f79e2) )
ROM_LOAD( "ks7", 0xc000, 0x1000, CRC(c98a7485) SHA1(e310d53ae65d456e12a2475e9ac578592b0e82ba) )
@@ -854,7 +863,7 @@ ROM_START( kram3 )
ROM_LOAD( "kr-u18", 0xe000, 0x1000, CRC(da3aed8c) SHA1(0107d58fa006a39b47513381aead760190abef35) )
ROM_LOAD( "kr-u19", 0xf000, 0x1000, CRC(496ab571) SHA1(30e12b31ffd70a8a1ce23c845e89170ca3cabaa5) )
- ROM_REGION( 2*0x10000, "video", 0 ) /* encrypted */
+ ROM_REGION( 2*0x10000, "videocpu", 0 ) /* encrypted */
ROM_LOAD( "kr-u5", 0xa000, 0x1000, CRC(9e63c2bc) SHA1(f61a2b93ed322b62818f31fddb324c666380eff7) )
ROM_LOAD( "kr-u6", 0xb000, 0x1000, CRC(a0ff1244) SHA1(5bc3f3f8caac0dfc8c1381d34e5b8ef5c8202982) )
ROM_LOAD( "kr-u7", 0xc000, 0x1000, CRC(20a15024) SHA1(094951c4cd06e32af2cb2faec04c31d55ade6b7b) )
@@ -878,7 +887,7 @@ ROM_START( zookeep )
ROM_LOAD( "za18", 0xe000, 0x1000, CRC(37886afe) SHA1(a0cc902b2d253466e21c4fbf9d3339069fe79ebe) )
ROM_LOAD( "za19", 0xf000, 0x1000, CRC(bbfb30d9) SHA1(bc6bd5525b159bee7b08b6967cd3088b7bd10fee) )
- ROM_REGION( 0x12000, "video", 0 )
+ ROM_REGION( 0x12000, "videocpu", 0 )
ROM_LOAD( "za5", 0x0a000, 0x1000, CRC(dc0c3cbd) SHA1(8335cd91bbacc680a3a98a5242d4cb5a6f61b2b5) )
ROM_LOAD( "za3", 0x10000, 0x1000, CRC(cc4d0aee) SHA1(05c0025e96b432088b46100051a2c780e46b7457) )
ROM_LOAD( "za6", 0x0b000, 0x1000, CRC(27c787dd) SHA1(1142790d875573d0c39d846aba4b06946fd2bc88) )
@@ -910,7 +919,7 @@ ROM_START( zookeep2 )
ROM_LOAD( "za18", 0xe000, 0x1000, CRC(37886afe) SHA1(a0cc902b2d253466e21c4fbf9d3339069fe79ebe) )
ROM_LOAD( "za19.red", 0xf000, 0x1000, CRC(ec01760e) SHA1(169ab9d3a0abe325d960f9ed358258b3d6fcd4be) )
- ROM_REGION( 0x12000, "video", 0 )
+ ROM_REGION( 0x12000, "videocpu", 0 )
ROM_LOAD( "za5", 0x0a000, 0x1000, CRC(dc0c3cbd) SHA1(8335cd91bbacc680a3a98a5242d4cb5a6f61b2b5) )
ROM_LOAD( "za3", 0x10000, 0x1000, CRC(cc4d0aee) SHA1(05c0025e96b432088b46100051a2c780e46b7457) )
ROM_LOAD( "za6", 0x0b000, 0x1000, CRC(27c787dd) SHA1(1142790d875573d0c39d846aba4b06946fd2bc88) )
@@ -942,7 +951,7 @@ ROM_START( zookeep3 )
ROM_LOAD( "za18", 0xe000, 0x1000, CRC(37886afe) SHA1(a0cc902b2d253466e21c4fbf9d3339069fe79ebe) )
ROM_LOAD( "za19", 0xf000, 0x1000, CRC(bbfb30d9) SHA1(bc6bd5525b159bee7b08b6967cd3088b7bd10fee) )
- ROM_REGION( 0x12000, "video", 0 )
+ ROM_REGION( 0x12000, "videocpu", 0 )
ROM_LOAD( "za5", 0x0a000, 0x1000, CRC(dc0c3cbd) SHA1(8335cd91bbacc680a3a98a5242d4cb5a6f61b2b5) )
ROM_LOAD( "za3", 0x10000, 0x1000, CRC(cc4d0aee) SHA1(05c0025e96b432088b46100051a2c780e46b7457) )
ROM_LOAD( "za6", 0x0b000, 0x1000, CRC(27c787dd) SHA1(1142790d875573d0c39d846aba4b06946fd2bc88) )
@@ -971,7 +980,7 @@ ROM_START( slither )
ROM_LOAD( "u28.cpu", 0xf000, 0x0800, CRC(2762f612) SHA1(2f094832b199d8514ed04c517fca828c75ac7bfa) )
ROM_LOAD( "u27.cpu", 0xf800, 0x0800, CRC(9306d5b1) SHA1(e5a2c613b1e083b70d63e24dd45472364930398a) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "u41.cpu", 0xd000, 0x0800, CRC(e4c60a57) SHA1(5ce9fe3d84b7a5ded372f5c3fc14a335a37ad472) )
ROM_LOAD( "u40.cpu", 0xd800, 0x0800, CRC(5dcec622) SHA1(4c00b91106d1e505bdbd3aefb46bfb1a17f14fc1) )
ROM_LOAD( "u39.cpu", 0xe000, 0x0800, CRC(69829c2a) SHA1(5ea1f7e6db2b2cebab8663f7a05496f2e13131f9) )
@@ -989,7 +998,7 @@ ROM_START( slithera )
ROM_LOAD( "u28.cpu", 0xf000, 0x0800, CRC(2762f612) SHA1(2f094832b199d8514ed04c517fca828c75ac7bfa) )
ROM_LOAD( "u27.cpu", 0xf800, 0x0800, CRC(9306d5b1) SHA1(e5a2c613b1e083b70d63e24dd45472364930398a) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "u41.cpu", 0xd000, 0x0800, CRC(e4c60a57) SHA1(5ce9fe3d84b7a5ded372f5c3fc14a335a37ad472) )
ROM_LOAD( "u40.cpu", 0xd800, 0x0800, CRC(5dcec622) SHA1(4c00b91106d1e505bdbd3aefb46bfb1a17f14fc1) )
ROM_LOAD( "u39.cpu", 0xe000, 0x0800, CRC(69829c2a) SHA1(5ea1f7e6db2b2cebab8663f7a05496f2e13131f9) )
@@ -1007,7 +1016,7 @@ ROM_START( complexx )
ROM_LOAD( "cx18.bin", 0xe000, 0x1000, CRC(8f8c3984) SHA1(4cfc83c7a972eeb6e386c9f663388b57c1ebfd00) )
ROM_LOAD( "cx19.bin", 0xf000, 0x1000, CRC(13af3ba8) SHA1(79ce3dce960d89161db89821d9b211ffd1d399d7) )
- ROM_REGION( 0x10000, "video", 0 )
+ ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "cx5.bin", 0xa000, 0x1000, CRC(62a2b87b) SHA1(eeecdfd3eeba15cd93d1514132919fdc9254c1cb) )
ROM_LOAD( "cx6.bin", 0xb000, 0x1000, CRC(dfa7c088) SHA1(626cae67db85ab8f87c59f5945032b4cb6683c8b) )
ROM_LOAD( "cx7.bin", 0xc000, 0x1000, CRC(c8bd6759) SHA1(5e2debc2f5acf5c14da2d0c3daf49a0f63ade07b) )
@@ -1227,7 +1236,7 @@ static int kram3_decrypt(int address, int value)
static DRIVER_INIT( kram3 )
{
const address_space *mainspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
- const address_space *videospace = cputag_get_address_space(machine, "video", ADDRESS_SPACE_PROGRAM);
+ const address_space *videospace = cputag_get_address_space(machine, "videocpu", ADDRESS_SPACE_PROGRAM);
const UINT8 *patch;
UINT8 *rom, *decrypted;
int i, size;
@@ -1262,7 +1271,7 @@ static DRIVER_INIT( kram3 )
i = 0;
patch = memory_region(machine, "user2");
size = memory_region_length(machine, "user2");
- rom = memory_region(machine, "video");
+ rom = memory_region(machine, "videocpu");
decrypted = auto_malloc(0x6000);
memory_set_decrypted_region(videospace, 0xa000, 0xffff, decrypted);
@@ -1278,15 +1287,14 @@ static DRIVER_INIT( kram3 )
static DRIVER_INIT( zookeep )
{
/* configure the banking */
- memory_configure_bank(machine, 1, 0, 1, memory_region(machine, "video") + 0xa000, 0);
- memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "video") + 0x10000, 0);
+ memory_configure_bank(machine, 1, 0, 1, memory_region(machine, "videocpu") + 0xa000, 0);
+ memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "videocpu") + 0x10000, 0);
memory_set_bank(machine, 1, 0);
}
static DRIVER_INIT( slither )
{
- memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9800, 0x9bff, 0, 0, pia_1_r, pia_1_w);
}
diff --git a/src/mame/drivers/r2dtank.c b/src/mame/drivers/r2dtank.c
index bacaae4482d..176c70828ba 100644
--- a/src/mame/drivers/r2dtank.c
+++ b/src/mame/drivers/r2dtank.c
@@ -32,7 +32,7 @@ RAM = 4116 (x11)
#include "driver.h"
#include "machine/rescap.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "machine/74123.h"
#include "video/mc6845.h"
#include "cpu/m6800/m6800.h"
@@ -61,7 +61,7 @@ static UINT8 AY8910_selected;
*
*************************************/
-static WRITE8_HANDLER( flipscreen_w );
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w );
@@ -71,12 +71,14 @@ static WRITE8_HANDLER( flipscreen_w );
*
*************************************/
-static void main_cpu_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( main_cpu_irq )
{
- int combined_state = pia_get_irq_a(0) | pia_get_irq_b(0) |
- pia_get_irq_a(1) | pia_get_irq_b(1);
+ const device_config *pia0 = devtag_get_device(device->machine, PIA6821, "pia_main");
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "pia_audio");
+ int combined_state = pianew_get_irq_a(pia0) | pianew_get_irq_b(pia0) |
+ pianew_get_irq_a(pia1) | pianew_get_irq_b(pia1);
- cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
@@ -128,7 +130,7 @@ if (LOG_AUDIO_COMM) logerror("%08X CPU#1 Audio Answer Write: %x\n", cpu_get_pc
}
-static WRITE8_HANDLER( AY8910_select_w )
+static WRITE8_DEVICE_HANDLER( AY8910_select_w )
{
/* not sure what all the bits mean:
D0 - ????? definetely used
@@ -139,31 +141,31 @@ static WRITE8_HANDLER( AY8910_select_w )
D5-D7 - not used */
AY8910_selected = data;
-if (LOG_AUDIO_COMM) logerror("%08X CPU#1 AY8910_select_w: %x\n", cpu_get_pc(space->cpu), data);
+if (LOG_AUDIO_COMM) logerror("%s: CPU#1 AY8910_select_w: %x\n", cpuexec_describe_context(device->machine), data);
}
-static READ8_HANDLER( AY8910_port_r )
+static READ8_DEVICE_HANDLER( AY8910_port_r )
{
UINT8 ret = 0;
if (AY8910_selected & 0x08)
- ret = ay8910_r(devtag_get_device(space->machine, SOUND, "ay1"), 0);
+ ret = ay8910_r(devtag_get_device(device->machine, SOUND, "ay1"), 0);
if (AY8910_selected & 0x10)
- ret = ay8910_r(devtag_get_device(space->machine, SOUND, "ay2"), 0);
+ ret = ay8910_r(devtag_get_device(device->machine, SOUND, "ay2"), 0);
return ret;
}
-static WRITE8_HANDLER( AY8910_port_w )
+static WRITE8_DEVICE_HANDLER( AY8910_port_w )
{
if (AY8910_selected & 0x08)
- ay8910_data_address_w(devtag_get_device(space->machine, SOUND, "ay1"), AY8910_selected >> 2, data);
+ ay8910_data_address_w(devtag_get_device(device->machine, SOUND, "ay1"), AY8910_selected >> 2, data);
if (AY8910_selected & 0x10)
- ay8910_data_address_w(devtag_get_device(space->machine, SOUND, "ay2"), AY8910_selected >> 2, data);
+ ay8910_data_address_w(devtag_get_device(device->machine, SOUND, "ay2"), AY8910_selected >> 2, data);
}
@@ -204,8 +206,8 @@ static const ay8910_interface ay8910_2_interface =
static WRITE8_DEVICE_HANDLER( ttl74123_output_changed )
{
- const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_0_ca1_w(space, 0, data);
+ const device_config *pia = devtag_get_device(device->machine, PIA6821, "pia_main");
+ pia_ca1_w(pia, 0, data);
ttl74123_output = data;
}
@@ -237,25 +239,40 @@ static const ttl74123_config ttl74123_intf =
static const pia6821_interface pia_main_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, input_port_1_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, flipscreen_w,
- /*irqs : A/B */ main_cpu_irq, main_cpu_irq
+ DEVCB_INPUT_PORT("IN0"), /* port A in */
+ DEVCB_INPUT_PORT("IN1"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_LINE(flipscreen_w), /* port CB2 out */
+ DEVCB_LINE(main_cpu_irq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
static const pia6821_interface pia_audio_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ AY8910_port_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ AY8910_port_w, AY8910_select_w, 0, 0,
- /*irqs : A/B */ main_cpu_irq, main_cpu_irq
+ DEVCB_HANDLER(AY8910_port_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(AY8910_port_w), /* port A out */
+ DEVCB_HANDLER(AY8910_select_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(main_cpu_irq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
static MACHINE_START( r2dtank )
{
- pia_config(machine, 0, &pia_main_intf);
- pia_config(machine, 1, &pia_audio_intf);
-
/* setup for save states */
state_save_register_global(machine, flipscreen);
state_save_register_global(machine, ttl74123_output);
@@ -266,19 +283,6 @@ static MACHINE_START( r2dtank )
/*************************************
*
- * Machine reset
- *
- *************************************/
-
-static MACHINE_RESET( r2dtank )
-{
- pia_reset();
-}
-
-
-
-/*************************************
- *
* Video system
*
*************************************/
@@ -286,9 +290,9 @@ static MACHINE_RESET( r2dtank )
#define NUM_PENS (8)
-static WRITE8_HANDLER( flipscreen_w )
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w )
{
- flipscreen = !data;
+ flipscreen = !state;
}
@@ -391,9 +395,9 @@ static VIDEO_UPDATE( r2dtank )
*
*************************************/
-static WRITE8_HANDLER( pia_comp_0_w )
+static WRITE8_DEVICE_HANDLER( pia_comp_w )
{
- pia_0_w(space, offset, ~data);
+ pia_w(device, offset, ~data);
}
@@ -402,7 +406,7 @@ static ADDRESS_MAP_START( r2dtank_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x2000, 0x3fff) AM_RAM
AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&r2dtank_colorram)
AM_RANGE(0x6000, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0x8003) AM_READWRITE(pia_0_r, pia_comp_0_w)
+ AM_RANGE(0x8000, 0x8003) AM_DEVREADWRITE(PIA6821, "pia_main", pia_r, pia_comp_w)
AM_RANGE(0x8004, 0x8004) AM_READWRITE(audio_answer_r, audio_command_w)
AM_RANGE(0xb000, 0xb000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xb001, 0xb001) AM_DEVWRITE(MC6845, "crtc", mc6845_register_w)
@@ -413,7 +417,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( r2dtank_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
- AM_RANGE(0xd000, 0xd003) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0xd000, 0xd003) AM_DEVREADWRITE(PIA6821, "pia_audio", pia_r, pia_w)
AM_RANGE(0xf000, 0xf000) AM_READWRITE(audio_command_r, audio_answer_w)
AM_RANGE(0xf800, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -517,7 +521,6 @@ static MACHINE_DRIVER_START( r2dtank )
MDRV_CPU_PROGRAM_MAP(r2dtank_audio_map,0)
MDRV_MACHINE_START(r2dtank)
- MDRV_MACHINE_RESET(r2dtank)
MDRV_NVRAM_HANDLER(generic_0fill)
/* video hardware */
@@ -532,6 +535,9 @@ static MACHINE_DRIVER_START( r2dtank )
/* 74LS123 */
MDRV_TTL74123_ADD("74123", ttl74123_intf)
+
+ MDRV_PIA6821_ADD("pia_main", pia_main_intf)
+ MDRV_PIA6821_ADD("pia_audio", pia_audio_intf)
/* audio hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/segae.c b/src/mame/drivers/segae.c
index a52b84e2522..0eb57090aed 100644
--- a/src/mame/drivers/segae.c
+++ b/src/mame/drivers/segae.c
@@ -2170,11 +2170,11 @@ static void init_ports_systeme(running_machine *machine)
memory_install_readwrite8_handler(io, 0xbe, 0xbe, 0, 0, sms_vdp_2_data_r, sms_vdp_2_data_w);
memory_install_readwrite8_handler(io, 0xbf, 0xbf, 0, 0, sms_vdp_2_ctrl_r, sms_vdp_2_ctrl_w);
- memory_install_read8_handler (io, 0xe0, 0xe0, 0, 0, input_port_read_handler8(machine->portconfig, "e0"));
- memory_install_read8_handler (io, 0xe1, 0xe1, 0, 0, input_port_read_handler8(machine->portconfig, "e1"));
- memory_install_read8_handler (io, 0xe2, 0xe2, 0, 0, input_port_read_handler8(machine->portconfig, "e2"));
- memory_install_read8_handler (io, 0xf2, 0xf2, 0, 0, input_port_read_handler8(machine->portconfig, "f2"));
- memory_install_read8_handler (io, 0xf3, 0xf3, 0, 0, input_port_read_handler8(machine->portconfig, "f3"));
+ memory_install_read_port_handler (io, 0xe0, 0xe0, 0, 0, "e0");
+ memory_install_read_port_handler (io, 0xe1, 0xe1, 0, 0, "e1");
+ memory_install_read_port_handler (io, 0xe2, 0xe2, 0, 0, "e2");
+ memory_install_read_port_handler (io, 0xf2, 0xf2, 0, 0, "f2");
+ memory_install_read_port_handler (io, 0xf3, 0xf3, 0, 0, "f3");
memory_install_write8_handler (io, 0xf7, 0xf7, 0, 0, systeme_bank_w );
}
diff --git a/src/mame/drivers/spiders.c b/src/mame/drivers/spiders.c
index f4faaaaf17f..cde1828a361 100644
--- a/src/mame/drivers/spiders.c
+++ b/src/mame/drivers/spiders.c
@@ -192,7 +192,7 @@
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "video/mc6845.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "machine/74123.h"
#include "spiders.h"
@@ -217,9 +217,9 @@ static UINT8 gfx_rom_ctrl_data;
*
*************************************/
-static WRITE8_HANDLER( flipscreen_w );
-static WRITE8_HANDLER( gfx_rom_intf_w );
-static READ8_HANDLER( gfx_rom_r );
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w );
+static WRITE8_DEVICE_HANDLER( gfx_rom_intf_w );
+static READ8_DEVICE_HANDLER( gfx_rom_r );
@@ -229,25 +229,28 @@ static READ8_HANDLER( gfx_rom_r );
*
*************************************/
-static void main_cpu_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( main_cpu_irq )
{
- int combined_state = pia_get_irq_a(1) | pia_get_irq_b(1) |
- pia_get_irq_b(2) |
- pia_get_irq_a(3) | pia_get_irq_b(3);
-
- cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "pia1");
+ const device_config *pia2 = devtag_get_device(device->machine, PIA6821, "pia2");
+ const device_config *pia3 = devtag_get_device(device->machine, PIA6821, "pia3");
+ int combined_state = pianew_get_irq_a(pia1) | pianew_get_irq_b(pia1) |
+ pianew_get_irq_b(pia2) |
+ pianew_get_irq_a(pia3) | pianew_get_irq_b(pia3);
+
+ cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
}
-static void main_cpu_firq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( main_cpu_firq )
{
- cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
}
-static void audio_cpu_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( audio_cpu_irq )
{
- cpu_set_input_line(machine->cpu[1], M6800_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
+ cpu_set_input_line(device->machine->cpu[1], M6800_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
}
@@ -260,25 +263,33 @@ static void audio_cpu_irq(running_machine *machine, int state)
static const pia6821_interface pia_1_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, input_port_1_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ main_cpu_irq, main_cpu_irq
+ DEVCB_INPUT_PORT("IN0"), /* port A in */
+ DEVCB_INPUT_PORT("IN1"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(main_cpu_irq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
-
static INTERRUPT_GEN( update_pia_1 )
{
- const address_space *space = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
+ const device_config *pia1 = devtag_get_device(device->machine, PIA6821, "pia1");
/* update the different PIA pins from the input ports */
/* CA1 - copy of PA1 (COIN1) */
- pia_1_ca1_w(space, 0, input_port_read(device->machine, "IN0") & 0x02);
+ pia_ca1_w(pia1, 0, input_port_read(device->machine, "IN0") & 0x02);
/* CA2 - copy of PA0 (SERVICE1) */
- pia_1_ca2_w(space, 0, input_port_read(device->machine, "IN0") & 0x01);
+ pia_ca2_w(pia1, 0, input_port_read(device->machine, "IN0") & 0x01);
/* CB1 - (crosshatch) */
- pia_1_cb1_w(space, 0, input_port_read(device->machine, "XHATCH"));
+ pia_cb1_w(pia1, 0, input_port_read(device->machine, "XHATCH"));
/* CB2 - NOT CONNECTED */
}
@@ -293,9 +304,18 @@ static INTERRUPT_GEN( update_pia_1 )
static const pia6821_interface pia_2_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ gfx_rom_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, gfx_rom_intf_w, 0, flipscreen_w,
- /*irqs : A/B */ main_cpu_firq, main_cpu_irq
+ DEVCB_HANDLER(gfx_rom_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(gfx_rom_intf_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_LINE(flipscreen_w), /* port CB2 out */
+ DEVCB_LINE(main_cpu_firq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
@@ -308,9 +328,18 @@ static const pia6821_interface pia_2_intf =
static const pia6821_interface pia_3_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ spiders_audio_ctrl_w, spiders_audio_command_w, 0, 0,
- /*irqs : A/B */ main_cpu_irq, main_cpu_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", spiders_audio_ctrl_w), /* port A out */
+ DEVCB_DEVICE_HANDLER(PIA6821, "pia4", spiders_audio_command_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(main_cpu_irq), /* IRQA */
+ DEVCB_LINE(main_cpu_irq) /* IRQB */
};
@@ -323,9 +352,18 @@ static const pia6821_interface pia_3_intf =
static const pia6821_interface pia_4_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ spiders_audio_a_w, spiders_audio_b_w, 0, 0,
- /*irqs : A/B */ audio_cpu_irq, 0
+ DEVCB_NULL, /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", spiders_audio_a_w), /* port A out */
+ DEVCB_DEVICE_HANDLER(SOUND, "discrete", spiders_audio_b_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(audio_cpu_irq), /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -344,8 +382,8 @@ static const pia6821_interface pia_4_intf =
static WRITE8_DEVICE_HANDLER( ic60_74123_output_changed)
{
- const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_2_ca1_w(space, 0, data);
+ const device_config *pia2 = devtag_get_device(device->machine, PIA6821, "pia2");
+ pia_ca1_w(pia2, 0, data);
}
@@ -370,11 +408,6 @@ static const ttl74123_config ic60_intf =
static MACHINE_START( spiders )
{
- pia_config(machine, 1, &pia_1_intf);
- pia_config(machine, 2, &pia_2_intf);
- pia_config(machine, 3, &pia_3_intf);
- pia_config(machine, 4, &pia_4_intf);
-
/* setup for save states */
state_save_register_global(machine, flipscreen);
state_save_register_global(machine, gfx_rom_address);
@@ -387,19 +420,6 @@ static MACHINE_START( spiders )
/*************************************
*
- * Machine reset
- *
- *************************************/
-
-static MACHINE_RESET( spiders )
-{
- pia_reset();
-}
-
-
-
-/*************************************
- *
* Video system
*
*************************************/
@@ -407,9 +427,9 @@ static MACHINE_RESET( spiders )
#define NUM_PENS (8)
-static WRITE8_HANDLER( flipscreen_w )
+static WRITE_LINE_DEVICE_HANDLER( flipscreen_w )
{
- flipscreen = data;
+ flipscreen = state;
}
@@ -523,7 +543,7 @@ static VIDEO_UPDATE( spiders )
*
*************************************/
-static WRITE8_HANDLER( gfx_rom_intf_w )
+static WRITE8_DEVICE_HANDLER( gfx_rom_intf_w )
{
gfx_rom_ctrl_mode = ( data >> 7) & 0x01;
gfx_rom_ctrl_latch = ( data >> 4) & 0x03;
@@ -531,13 +551,13 @@ static WRITE8_HANDLER( gfx_rom_intf_w )
}
-static READ8_HANDLER( gfx_rom_r )
+static READ8_DEVICE_HANDLER( gfx_rom_r )
{
UINT8 ret;
if (gfx_rom_ctrl_mode)
{
- UINT8 *rom = memory_region(space->machine, "gfx1");
+ UINT8 *rom = memory_region(device->machine, "gfx1");
ret = rom[gfx_rom_address];
@@ -567,9 +587,9 @@ static ADDRESS_MAP_START( spiders_main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xc000, 0xc000) AM_DEVWRITE(MC6845, "crtc", mc6845_address_w)
AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE(MC6845, "crtc", mc6845_register_r, mc6845_register_w)
AM_RANGE(0xc020, 0xc027) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
- AM_RANGE(0xc044, 0xc047) AM_READWRITE(pia_1_r, pia_1_w)
- AM_RANGE(0xc048, 0xc04b) AM_READWRITE(pia_2_alt_r, pia_2_alt_w)
- AM_RANGE(0xc050, 0xc053) AM_READWRITE(pia_3_r, pia_3_w)
+ AM_RANGE(0xc044, 0xc047) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
+ AM_RANGE(0xc048, 0xc04b) AM_DEVREADWRITE(PIA6821, "pia2", pia_alt_r, pia_alt_w)
+ AM_RANGE(0xc050, 0xc053) AM_DEVREADWRITE(PIA6821, "pia3", pia_r, pia_w)
AM_RANGE(0xc060, 0xc060) AM_READ_PORT("DSW1")
AM_RANGE(0xc080, 0xc080) AM_READ_PORT("DSW2")
AM_RANGE(0xc0a0, 0xc0a0) AM_READ_PORT("DSW3")
@@ -579,7 +599,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spiders_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x007f) AM_RAM
- AM_RANGE(0x0080, 0x0083) AM_READWRITE(pia_4_r, pia_4_w)
+ AM_RANGE(0x0080, 0x0083) AM_DEVREADWRITE(PIA6821, "pia4", pia_r, pia_w)
AM_RANGE(0xf800, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -694,7 +714,6 @@ static MACHINE_DRIVER_START( spiders )
MDRV_CPU_PROGRAM_MAP(spiders_audio_map,0)
MDRV_MACHINE_START(spiders)
- MDRV_MACHINE_RESET(spiders)
MDRV_NVRAM_HANDLER(generic_0fill)
/* video hardware */
@@ -707,6 +726,11 @@ static MACHINE_DRIVER_START( spiders )
MDRV_MC6845_ADD("crtc", MC6845, CRTC_CLOCK, mc6845_intf)
/* 74LS123 */
+
+ MDRV_PIA6821_ADD("pia1", pia_1_intf)
+ MDRV_PIA6821_ADD("pia2", pia_2_intf)
+ MDRV_PIA6821_ADD("pia3", pia_3_intf)
+ MDRV_PIA6821_ADD("pia4", pia_4_intf)
MDRV_TTL74123_ADD("ic60", ic60_intf)
diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c
index 115f1c1a93c..5674f66d1a9 100644
--- a/src/mame/drivers/toaplan2.c
+++ b/src/mame/drivers/toaplan2.c
@@ -923,9 +923,9 @@ static WRITE16_HANDLER( fixeight_sec_cpu_w )
/* from/to nvram to store the settings (a 93C45 EEPROM) */
memory_install_readwrite16_handler(space, 0x28f002, 0x28fbff, 0, 0, SMH_BANK2, SMH_BANK2);
memory_set_bankptr(space->machine, 2, fixeight_sec_cpu_mem);
- memory_install_readwrite16_handler(space, 0x28f004, 0x28f005, 0, 0, input_port_read_handler16(space->machine->portconfig, "DSWA"), SMH_NOP); /* Dip Switch A - Wrong !!! */
- memory_install_readwrite16_handler(space, 0x28f006, 0x28f007, 0, 0, input_port_read_handler16(space->machine->portconfig, "DSWB"), SMH_NOP); /* Dip Switch B - Wrong !!! */
- memory_install_readwrite16_handler(space, 0x28f008, 0x28f009, 0, 0, input_port_read_handler16(space->machine->portconfig, "JMPR"), SMH_NOP); /* Territory Jumper block - Wrong !!! */
+ memory_install_read_port_handler(space, 0x28f004, 0x28f005, 0, 0, "DSWA"); /* Dip Switch A - Wrong !!! */
+ memory_install_read_port_handler(space, 0x28f006, 0x28f007, 0, 0, "DSWB"); /* Dip Switch B - Wrong !!! */
+ memory_install_read_port_handler(space, 0x28f008, 0x28f009, 0, 0, "JMPR"); /* Territory Jumper block - Wrong !!! */
mcu_data = data;
}
diff --git a/src/mame/drivers/tugboat.c b/src/mame/drivers/tugboat.c
index 2d0c2f4423a..1262252c428 100644
--- a/src/mame/drivers/tugboat.c
+++ b/src/mame/drivers/tugboat.c
@@ -23,7 +23,7 @@ always false - counter was reloaded and incremented before interrupt occurs
#include "driver.h"
#include "cpu/m6502/m6502.h"
-#include "machine/6821pia.h"
+#include "machine/6821new.h"
#include "sound/ay8910.h"
@@ -128,42 +128,60 @@ static VIDEO_UPDATE( tugboat )
static int ctrl;
-static READ8_HANDLER( tugboat_input_r )
+static READ8_DEVICE_HANDLER( tugboat_input_r )
{
if (~ctrl & 0x80)
- return input_port_read(space->machine, "IN0");
+ return input_port_read(device->machine, "IN0");
else if (~ctrl & 0x40)
- return input_port_read(space->machine, "IN1");
+ return input_port_read(device->machine, "IN1");
else if (~ctrl & 0x20)
- return input_port_read(space->machine, "IN2");
+ return input_port_read(device->machine, "IN2");
else if (~ctrl & 0x10)
- return input_port_read(space->machine, "IN3");
+ return input_port_read(device->machine, "IN3");
else
- return input_port_read(space->machine, "IN4");
+ return input_port_read(device->machine, "IN4");
}
-static READ8_HANDLER( tugboat_ctrl_r )
+static READ8_DEVICE_HANDLER( tugboat_ctrl_r )
{
return ctrl;
}
-static WRITE8_HANDLER( tugboat_ctrl_w )
+static WRITE8_DEVICE_HANDLER( tugboat_ctrl_w )
{
ctrl = data;
}
static const pia6821_interface pia0_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ tugboat_input_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0,
+ DEVCB_HANDLER(tugboat_input_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
static const pia6821_interface pia1_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_5_r, tugboat_ctrl_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, tugboat_ctrl_w, 0, 0,
- /*irqs : A/B */ 0, 0
+ DEVCB_INPUT_PORT("DSW"), /* port A in */
+ DEVCB_HANDLER(tugboat_ctrl_r), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(tugboat_ctrl_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
static TIMER_CALLBACK( interrupt_gen )
@@ -172,15 +190,8 @@ static TIMER_CALLBACK( interrupt_gen )
timer_set(machine, video_screen_get_frame_period(machine->primary_screen), NULL, 0, interrupt_gen);
}
-static MACHINE_START( tugboat )
-{
- pia_config(machine, 0, &pia0_intf);
- pia_config(machine, 1, &pia1_intf);
-}
-
static MACHINE_RESET( tugboat )
{
- pia_reset();
timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 30*8+4, 0), NULL, 0, interrupt_gen);
}
@@ -190,8 +201,8 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x1060, 0x1061) AM_DEVWRITE(SOUND, "ay", ay8910_address_data_w)
AM_RANGE(0x10a0, 0x10a1) AM_WRITE(tugboat_hd46505_0_w) /* scrolling is performed changing the start_addr register (0C/0D) */
AM_RANGE(0x10c0, 0x10c1) AM_WRITE(tugboat_hd46505_1_w)
- AM_RANGE(0x11e4, 0x11e7) AM_READWRITE(pia_0_r, pia_0_w)
- AM_RANGE(0x11e8, 0x11eb) AM_READWRITE(pia_1_r, pia_1_w)
+ AM_RANGE(0x11e4, 0x11e7) AM_DEVREADWRITE(PIA6821, "pia0", pia_r, pia_w)
+ AM_RANGE(0x11e8, 0x11eb) AM_DEVREADWRITE(PIA6821, "pia1", pia_r, pia_w)
//AM_RANGE(0x1700, 0x1fff) AM_RAM
AM_RANGE(0x18e0, 0x18ef) AM_WRITE(tugboat_score_w)
AM_RANGE(0x2000, 0x2fff) AM_RAM /* tilemap RAM */
@@ -307,9 +318,10 @@ static MACHINE_DRIVER_START( tugboat )
MDRV_CPU_PROGRAM_MAP(main_map,0)
MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
- MDRV_MACHINE_START(tugboat)
MDRV_MACHINE_RESET(tugboat)
+ MDRV_PIA6821_ADD("pia0", pia0_intf)
+ MDRV_PIA6821_ADD("pia1", pia1_intf)
MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/williams.c b/src/mame/drivers/williams.c
index 8bac8e7423b..94f75fdc6d7 100644
--- a/src/mame/drivers/williams.c
+++ b/src/mame/drivers/williams.c
@@ -2802,10 +2802,10 @@ static DRIVER_INIT( spdball )
memory_install_readwrite8_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), pia_3, 0xc808, 0xc80b, 0, 0, pia_r, pia_w);
/* install extra input handlers */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xc800, 0, 0, input_port_read_handler8(machine->portconfig, "AN0"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc801, 0xc801, 0, 0, input_port_read_handler8(machine->portconfig, "AN1"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc802, 0xc802, 0, 0, input_port_read_handler8(machine->portconfig, "AN2"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc803, 0xc803, 0, 0, input_port_read_handler8(machine->portconfig, "AN3"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xc800, 0, 0, "AN0");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc801, 0xc801, 0, 0, "AN1");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc802, 0xc802, 0, 0, "AN2");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc803, 0xc803, 0, 0, "AN3");
}
diff --git a/src/mame/drivers/zaxxon.c b/src/mame/drivers/zaxxon.c
index 3fc62f2894a..f2ba0f8aa93 100644
--- a/src/mame/drivers/zaxxon.c
+++ b/src/mame/drivers/zaxxon.c
@@ -1496,9 +1496,9 @@ static DRIVER_INIT( razmataz )
nprinces_decode(machine, "maincpu");
/* additional input ports are wired */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc004, 0xc004, 0, 0x18f3, input_port_read_handler8(machine->portconfig, "SW04"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc008, 0xc008, 0, 0x18f3, input_port_read_handler8(machine->portconfig, "SW08"));
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00c, 0xc00c, 0, 0x18f3, input_port_read_handler8(machine->portconfig, "SW0C"));
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc004, 0xc004, 0, 0x18f3, "SW04");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc008, 0xc008, 0, 0x18f3, "SW08");
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00c, 0xc00c, 0, 0x18f3, "SW0C");
/* unknown behavior expected here */
memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc80a, 0xc80a, 0, 0, razmataz_counter_r);
diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h
index 6d848f146f8..917a514cf67 100644
--- a/src/mame/includes/mcr.h
+++ b/src/mame/includes/mcr.h
@@ -8,6 +8,7 @@
#include "machine/z80ctc.h"
#include "machine/z80pio.h"
#include "machine/z80sio.h"
+#include "machine/6821new.h"
/* constants */
#define MAIN_OSC_MCR_I XTAL_19_968MHz
@@ -38,6 +39,10 @@ extern UINT32 mcr_cpu_board;
extern UINT32 mcr_sprite_board;
extern UINT32 mcr_ssio_board;
+extern const pia6821_interface zwackery_pia0_intf;
+extern const pia6821_interface zwackery_pia1_intf;
+extern const pia6821_interface zwackery_pia2_intf;
+
MACHINE_START( mcr );
MACHINE_RESET( mcr );
MACHINE_START( nflfoot );
diff --git a/src/mame/includes/qix.h b/src/mame/includes/qix.h
index 5f345b72af5..1c4513828ec 100644
--- a/src/mame/includes/qix.h
+++ b/src/mame/includes/qix.h
@@ -7,6 +7,7 @@
***************************************************************************/
#include "video/mc6845.h"
+#include "machine/6821new.h"
#define MAIN_CLOCK_OSC 20000000 /* 20 MHz */
@@ -39,9 +40,15 @@ struct _qix_state
/*----------- defined in machine/qix.c -----------*/
-MACHINE_START( qix );
+extern const pia6821_interface qix_pia_0_intf;
+extern const pia6821_interface qix_pia_1_intf;
+extern const pia6821_interface qix_pia_2_intf;
+extern const pia6821_interface qixmcu_pia_0_intf;
+extern const pia6821_interface qixmcu_pia_2_intf;
+extern const pia6821_interface slither_pia_1_intf;
+extern const pia6821_interface slither_pia_2_intf;
+
MACHINE_START( qixmcu );
-MACHINE_START( slither );
MACHINE_RESET( qix );
WRITE8_HANDLER( zookeep_bankswitch_w );
@@ -63,7 +70,7 @@ WRITE8_HANDLER( qix_68705_portA_w );
WRITE8_HANDLER( qix_68705_portB_w );
WRITE8_HANDLER( qix_68705_portC_w );
-WRITE8_HANDLER( qix_pia_0_w );
+WRITE8_DEVICE_HANDLER( qix_pia_w );
MC6845_ON_VSYNC_CHANGED( qix_vsync_changed );
@@ -74,7 +81,7 @@ MACHINE_DRIVER_EXTERN( qix_video );
MACHINE_DRIVER_EXTERN( zookeep_video );
MACHINE_DRIVER_EXTERN( slither_video );
-WRITE8_HANDLER( qix_flip_screen_w );
+WRITE8_DEVICE_HANDLER( qix_flip_screen_w );
WRITE8_HANDLER( qix_palettebank_w );
@@ -82,6 +89,3 @@ WRITE8_HANDLER( qix_palettebank_w );
MACHINE_DRIVER_EXTERN( qix_audio );
MACHINE_DRIVER_EXTERN( slither_audio );
-
-WRITE8_HANDLER( qix_dac_w );
-WRITE8_HANDLER( qix_vol_w );
diff --git a/src/mame/includes/spiders.h b/src/mame/includes/spiders.h
index ac65a176ecf..a8dd0a003e8 100644
--- a/src/mame/includes/spiders.h
+++ b/src/mame/includes/spiders.h
@@ -7,9 +7,9 @@
/*----------- defined in audio/spiders.c -----------*/
-WRITE8_HANDLER( spiders_audio_command_w );
-WRITE8_HANDLER( spiders_audio_a_w );
-WRITE8_HANDLER( spiders_audio_b_w );
-WRITE8_HANDLER( spiders_audio_ctrl_w );
+WRITE8_DEVICE_HANDLER( spiders_audio_command_w );
+WRITE8_DEVICE_HANDLER( spiders_audio_a_w );
+WRITE8_DEVICE_HANDLER( spiders_audio_b_w );
+WRITE8_DEVICE_HANDLER( spiders_audio_ctrl_w );
MACHINE_DRIVER_EXTERN( spiders_audio );
diff --git a/src/mame/machine/mcr.c b/src/mame/machine/mcr.c
index 0d0ecfc0fc3..e42c0cfd9b5 100644
--- a/src/mame/machine/mcr.c
+++ b/src/mame/machine/mcr.c
@@ -83,10 +83,10 @@ static void subtract_from_counter(running_machine *machine, int counter, int cou
static TIMER_CALLBACK( mcr68_493_callback );
static TIMER_CALLBACK( zwackery_493_callback );
-static WRITE8_HANDLER( zwackery_pia_2_w );
-static WRITE8_HANDLER( zwackery_pia_3_w );
-static WRITE8_HANDLER( zwackery_ca2_w );
-static void zwackery_pia_irq(running_machine *machine, int state);
+static WRITE8_DEVICE_HANDLER( zwackery_pia0_w );
+static WRITE8_DEVICE_HANDLER( zwackery_pia1_w );
+static WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w );
+static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq );
static void reload_count(int counter);
static TIMER_CALLBACK( counter_fired_callback );
@@ -135,48 +135,77 @@ const gfx_layout mcr_sprite_layout =
*
*************************************/
-READ8_HANDLER( zwackery_port_2_r );
+READ8_DEVICE_HANDLER( zwackery_port_2_r );
-static READ8_HANDLER( zwackery_port_1_r )
+static READ8_DEVICE_HANDLER( zwackery_port_1_r )
{
- UINT8 ret = input_port_read(space->machine, "IN1");
+ UINT8 ret = input_port_read(device->machine, "IN1");
- pia_set_port_a_z_mask(3, ret);
+ pianew_set_port_a_z_mask(device, ret);
return ret;
}
-static READ8_HANDLER( zwackery_port_3_r )
+static READ8_DEVICE_HANDLER( zwackery_port_3_r )
{
- UINT8 ret = input_port_read(space->machine, "IN3");
+ UINT8 ret = input_port_read(device->machine, "IN3");
- pia_set_port_a_z_mask(4, ret);
+ pianew_set_port_a_z_mask(device, ret);
return ret;
}
-static const pia6821_interface zwackery_pia_2_intf =
+const pia6821_interface zwackery_pia0_intf =
{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, input_port_0_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ zwackery_pia_2_w, 0, 0, 0,
- /*irqs : A/B */ zwackery_pia_irq, zwackery_pia_irq
+ DEVCB_NULL, /* port A in */
+ DEVCB_INPUT_PORT("IN0"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(zwackery_pia0_w), /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_LINE(zwackery_pia_irq), /* IRQA */
+ DEVCB_LINE(zwackery_pia_irq) /* IRQB */
};
-static const pia6821_interface zwackery_pia_3_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ zwackery_port_1_r, zwackery_port_2_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ zwackery_pia_3_w, 0, zwackery_ca2_w, 0,
- /*irqs : A/B */ 0, 0
+
+const pia6821_interface zwackery_pia1_intf =
+{
+ DEVCB_HANDLER(zwackery_port_1_r), /* port A in */
+ DEVCB_HANDLER(zwackery_port_2_r), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_HANDLER(zwackery_pia1_w), /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_LINE(zwackery_ca2_w), /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface zwackery_pia_4_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ zwackery_port_3_r, input_port_4_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+
+const pia6821_interface zwackery_pia2_intf =
+{
+ DEVCB_HANDLER(zwackery_port_3_r), /* port A in */
+ DEVCB_INPUT_PORT("DSW"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -372,11 +401,6 @@ MACHINE_RESET( mcr68 )
MACHINE_START( zwackery )
{
- /* append our PIA state onto the existing one and reinit */
- pia_config(machine, 2, &zwackery_pia_2_intf);
- pia_config(machine, 3, &zwackery_pia_3_intf);
- pia_config(machine, 4, &zwackery_pia_4_intf);
-
MACHINE_START_CALL(mcr68);
}
@@ -387,9 +411,6 @@ MACHINE_RESET( zwackery )
mcr68_common_init(machine);
v493_callback = zwackery_493_callback;
- /* append our PIA state onto the existing one and reinit */
- pia_reset();
-
/* vectors are 5 and 6 */
v493_irq_vector = 5;
m6840_irq_vector = 6;
@@ -558,10 +579,10 @@ WRITE8_HANDLER( mcr_scroll_value_w )
*
*************************************/
-WRITE8_HANDLER( zwackery_pia_2_w )
+WRITE8_DEVICE_HANDLER( zwackery_pia0_w )
{
/* bit 7 is the watchdog */
- if (!(data & 0x80)) watchdog_reset_w(space, offset, data);
+ if (!(data & 0x80)) watchdog_reset(device->machine);
/* bits 5 and 6 control hflip/vflip */
/* bits 3 and 4 control coin counters? */
@@ -569,37 +590,38 @@ WRITE8_HANDLER( zwackery_pia_2_w )
}
-WRITE8_HANDLER( zwackery_pia_3_w )
+WRITE8_DEVICE_HANDLER( zwackery_pia1_w )
{
zwackery_sound_data = (data >> 4) & 0x0f;
}
-WRITE8_HANDLER( zwackery_ca2_w )
+WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w )
{
- csdeluxe_data_w(space, offset, (data << 4) | zwackery_sound_data);
+ const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
+ csdeluxe_data_w(space, 0, (state << 4) | zwackery_sound_data);
}
-static void zwackery_pia_irq(running_machine *machine, int state)
+static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq )
{
- v493_irq_state = pia_get_irq_a(2) | pia_get_irq_b(2);
- update_mcr68_interrupts(machine);
+ v493_irq_state = pianew_get_irq_a(device) | pianew_get_irq_b(device);
+ update_mcr68_interrupts(device->machine);
}
static TIMER_CALLBACK( zwackery_493_off_callback )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_2_ca1_w(space, 0, 0);
+ const device_config *pia = devtag_get_device(machine, PIA6821, "pia0");
+ pia_ca1_w(pia, 0, 0);
}
static TIMER_CALLBACK( zwackery_493_callback )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
+ const device_config *pia = devtag_get_device(machine, PIA6821, "pia0");
- pia_2_ca1_w(space, 0, 1);
+ pia_ca1_w(pia, 0, 1);
timer_set(machine, video_screen_get_scan_period(machine->primary_screen), NULL, 0, zwackery_493_off_callback);
}
diff --git a/src/mame/machine/midyunit.c b/src/mame/machine/midyunit.c
index 1cda3bb2bf0..8facecfc732 100644
--- a/src/mame/machine/midyunit.c
+++ b/src/mame/machine/midyunit.c
@@ -7,7 +7,6 @@
#include "driver.h"
#include "cpu/tms34010/tms34010.h"
#include "cpu/m6809/m6809.h"
-#include "machine/6821pia.h"
#include "audio/williams.h"
#include "midyunit.h"
diff --git a/src/mame/machine/qix.c b/src/mame/machine/qix.c
index 23adecf251a..ab721f65233 100644
--- a/src/mame/machine/qix.c
+++ b/src/mame/machine/qix.c
@@ -7,7 +7,6 @@
***************************************************************************/
#include "driver.h"
-#include "machine/6821pia.h"
#include "cpu/m6800/m6800.h"
#include "cpu/m6805/m6805.h"
#include "cpu/m6809/m6809.h"
@@ -22,25 +21,17 @@
*
*************************************/
-static READ8_HANDLER( qixmcu_coin_r );
-static WRITE8_HANDLER( qixmcu_coinctrl_w );
-static WRITE8_HANDLER( qixmcu_coin_w );
+static READ8_DEVICE_HANDLER( qixmcu_coin_r );
+static WRITE8_DEVICE_HANDLER( qixmcu_coinctrl_w );
+static WRITE8_DEVICE_HANDLER( qixmcu_coin_w );
-static WRITE8_HANDLER( sync_pia_4_porta_w );
+static WRITE8_DEVICE_HANDLER( qix_coinctl_w );
-static WRITE8_HANDLER( pia_5_warning_w );
+static WRITE8_DEVICE_HANDLER( slither_76489_0_w );
+static WRITE8_DEVICE_HANDLER( slither_76489_1_w );
-static WRITE8_HANDLER( qix_coinctl_w );
-static WRITE8_HANDLER( slither_coinctl_w );
-
-static void qix_pia_sint(running_machine *machine, int state);
-static void qix_pia_dint(running_machine *machine, int state);
-
-static WRITE8_HANDLER( slither_76489_0_w );
-static WRITE8_HANDLER( slither_76489_1_w );
-
-static READ8_HANDLER( slither_trak_lr_r );
-static READ8_HANDLER( slither_trak_ud_r );
+static READ8_DEVICE_HANDLER( slither_trak_lr_r );
+static READ8_DEVICE_HANDLER( slither_trak_ud_r );
@@ -95,53 +86,54 @@ static READ8_HANDLER( slither_trak_ud_r );
***************************************************************************/
-static const pia6821_interface qix_pia_0_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, input_port_1_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface qix_pia_0_intf =
+{
+ DEVCB_INPUT_PORT("P1"), /* port A in */
+ DEVCB_INPUT_PORT("COIN"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface qix_pia_1_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_2_r, input_port_3_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, 0, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface qix_pia_1_intf =
+{
+ DEVCB_INPUT_PORT("SPARE"), /* port A in */
+ DEVCB_INPUT_PORT("IN0"), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_NULL, /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface qix_pia_2_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_4_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, qix_coinctl_w, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface qix_pia_2_intf =
+{
+ DEVCB_INPUT_PORT("P2"), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(qix_coinctl_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface qix_pia_3_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ sync_pia_4_porta_w, qix_vol_w, pia_4_ca1_w, qix_flip_screen_w,
- /*irqs : A/B */ qix_pia_dint, qix_pia_dint
-};
-
-static const pia6821_interface qix_pia_4_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ pia_3_porta_w, qix_dac_w, pia_3_ca1_w, 0,
- /*irqs : A/B */ qix_pia_sint, qix_pia_sint
-};
-
-static const pia6821_interface qix_pia_5_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ pia_5_warning_w, pia_5_warning_w, pia_5_warning_w, pia_5_warning_w,
- /*irqs : A/B */ 0, 0
-};
-
-
-static WRITE8_HANDLER( pia_5_warning_w )
-{
- popmessage("PIA 5 write!!");
-}
/***************************************************************************
@@ -151,18 +143,36 @@ static WRITE8_HANDLER( pia_5_warning_w )
***************************************************************************/
-static const pia6821_interface qixmcu_pia_0_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_0_r, qixmcu_coin_r, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, qixmcu_coin_w, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface qixmcu_pia_0_intf =
+{
+ DEVCB_INPUT_PORT("P1"), /* port A in */
+ DEVCB_HANDLER(qixmcu_coin_r), /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(qixmcu_coin_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface qixmcu_pia_2_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_4_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, qixmcu_coinctrl_w, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface qixmcu_pia_2_intf =
+{
+ DEVCB_INPUT_PORT("P2"), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(qixmcu_coinctrl_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -174,25 +184,36 @@ static const pia6821_interface qixmcu_pia_2_intf =
***************************************************************************/
-static const pia6821_interface slither_pia_1_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ slither_trak_lr_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, slither_76489_0_w, 0, 0,
- /*irqs : A/B */ 0, 0
+const pia6821_interface slither_pia_1_intf =
+{
+ DEVCB_HANDLER(slither_trak_lr_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(slither_76489_0_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
-static const pia6821_interface slither_pia_2_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ slither_trak_ud_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, slither_76489_1_w, 0, 0,
- /*irqs : A/B */ 0, 0
-};
-
-static const pia6821_interface slither_pia_3_intf =
-{
- /*inputs : A/B,CA/B1,CA/B2 */ input_port_2_r, 0, 0, 0, 0, 0,
- /*outputs: A/B,CA/B2 */ 0, slither_coinctl_w, 0, qix_flip_screen_w,
- /*irqs : A/B */ qix_pia_dint, qix_pia_dint
+const pia6821_interface slither_pia_2_intf =
+{
+ DEVCB_HANDLER(slither_trak_ud_r), /* port A in */
+ DEVCB_NULL, /* port B in */
+ DEVCB_NULL, /* line CA1 in */
+ DEVCB_NULL, /* line CB1 in */
+ DEVCB_NULL, /* line CA2 in */
+ DEVCB_NULL, /* line CB2 in */
+ DEVCB_NULL, /* port A out */
+ DEVCB_HANDLER(slither_76489_1_w), /* port B out */
+ DEVCB_NULL, /* line CA2 out */
+ DEVCB_NULL, /* port CB2 out */
+ DEVCB_NULL, /* IRQA */
+ DEVCB_NULL /* IRQB */
};
@@ -203,24 +224,10 @@ static const pia6821_interface slither_pia_3_intf =
*
*************************************/
-MACHINE_START( qix )
-{
- /* configure the PIAs */
- pia_config(machine, 0, &qix_pia_0_intf);
- pia_config(machine, 1, &qix_pia_1_intf);
- pia_config(machine, 2, &qix_pia_2_intf);
- pia_config(machine, 3, &qix_pia_3_intf);
- pia_config(machine, 4, &qix_pia_4_intf);
- pia_config(machine, 5, &qix_pia_5_intf);
-}
-
MACHINE_RESET( qix )
{
qix_state *state = machine->driver_data;
- /* reset the PIAs */
- pia_reset();
-
/* reset the coin counter register */
state->coinctrl = 0x00;
}
@@ -230,28 +237,11 @@ MACHINE_START( qixmcu )
{
qix_state *state = machine->driver_data;
- /* configure the PIAs */
- pia_config(machine, 0, &qixmcu_pia_0_intf);
- pia_config(machine, 1, &qix_pia_1_intf);
- pia_config(machine, 2, &qixmcu_pia_2_intf);
- pia_config(machine, 3, &qix_pia_3_intf);
- pia_config(machine, 4, &qix_pia_4_intf);
- pia_config(machine, 5, &qix_pia_5_intf);
-
/* set up save states */
state_save_register_global_array(machine, state->_68705_port_in);
state_save_register_global(machine, state->coinctrl);
}
-MACHINE_START( slither )
-{
- /* configure the PIAs */
- pia_config(machine, 0, &qix_pia_0_intf);
- pia_config(machine, 1, &slither_pia_1_intf);
- pia_config(machine, 2, &slither_pia_2_intf);
- pia_config(machine, 3, &slither_pia_3_intf);
-}
-
/*************************************
@@ -262,8 +252,8 @@ MACHINE_START( slither )
MC6845_ON_VSYNC_CHANGED( qix_vsync_changed )
{
- const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_3_cb1_w(space, 0, vsync);
+ const device_config *pia = devtag_get_device(device->machine, PIA6821, "sndpia0");
+ pia_cb1_w(pia, 0, vsync);
}
@@ -291,26 +281,26 @@ WRITE8_HANDLER( zookeep_bankswitch_w )
WRITE8_HANDLER( qix_data_firq_w )
{
- cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
+ cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
}
WRITE8_HANDLER( qix_data_firq_ack_w )
{
- cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
+ cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
}
READ8_HANDLER( qix_data_firq_r )
{
- cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
+ cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
return 0xff;
}
READ8_HANDLER( qix_data_firq_ack_r )
{
- cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
+ cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
return 0xff;
}
@@ -324,26 +314,26 @@ READ8_HANDLER( qix_data_firq_ack_r )
WRITE8_HANDLER( qix_video_firq_w )
{
- cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, ASSERT_LINE);
+ cputag_set_input_line(space->machine, "videocpu", M6809_FIRQ_LINE, ASSERT_LINE);
}
WRITE8_HANDLER( qix_video_firq_ack_w )
{
- cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, CLEAR_LINE);
+ cputag_set_input_line(space->machine, "videocpu", M6809_FIRQ_LINE, CLEAR_LINE);
}
READ8_HANDLER( qix_video_firq_r )
{
- cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, ASSERT_LINE);
+ cputag_set_input_line(space->machine, "videocpu", M6809_FIRQ_LINE, ASSERT_LINE);
return 0xff;
}
READ8_HANDLER( qix_video_firq_ack_r )
{
- cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, CLEAR_LINE);
+ cputag_set_input_line(space->machine, "videocpu", M6809_FIRQ_LINE, CLEAR_LINE);
return 0xff;
}
@@ -351,93 +341,47 @@ READ8_HANDLER( qix_video_firq_ack_r )
/*************************************
*
- * Sound PIA interfaces
- *
- *************************************/
-
-static TIMER_CALLBACK( deferred_pia_4_porta_w )
-{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_4_porta_w(space, 0, param);
-}
-
-
-static WRITE8_HANDLER( sync_pia_4_porta_w )
-{
- /* we need to synchronize this so the sound CPU doesn't drop anything important */
- timer_call_after_resynch(space->machine, NULL, data, deferred_pia_4_porta_w);
-}
-
-
-
-/*************************************
- *
- * IRQ generation
- *
- *************************************/
-
-static void qix_pia_dint(running_machine *machine, int state)
-{
- int combined_state = pia_get_irq_a(3) | pia_get_irq_b(3);
-
- /* DINT is connected to the data CPU's IRQ line */
- cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
-static void qix_pia_sint(running_machine *machine, int state)
-{
- int combined_state = pia_get_irq_a(4) | pia_get_irq_b(4);
-
- /* SINT is connected to the sound CPU's IRQ line */
- cpu_set_input_line(machine->cpu[2], M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
-
-/*************************************
- *
* 68705 Communication
*
*************************************/
-READ8_HANDLER( qixmcu_coin_r )
+READ8_DEVICE_HANDLER( qixmcu_coin_r )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
logerror("6809:qixmcu_coin_r = %02X\n", state->_68705_port_out[0]);
return state->_68705_port_out[0];
}
-static WRITE8_HANDLER( qixmcu_coin_w )
+static WRITE8_DEVICE_HANDLER( qixmcu_coin_w )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
logerror("6809:qixmcu_coin_w = %02X\n", data);
- /* this is a callback called by pia_0_w(), so I don't need to synchronize */
- /* the CPUs - they have already been synchronized by qix_pia_0_w() */
+ /* this is a callback called by pia_w(), so I don't need to synchronize */
+ /* the CPUs - they have already been synchronized by qix_pia_w() */
state->_68705_port_in[0] = data;
}
-static WRITE8_HANDLER( qixmcu_coinctrl_w )
+static WRITE8_DEVICE_HANDLER( qixmcu_coinctrl_w )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
/* if (!(data & 0x04)) */
if (data & 0x04)
{
- cpu_set_input_line(space->machine->cpu[3], M68705_IRQ_LINE, ASSERT_LINE);
+ cputag_set_input_line(device->machine, "mcu", M68705_IRQ_LINE, ASSERT_LINE);
/* temporarily boost the interleave to sync things up */
/* note: I'm using 50 because 30 is not enough for space dungeon at game over */
- cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(50));
+ cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(50));
}
else
- cpu_set_input_line(space->machine->cpu[3], M68705_IRQ_LINE, CLEAR_LINE);
+ cputag_set_input_line(device->machine, "mcu", M68705_IRQ_LINE, CLEAR_LINE);
- /* this is a callback called by pia_0_w(), so I don't need to synchronize */
- /* the CPUs - they have already been synchronized by qix_pia_0_w() */
+ /* this is a callback called by pia_w(), so I don't need to synchronize */
+ /* the CPUs - they have already been synchronized by qix_pia_w() */
state->coinctrl = data;
logerror("6809:qixmcu_coinctrl_w = %02X\n", data);
}
@@ -525,18 +469,18 @@ WRITE8_HANDLER( qix_68705_portC_w )
*
*************************************/
-static TIMER_CALLBACK( pia_0_w_callback )
+static TIMER_CALLBACK( pia_w_callback )
{
- const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
- pia_0_w(space, param >> 8, param & 0xff);
+ const device_config *device = ptr;
+ pia_w(device, param >> 8, param & 0xff);
}
-WRITE8_HANDLER( qix_pia_0_w )
+WRITE8_DEVICE_HANDLER( qix_pia_w )
{
/* make all the CPUs synchronize, and only AFTER that write the command to the PIA */
/* otherwise the 68705 will miss commands */
- timer_call_after_resynch(space->machine, NULL, data | (offset << 8), pia_0_w_callback);
+ timer_call_after_resynch(device->machine, (void *)device, data | (offset << 8), pia_w_callback);
}
@@ -547,20 +491,13 @@ WRITE8_HANDLER( qix_pia_0_w )
*
*************************************/
-static WRITE8_HANDLER( qix_coinctl_w )
+static WRITE8_DEVICE_HANDLER( qix_coinctl_w )
{
coin_lockout_w(0, (~data >> 2) & 1);
coin_counter_w(0, (data >> 1) & 1);
}
-static WRITE8_HANDLER( slither_coinctl_w )
-{
- coin_lockout_w(0, (~data >> 6) & 1);
- coin_counter_w(0, (data >> 5) & 1);
-}
-
-
/*************************************
*
@@ -568,25 +505,25 @@ static WRITE8_HANDLER( slither_coinctl_w )
*
*************************************/
-static WRITE8_HANDLER( slither_76489_0_w )
+static WRITE8_DEVICE_HANDLER( slither_76489_0_w )
{
/* write to the sound chip */
- sn76496_w(devtag_get_device(space->machine, SOUND, "sn1"), 0, data);
+ sn76496_w(devtag_get_device(device->machine, SOUND, "sn1"), 0, data);
/* clock the ready line going back into CB1 */
- pia_1_cb1_w(space, 0, 0);
- pia_1_cb1_w(space, 0, 1);
+ pia_cb1_w(device, 0, 0);
+ pia_cb1_w(device, 0, 1);
}
-static WRITE8_HANDLER( slither_76489_1_w )
+static WRITE8_DEVICE_HANDLER( slither_76489_1_w )
{
/* write to the sound chip */
- sn76496_w(devtag_get_device(space->machine, SOUND, "sn2"), 0, data);
+ sn76496_w(devtag_get_device(device->machine, SOUND, "sn2"), 0, data);
/* clock the ready line going back into CB1 */
- pia_2_cb1_w(space, 0, 0);
- pia_2_cb1_w(space, 0, 1);
+ pia_cb1_w(device, 0, 0);
+ pia_cb1_w(device, 0, 1);
}
@@ -597,17 +534,17 @@ static WRITE8_HANDLER( slither_76489_1_w )
*
*************************************/
-static READ8_HANDLER( slither_trak_lr_r )
+static READ8_DEVICE_HANDLER( slither_trak_lr_r )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
- return input_port_read(space->machine, state->flip ? "AN3" : "AN1");
+ return input_port_read(device->machine, state->flip ? "AN3" : "AN1");
}
-static READ8_HANDLER( slither_trak_ud_r )
+static READ8_DEVICE_HANDLER( slither_trak_ud_r )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
- return input_port_read(space->machine, state->flip ? "AN2" : "AN0");
+ return input_port_read(device->machine, state->flip ? "AN2" : "AN0");
}
diff --git a/src/mame/machine/tait8741.c b/src/mame/machine/tait8741.c
index be1e06bd08b..fc057607bfc 100644
--- a/src/mame/machine/tait8741.c
+++ b/src/mame/machine/tait8741.c
@@ -47,6 +47,7 @@ typedef struct TAITO8741_status{
int serial_out;
int coins;
read8_space_func portHandler;
+ const char *portName;
}I8741;
static const struct TAITO8741interface *intf;
@@ -176,7 +177,7 @@ static void taito8741_update(const address_space *space, int num)
else
{ /* port select */
st->parallelselect = data & 0x07;
- taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space,st->parallelselect) : 0);
+ taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space,st->parallelselect) : st->portName ? input_port_read(space->machine, st->portName) : 0);
}
}
}
@@ -187,7 +188,7 @@ static void taito8741_update(const address_space *space, int num)
case -1: /* no command data */
break;
case 0x00: /* read from parallel port */
- taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space,0) : 0 );
+ taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space,0) : st->portName ? input_port_read(space->machine, st->portName) : 0 );
break;
case 0x01: /* read receive buffer 0 */
case 0x02: /* read receive buffer 1 */
@@ -200,7 +201,7 @@ static void taito8741_update(const address_space *space, int num)
taito8741_hostdata_w(st,st->rxd[data-1]);
break;
case 0x08: /* latch received serial data */
- st->txd[0] = st->portHandler ? st->portHandler(space,0) : 0;
+ st->txd[0] = st->portHandler ? st->portHandler(space,0) : st->portName ? input_port_read(space->machine, st->portName) : 0;
if( sst )
{
timer_call_after_resynch(space->machine, NULL, num, taito8741_serial_tx);
@@ -264,6 +265,7 @@ int TAITO8741_start(const struct TAITO8741interface *taito8741intf)
{
taito8741[i].connect = intf->serial_connect[i];
taito8741[i].portHandler = intf->portHandler_r[i];
+ taito8741[i].portName = intf->portName_r[i];
taito8741[i].mode = intf->mode[i];
TAITO8741_reset(i);
}
@@ -293,7 +295,7 @@ static int I8741_data_r(const address_space *space, int num)
switch( st->mode )
{
case TAITO8741_PORT: /* parallel data */
- taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space, st->parallelselect) : 0);
+ taito8741_hostdata_w(st,st->portHandler ? st->portHandler(space, st->parallelselect) : st->portName ? input_port_read(space->machine, st->portName) : 0);
break;
}
return ret;
@@ -388,7 +390,7 @@ typedef struct josvolly_8741_struct {
UINT8 rst;
- read8_space_func initReadPort;
+ const char *initReadPort;
}JV8741;
static JV8741 i8741[4];
@@ -413,10 +415,10 @@ void josvolly_8741_reset(void)
i8741[0].connect = 1;
i8741[1].connect = 0;
- i8741[0].initReadPort = input_port_3_r; /* DSW1 */
- i8741[1].initReadPort = input_port_4_r; /* DSW2 */
- i8741[2].initReadPort = input_port_3_r; /* DUMMY */
- i8741[3].initReadPort = input_port_4_r; /* DUMMY */
+ i8741[0].initReadPort = "DSW1"; /* DSW1 */
+ i8741[1].initReadPort = "DSW2"; /* DSW2 */
+ i8741[2].initReadPort = "DSW1"; /* DUMMY */
+ i8741[3].initReadPort = "DSW2"; /* DUMMY */
}
/* transmit data finish callback */
@@ -512,7 +514,7 @@ static INT8 josvolly_8741_r(const address_space *space,int num,int offset)
if(offset==1)
{
if(mcu->rst)
- mcu->rxd = (mcu->initReadPort)(space,0); /* port in */
+ mcu->rxd = input_port_read(space->machine, mcu->initReadPort); /* port in */
ret = mcu->sts;
LOG(("%s:8741[%d] SR %02X\n",cpuexec_describe_context(space->machine),num,ret));
}
diff --git a/src/mame/machine/tait8741.h b/src/mame/machine/tait8741.h
index 9cfca52a014..5bc9b49df40 100644
--- a/src/mame/machine/tait8741.h
+++ b/src/mame/machine/tait8741.h
@@ -1,6 +1,8 @@
#ifndef __TAITO8741__
#define __TAITO8741__
+#include "devcb.h"
+
/****************************************************************************
gladiatr and Great Swordsman set.
****************************************************************************/
@@ -18,6 +20,7 @@ struct TAITO8741interface
int mode[MAX_TAITO8741]; /* program select */
int serial_connect[MAX_TAITO8741]; /* serial port connection */
read8_space_func portHandler_r[MAX_TAITO8741]; /* parallel port handler */
+ const char *portName_r[MAX_TAITO8741];
};
int TAITO8741_start(const struct TAITO8741interface *taito8741intf);
diff --git a/src/mame/machine/tnzs.c b/src/mame/machine/tnzs.c
index ff68066fbc1..29245719e53 100644
--- a/src/mame/machine/tnzs.c
+++ b/src/mame/machine/tnzs.c
@@ -553,9 +553,9 @@ DRIVER_INIT( insectx )
mcu_type = MCU_NONE_INSECTX;
/* this game has no mcu, replace the handler with plain input port handlers */
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, input_port_2_r );
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc001, 0xc001, 0, 0, input_port_3_r );
- memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc002, 0xc002, 0, 0, input_port_4_r );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, "IN0" );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc001, 0xc001, 0, 0, "IN1" );
+ memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc002, 0xc002, 0, 0, "IN2" );
}
DRIVER_INIT( kageki )
diff --git a/src/mame/video/qix.c b/src/mame/video/qix.c
index e5aaab92173..d5b6e35f02f 100644
--- a/src/mame/video/qix.c
+++ b/src/mame/video/qix.c
@@ -86,9 +86,9 @@ static MC6845_ON_DE_CHANGED( display_enable_changed )
*
*************************************/
-WRITE8_HANDLER( qix_flip_screen_w )
+WRITE8_DEVICE_HANDLER( qix_flip_screen_w )
{
- qix_state *state = space->machine->driver_data;
+ qix_state *state = device->machine->driver_data;
state->flip = data;
}
@@ -445,7 +445,7 @@ static const m6809_config encryption_config =
MACHINE_DRIVER_START( qix_video )
- MDRV_CPU_ADD("video", M6809, MAIN_CLOCK_OSC/4/4) /* 1.25 MHz */
+ MDRV_CPU_ADD("videocpu", M6809, MAIN_CLOCK_OSC/4/4) /* 1.25 MHz */
MDRV_CPU_PROGRAM_MAP(qix_video_map,0)
MDRV_CPU_CONFIG(encryption_config) // for kram3
@@ -461,12 +461,12 @@ MACHINE_DRIVER_END
MACHINE_DRIVER_START( zookeep_video )
- MDRV_CPU_MODIFY("video")
+ MDRV_CPU_MODIFY("videocpu")
MDRV_CPU_PROGRAM_MAP(zookeep_video_map,0)
MACHINE_DRIVER_END
MACHINE_DRIVER_START( slither_video )
- MDRV_CPU_REPLACE("video", M6809, SLITHER_CLOCK_OSC/4/4) /* 1.34 MHz */
+ MDRV_CPU_REPLACE("videocpu", M6809, SLITHER_CLOCK_OSC/4/4) /* 1.34 MHz */
MDRV_CPU_PROGRAM_MAP(slither_video_map,0)
MACHINE_DRIVER_END