summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author smf- <smf-@users.noreply.github.com>2014-01-02 18:08:30 +0000
committer smf- <smf-@users.noreply.github.com>2014-01-02 18:08:30 +0000
commit8f1e301775661619821a67661d8257ead6dcea72 (patch)
tree0c966b20c0e34e1bc313d1b05c0a990e1aa8990a /src
parent838276728a99327d99e45768bac9cc659160d7b1 (diff)
removed the simplest 6522 port callbacks [smf]
Diffstat (limited to 'src')
-rw-r--r--src/emu/bus/a2bus/a2mockingboard.c32
-rw-r--r--src/emu/bus/a2bus/a2mockingboard.h4
-rw-r--r--src/mame/drivers/gameplan.c4
-rw-r--r--src/mame/drivers/trvquest.c4
-rw-r--r--src/mame/includes/gameplan.h1
-rw-r--r--src/mame/video/gameplan.c7
-rw-r--r--src/mess/drivers/a6809.c32
-rw-r--r--src/mess/drivers/apple3.c2
-rw-r--r--src/mess/drivers/ec65.c50
-rw-r--r--src/mess/drivers/lisa.c2
-rw-r--r--src/mess/drivers/microtan.c3
-rw-r--r--src/mess/drivers/mirage.c51
-rw-r--r--src/mess/drivers/rmnimbus.c1
-rw-r--r--src/mess/includes/apple3.h11
-rw-r--r--src/mess/includes/lisa.h2
-rw-r--r--src/mess/includes/microtan.h3
-rw-r--r--src/mess/includes/rmnimbus.h5
-rw-r--r--src/mess/machine/apple3.c39
-rw-r--r--src/mess/machine/lisa.c47
-rw-r--r--src/mess/machine/microtan.c50
-rw-r--r--src/mess/machine/rmnimbus.c14
21 files changed, 164 insertions, 200 deletions
diff --git a/src/emu/bus/a2bus/a2mockingboard.c b/src/emu/bus/a2bus/a2mockingboard.c
index a2bdcb61d56..7d894d8d282 100644
--- a/src/emu/bus/a2bus/a2mockingboard.c
+++ b/src/emu/bus/a2bus/a2mockingboard.c
@@ -40,15 +40,11 @@ static const ay8910_interface mockingboard_ay8910_interface =
MACHINE_CONFIG_FRAGMENT( mockingboard )
MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w))
MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w))
@@ -64,15 +60,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( phasor )
MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w))
MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w))
@@ -95,15 +87,11 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( echoplus )
MCFG_DEVICE_ADD(VIA1_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via1_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via1_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via1_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via1_irq_w))
MCFG_DEVICE_ADD(VIA2_TAG, VIA6522, 1022727)
- MCFG_VIA6522_READPA_HANDLER(READ8(a2bus_ayboard_device, via2_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(a2bus_ayboard_device, via2_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(a2bus_ayboard_device, via2_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(a2bus_ayboard_device, via2_irq_w))
@@ -323,21 +311,11 @@ WRITE_LINE_MEMBER( a2bus_ayboard_device::via2_irq_w )
}
}
-READ8_MEMBER( a2bus_ayboard_device::via1_in_a )
-{
- return 0;
-}
-
WRITE8_MEMBER( a2bus_ayboard_device::via1_out_a )
{
m_porta1 = data;
}
-READ8_MEMBER( a2bus_ayboard_device::via1_in_b )
-{
- return 0;
-}
-
WRITE8_MEMBER( a2bus_ayboard_device::via1_out_b )
{
if (!(data & 4))
@@ -426,21 +404,11 @@ WRITE8_MEMBER( a2bus_ayboard_device::via1_out_b )
}
}
-READ8_MEMBER( a2bus_ayboard_device::via2_in_a )
-{
- return 0;
-}
-
WRITE8_MEMBER( a2bus_ayboard_device::via2_out_a )
{
m_porta2 = data;
}
-READ8_MEMBER( a2bus_ayboard_device::via2_in_b )
-{
- return 0;
-}
-
WRITE8_MEMBER( a2bus_ayboard_device::via2_out_b )
{
if (!(data & 4))
diff --git a/src/emu/bus/a2bus/a2mockingboard.h b/src/emu/bus/a2bus/a2mockingboard.h
index b2dcdf14094..e873b583207 100644
--- a/src/emu/bus/a2bus/a2mockingboard.h
+++ b/src/emu/bus/a2bus/a2mockingboard.h
@@ -32,12 +32,8 @@ public:
DECLARE_WRITE_LINE_MEMBER( via1_irq_w );
DECLARE_WRITE_LINE_MEMBER( via2_irq_w );
- DECLARE_READ8_MEMBER(via1_in_a);
- DECLARE_READ8_MEMBER(via1_in_b);
DECLARE_WRITE8_MEMBER(via1_out_a);
DECLARE_WRITE8_MEMBER(via1_out_b);
- DECLARE_READ8_MEMBER(via2_in_a);
- DECLARE_READ8_MEMBER(via2_in_b);
DECLARE_WRITE8_MEMBER(via2_out_a);
DECLARE_WRITE8_MEMBER(via2_out_b);
diff --git a/src/mame/drivers/gameplan.c b/src/mame/drivers/gameplan.c
index 7248a320616..5ff22537aa5 100644
--- a/src/mame/drivers/gameplan.c
+++ b/src/mame/drivers/gameplan.c
@@ -959,6 +959,9 @@ MACHINE_START_MEMBER(gameplan_state,gameplan)
save_item(NAME(m_video_y));
save_item(NAME(m_video_command));
save_item(NAME(m_video_data));
+
+ /* this is needed for trivia quest */
+ m_via_0->write_pb5(1);
}
@@ -997,7 +1000,6 @@ static MACHINE_CONFIG_START( gameplan, gameplan_state )
/* via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
- MCFG_VIA6522_READPB_HANDLER(READ8(gameplan_state, vblank_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, video_data_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, gameplan_video_command_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, video_command_trigger_w))
diff --git a/src/mame/drivers/trvquest.c b/src/mame/drivers/trvquest.c
index 70576e7b118..e8e3722814b 100644
--- a/src/mame/drivers/trvquest.c
+++ b/src/mame/drivers/trvquest.c
@@ -153,6 +153,9 @@ MACHINE_START_MEMBER(gameplan_state,trvquest)
save_item(NAME(m_video_y));
save_item(NAME(m_video_command));
save_item(NAME(m_video_data));
+
+ /* this is needed for trivia quest */
+ m_via_0->write_pb5(1);
}
MACHINE_RESET_MEMBER(gameplan_state,trvquest)
@@ -193,7 +196,6 @@ static MACHINE_CONFIG_START( trvquest, gameplan_state )
/* via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
- MCFG_VIA6522_READPB_HANDLER(READ8(gameplan_state,vblank_r))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(gameplan_state, video_data_w))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(gameplan_state, gameplan_video_command_w))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(gameplan_state, video_command_trigger_w))
diff --git a/src/mame/includes/gameplan.h b/src/mame/includes/gameplan.h
index 603781c911c..ecef8e32bec 100644
--- a/src/mame/includes/gameplan.h
+++ b/src/mame/includes/gameplan.h
@@ -89,7 +89,6 @@ public:
DECLARE_WRITE8_MEMBER(gameplan_video_command_w);
DECLARE_WRITE8_MEMBER(leprechn_video_command_w);
DECLARE_WRITE_LINE_MEMBER(video_command_trigger_w);
- DECLARE_READ8_MEMBER(vblank_r);
void gameplan_get_pens( pen_t *pens );
void leprechn_get_pens( pen_t *pens );
DECLARE_WRITE_LINE_MEMBER(via_irq);
diff --git a/src/mame/video/gameplan.c b/src/mame/video/gameplan.c
index e8b3ee1df0c..0744495e211 100644
--- a/src/mame/video/gameplan.c
+++ b/src/mame/video/gameplan.c
@@ -239,13 +239,6 @@ WRITE_LINE_MEMBER(gameplan_state::via_irq)
}
-READ8_MEMBER(gameplan_state::vblank_r)
-{
- /* this is needed for trivia quest */
- return 0x20;
-}
-
-
TIMER_CALLBACK_MEMBER(gameplan_state::via_0_ca1_timer_callback)
{
/* !VBLANK is connected to CA1 */
diff --git a/src/mess/drivers/a6809.c b/src/mess/drivers/a6809.c
index fc13a00825b..44d3ff8a417 100644
--- a/src/mess/drivers/a6809.c
+++ b/src/mess/drivers/a6809.c
@@ -71,7 +71,6 @@ public:
, m_crtc(*this, "mc6845")
{ }
- DECLARE_READ8_MEMBER(pb_r);
DECLARE_WRITE8_MEMBER(kbd_put);
DECLARE_READ8_MEMBER(videoram_r);
DECLARE_WRITE8_MEMBER(a6809_address_w);
@@ -86,7 +85,6 @@ public:
private:
UINT8 m_cass_data[4];
bool m_cass_state;
- UINT8 m_term_data;
UINT8 m_video_index;
required_device<via6522_device> m_via;
required_device<cassette_image_device> m_cass;
@@ -117,7 +115,14 @@ INPUT_PORTS_END
MACHINE_RESET_MEMBER( a6809_state, a6809)
{
- m_term_data = 0;
+ m_via->write_pb0(0);
+ m_via->write_pb1(0);
+ m_via->write_pb2(0);
+ m_via->write_pb3(0);
+ m_via->write_pb4(0);
+ m_via->write_pb5(0);
+ m_via->write_pb6(0);
+ m_via->write_pb7(0);
}
static MC6845_UPDATE_ROW( a6809_update_row )
@@ -188,11 +193,6 @@ WRITE8_MEMBER( a6809_state::a6809_register_w )
m_cursor_address = data | (temq & 0x3f00);
}
-READ8_MEMBER( a6809_state::pb_r )
-{
- return m_term_data | m_cass_data[2];
-}
-
WRITE_LINE_MEMBER( a6809_state::cass_w )
{
m_cass_state = state;
@@ -217,16 +217,23 @@ TIMER_DEVICE_CALLBACK_MEMBER(a6809_state::a6809_p)
if (cass_ws != m_cass_data[0])
{
m_cass_data[0] = cass_ws;
- m_cass_data[2] = ((m_cass_data[1] < 12) ? 128 : 0);
+ m_via->write_pb7(m_cass_data[1] < 12);
m_cass_data[1] = 0;
}
}
WRITE8_MEMBER( a6809_state::kbd_put )
{
- m_term_data = data & 0x7f;
- if (data == 8) m_term_data = 0x7f; // allow backspace to work
-
+ UINT8 d = data & 0x7f;
+ if (d == 8) d = 0x7f; // allow backspace to work
+
+ m_via->write_pb0((d>>0)&1);
+ m_via->write_pb1((d>>1)&1);
+ m_via->write_pb2((d>>2)&1);
+ m_via->write_pb3((d>>3)&1);
+ m_via->write_pb4((d>>4)&1);
+ m_via->write_pb5((d>>5)&1);
+ m_via->write_pb6((d>>6)&1);
m_via->write_cb1(1);
m_via->write_cb1(0);
}
@@ -259,7 +266,6 @@ static MACHINE_CONFIG_START( a6809, a6809_state )
/* Devices */
MCFG_DEVICE_ADD("via", VIA6522, XTAL_4MHz / 4)
- MCFG_VIA6522_READPB_HANDLER(READ8(a6809_state, pb_r))
MCFG_VIA6522_CB2_HANDLER(WRITELINE(a6809_state, cass_w))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line))
diff --git a/src/mess/drivers/apple3.c b/src/mess/drivers/apple3.c
index 044e2996ad0..e23754ca921 100644
--- a/src/mess/drivers/apple3.c
+++ b/src/mess/drivers/apple3.c
@@ -106,8 +106,6 @@ static MACHINE_CONFIG_START( apple3, apple3_state )
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(apple3_state, apple3_via_0_out_b))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 2000000)
- MCFG_VIA6522_READPA_HANDLER(READ8(apple3_state, apple3_via_1_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(apple3_state, apple3_via_1_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(apple3_state, apple3_via_1_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(apple3_state, apple3_via_1_out_b))
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(apple3_state, apple2_via_1_irq_func))
diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c
index 74936df2723..eb8cc495679 100644
--- a/src/mess/drivers/ec65.c
+++ b/src/mess/drivers/ec65.c
@@ -28,18 +28,15 @@ class ec65_state : public driver_device
public:
ec65_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_via_0(*this, VIA6522_0_TAG),
- m_p_videoram(*this, "videoram"),
+ m_via_0(*this, VIA6522_0_TAG),
+ m_via_1(*this, VIA6522_1_TAG),
+ m_p_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu") { }
- DECLARE_READ8_MEMBER(ec65_via_read_a);
- DECLARE_READ8_MEMBER(ec65_via_read_b);
- DECLARE_WRITE8_MEMBER(ec65_via_write_a);
- DECLARE_WRITE8_MEMBER(ec65_via_write_b);
DECLARE_WRITE8_MEMBER(kbd_put);
UINT8 *m_p_chargen;
- UINT8 m_keyboard_input;
optional_device<via6522_device> m_via_0;
+ optional_device<via6522_device> m_via_1;
required_shared_ptr<UINT8> m_p_videoram;
virtual void machine_reset();
virtual void video_start();
@@ -94,24 +91,6 @@ static ACIA6850_INTERFACE( ec65_acia_intf )
DEVCB_NULL
};
-READ8_MEMBER( ec65_state::ec65_via_read_a)
-{
- return m_keyboard_input;
-}
-
-READ8_MEMBER( ec65_state::ec65_via_read_b)
-{
- return 0xff;
-}
-
-WRITE8_MEMBER( ec65_state::ec65_via_write_a )
-{
-}
-
-WRITE8_MEMBER( ec65_state::ec65_via_write_b )
-{
-}
-
/* Input ports */
static INPUT_PORTS_START( ec65 )
INPUT_PORTS_END
@@ -120,7 +99,14 @@ WRITE8_MEMBER( ec65_state::kbd_put )
{
if (data)
{
- m_keyboard_input = data;
+ m_via_0->write_pa0((data>>0)&1);
+ m_via_0->write_pa1((data>>1)&1);
+ m_via_0->write_pa2((data>>2)&1);
+ m_via_0->write_pa3((data>>3)&1);
+ m_via_0->write_pa4((data>>4)&1);
+ m_via_0->write_pa5((data>>5)&1);
+ m_via_0->write_pa6((data>>6)&1);
+ m_via_0->write_pa7((data>>7)&1);
m_via_0->write_ca1(1);
m_via_0->write_ca1(0);
}
@@ -134,6 +120,14 @@ static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
void ec65_state::machine_reset()
{
+ m_via_1->write_pb0(1);
+ m_via_1->write_pb1(1);
+ m_via_1->write_pb2(1);
+ m_via_1->write_pb3(1);
+ m_via_1->write_pb4(1);
+ m_via_1->write_pb5(1);
+ m_via_1->write_pb6(1);
+ m_via_1->write_pb7(1);
}
void ec65_state::video_start()
@@ -231,12 +225,8 @@ static MACHINE_CONFIG_START( ec65, ec65_state )
MCFG_ACIA6850_ADD(ACIA6850_TAG, ec65_acia_intf)
MCFG_DEVICE_ADD(VIA6522_0_TAG, VIA6522, XTAL_4MHz / 4)
- MCFG_VIA6522_READPA_HANDLER(READ8(ec65_state, ec65_via_read_a))
MCFG_DEVICE_ADD(VIA6522_1_TAG, VIA6522, XTAL_4MHz / 4)
- MCFG_VIA6522_READPB_HANDLER(READ8(ec65_state, ec65_via_read_b))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(ec65_state, ec65_via_write_a))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(ec65_state, ec65_via_write_b))
MCFG_DEVICE_ADD(ACIA6551_TAG, MOS6551, XTAL_1_8432MHz)
MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
diff --git a/src/mess/drivers/lisa.c b/src/mess/drivers/lisa.c
index a081b329d31..b4ba4c7bdd4 100644
--- a/src/mess/drivers/lisa.c
+++ b/src/mess/drivers/lisa.c
@@ -173,7 +173,6 @@ static MACHINE_CONFIG_START( lisa, lisa_state )
/* via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 500000)
- MCFG_VIA6522_READPB_HANDLER(READ8(lisa_state, COPS_via_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(lisa_state, COPS_via_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(lisa_state, COPS_via_out_b))
MCFG_VIA6522_CA1_HANDLER(WRITELINE(lisa_state, COPS_via_out_ca2))
@@ -181,7 +180,6 @@ static MACHINE_CONFIG_START( lisa, lisa_state )
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(lisa_state, COPS_via_irq_func))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 500000)
- MCFG_VIA6522_READPB_HANDLER(READ8(lisa_state, parallel_via_in_b))
MCFG_SCC8530_ADD("scc", 7833600, line_cb_t(FUNC(lisa_state::set_scc_interrupt), static_cast<lisa_state *>(owner)))
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/microtan.c b/src/mess/drivers/microtan.c
index c6910d0e198..65cb0b877b7 100644
--- a/src/mess/drivers/microtan.c
+++ b/src/mess/drivers/microtan.c
@@ -260,7 +260,6 @@ static MACHINE_CONFIG_START( microtan, microtan_state )
/* via */
MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_0_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_0_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_0_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_0_out_b))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_0_out_ca2))
@@ -268,8 +267,6 @@ static MACHINE_CONFIG_START( microtan, microtan_state )
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(microtan_state, via_0_irq))
MCFG_DEVICE_ADD("via6522_1", VIA6522, 0)
- MCFG_VIA6522_READPA_HANDLER(READ8(microtan_state, via_1_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(microtan_state, via_1_in_b))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(microtan_state, via_1_out_a))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(microtan_state, via_1_out_b))
MCFG_VIA6522_CA2_HANDLER(WRITELINE(microtan_state, via_1_out_ca2))
diff --git a/src/mess/drivers/mirage.c b/src/mess/drivers/mirage.c
index 90248e28ea5..4e5797750bd 100644
--- a/src/mess/drivers/mirage.c
+++ b/src/mess/drivers/mirage.c
@@ -55,13 +55,16 @@ class mirage_state : public driver_device
{
public:
mirage_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_fdc(*this, "wd1772")
- { }
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_fdc(*this, "wd1772"),
+ m_via(*this, "via6522")
+ {
+ }
required_device<m6809e_device> m_maincpu;
required_device<wd1772_t> m_fdc;
+ required_device<via6522_device> m_via;
virtual void machine_reset();
@@ -76,8 +79,6 @@ public:
UINT32 screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
DECLARE_WRITE8_MEMBER(mirage_via_write_porta);
DECLARE_WRITE8_MEMBER(mirage_via_write_portb);
- DECLARE_READ8_MEMBER(mirage_via_read_porta);
- DECLARE_READ8_MEMBER(mirage_via_read_portb);
DECLARE_WRITE_LINE_MEMBER(acia_irq_w);
@@ -220,20 +221,6 @@ WRITE8_MEMBER(mirage_state::mirage_via_write_portb)
}
}
-// port A: front panel
-READ8_MEMBER(mirage_state::mirage_via_read_porta)
-{
- return 0;
-}
-
-// port B:
-// bit 6: IN FDC disk ready
-// bit 5: IN 5503 sync (?)
-READ8_MEMBER(mirage_state::mirage_via_read_portb)
-{
- return 0x60;
-}
-
static ACIA6850_INTERFACE( mirage_acia6850_interface )
{
0, // tx clock
@@ -255,8 +242,6 @@ static MACHINE_CONFIG_START( mirage, mirage_state )
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_DEVICE_ADD("via6522", VIA6522, 1000000)
- MCFG_VIA6522_READPA_HANDLER(READ8(mirage_state, mirage_via_read_porta))
- MCFG_VIA6522_READPB_HANDLER(READ8(mirage_state, mirage_via_read_portb))
MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(mirage_state, mirage_via_write_porta))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(mirage_state, mirage_via_write_portb))
MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE("maincpu", m6809e_device, irq_line))
@@ -292,6 +277,28 @@ DRIVER_INIT_MEMBER(mirage_state,mirage)
m_l_hi = m_r_hi = 9;
m_l_segs = m_r_segs = 0;
+
+ // port A: front panel
+ m_via->write_pa0(0);
+ m_via->write_pa1(0);
+ m_via->write_pa2(0);
+ m_via->write_pa3(0);
+ m_via->write_pa4(0);
+ m_via->write_pa5(0);
+ m_via->write_pa6(0);
+ m_via->write_pa7(0);
+
+ // port B:
+ // bit 6: IN FDC disk ready
+ // bit 5: IN 5503 sync (?)
+ m_via->write_pb0(0);
+ m_via->write_pb1(0);
+ m_via->write_pb2(0);
+ m_via->write_pb3(0);
+ m_via->write_pb4(0);
+ m_via->write_pb5(1);
+ m_via->write_pb6(1);
+ m_via->write_pb7(0);
}
CONS( 1984, enmirage, 0, 0, mirage, mirage, mirage_state, mirage, "Ensoniq", "Ensoniq Mirage", GAME_NOT_WORKING )
diff --git a/src/mess/drivers/rmnimbus.c b/src/mess/drivers/rmnimbus.c
index 6e14b28026c..1756f379fe9 100644
--- a/src/mess/drivers/rmnimbus.c
+++ b/src/mess/drivers/rmnimbus.c
@@ -332,7 +332,6 @@ static MACHINE_CONFIG_START( nimbus, rmnimbus_state )
MCFG_ER59256_ADD(ER59256_TAG)
MCFG_DEVICE_ADD(VIA_TAG, VIA6522, 1000000)
- MCFG_VIA6522_READPB_HANDLER(READ8(rmnimbus_state,nimbus_via_read_portb))
MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8(CENTRONICS_TAG, centronics_device, write))
MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(rmnimbus_state,nimbus_via_write_portb))
MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, strobe_w))
diff --git a/src/mess/includes/apple3.h b/src/mess/includes/apple3.h
index f283f0c1f99..2edef751eed 100644
--- a/src/mess/includes/apple3.h
+++ b/src/mess/includes/apple3.h
@@ -27,7 +27,14 @@ class apple3_state : public apple2_state
{
public:
apple3_state(const machine_config &mconfig, device_type type, const char *tag)
- : apple2_state(mconfig, type, tag) { }
+ : apple2_state(mconfig, type, tag),
+ m_via_0(*this, "via6522_0"),
+ m_via_1(*this, "via6522_1")
+ {
+ }
+
+ required_device<via6522_device> m_via_0;
+ required_device<via6522_device> m_via_1;
UINT32 m_flags;
UINT8 m_via_0_a;
@@ -61,8 +68,6 @@ public:
DECLARE_VIDEO_START(apple3);
UINT32 screen_update_apple3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(apple3_interrupt);
- DECLARE_READ8_MEMBER(apple3_via_1_in_a);
- DECLARE_READ8_MEMBER(apple3_via_1_in_b);
DECLARE_WRITE8_MEMBER(apple3_via_0_out_a);
DECLARE_WRITE8_MEMBER(apple3_via_0_out_b);
DECLARE_WRITE8_MEMBER(apple3_via_1_out_a);
diff --git a/src/mess/includes/lisa.h b/src/mess/includes/lisa.h
index 7afbccdb4dc..d6fda7bb2ec 100644
--- a/src/mess/includes/lisa.h
+++ b/src/mess/includes/lisa.h
@@ -207,10 +207,8 @@ public:
TIMER_CALLBACK_MEMBER(set_COPS_ready);
DECLARE_WRITE8_MEMBER(COPS_via_out_a);
DECLARE_WRITE_LINE_MEMBER(COPS_via_out_ca2);
- DECLARE_READ8_MEMBER(COPS_via_in_b);
DECLARE_WRITE8_MEMBER(COPS_via_out_b);
DECLARE_WRITE_LINE_MEMBER(COPS_via_out_cb2);
- DECLARE_READ8_MEMBER(parallel_via_in_b);
void field_interrupts();
void set_parity_error_pending(int value);
diff --git a/src/mess/includes/microtan.h b/src/mess/includes/microtan.h
index a72fee53d6d..fbdfe6c1563 100644
--- a/src/mess/includes/microtan.h
+++ b/src/mess/includes/microtan.h
@@ -67,13 +67,10 @@ public:
TIMER_CALLBACK_MEMBER(microtan_read_cassette);
TIMER_CALLBACK_MEMBER(microtan_pulse_nmi);
DECLARE_READ8_MEMBER(via_0_in_a);
- DECLARE_READ8_MEMBER(via_0_in_b);
DECLARE_WRITE8_MEMBER(via_0_out_a);
DECLARE_WRITE8_MEMBER(via_0_out_b);
DECLARE_WRITE_LINE_MEMBER(via_0_out_ca2);
DECLARE_WRITE_LINE_MEMBER(via_0_out_cb2);
- DECLARE_READ8_MEMBER(via_1_in_a);
- DECLARE_READ8_MEMBER(via_1_in_b);
DECLARE_WRITE8_MEMBER(via_1_out_a);
DECLARE_WRITE8_MEMBER(via_1_out_b);
DECLARE_WRITE_LINE_MEMBER(via_1_out_ca2);
diff --git a/src/mess/includes/rmnimbus.h b/src/mess/includes/rmnimbus.h
index eeda186bb34..87d54ef14d8 100644
--- a/src/mess/includes/rmnimbus.h
+++ b/src/mess/includes/rmnimbus.h
@@ -396,7 +396,8 @@ public:
m_ay8910(*this, AY8910_TAG),
m_scsibus(*this, SCSIBUS_TAG ":host"),
m_ram(*this, RAM_TAG),
- m_eeprom(*this, ER59256_TAG)
+ m_eeprom(*this, ER59256_TAG),
+ m_via(*this, VIA_TAG)
{
}
@@ -406,6 +407,7 @@ public:
required_device<scsicb_device> m_scsibus;
required_device<ram_device> m_ram;
required_device<er59256_device> m_eeprom;
+ required_device<via6522_device> m_via;
UINT32 m_debug_machine;
// i186_state m_i186;
@@ -468,7 +470,6 @@ public:
DECLARE_READ16_MEMBER(sio_serial_receive);
DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_intrq_w);
DECLARE_WRITE_LINE_MEMBER(nimbus_fdc_drq_w);
- DECLARE_READ8_MEMBER(nimbus_via_read_portb);
DECLARE_WRITE8_MEMBER(nimbus_via_write_portb);
DECLARE_WRITE_LINE_MEMBER(nimbus_via_irq_w);
DECLARE_WRITE_LINE_MEMBER(nimbus_ack_w);
diff --git a/src/mess/machine/apple3.c b/src/mess/machine/apple3.c
index 397bf5fc3e5..eb6f756c7ba 100644
--- a/src/mess/machine/apple3.c
+++ b/src/mess/machine/apple3.c
@@ -249,11 +249,9 @@ WRITE8_MEMBER(apple3_state::apple3_c0xx_w)
INTERRUPT_GEN_MEMBER(apple3_state::apple3_interrupt)
{
- via6522_device *via_1 = machine().device<via6522_device>("via6522_1");
-
- via_1->write_ca2((AY3600_keydata_strobe_r(machine()) & 0x80) ? 1 : 0);
- via_1->write_cb1(machine().primary_screen->vblank());
- via_1->write_cb2(machine().primary_screen->vblank());
+ m_via_1->write_ca2((AY3600_keydata_strobe_r(machine()) & 0x80) ? 1 : 0);
+ m_via_1->write_cb1(machine().primary_screen->vblank());
+ m_via_1->write_cb2(machine().primary_screen->vblank());
}
@@ -444,11 +442,8 @@ void apple3_state::apple3_update_memory()
/* reinstall VIA handlers */
{
- via6522_device *via_0 = machine().device<via6522_device>("via6522_0");
- via6522_device *via_1 = machine().device<via6522_device>("via6522_1");
-
- space.install_readwrite_handler(0xFFD0, 0xFFDF, 0, 0, read8_delegate(FUNC(via6522_device::read),via_0), write8_delegate(FUNC(via6522_device::write),via_0));
- space.install_readwrite_handler(0xFFE0, 0xFFEF, 0, 0, read8_delegate(FUNC(via6522_device::read),via_1), write8_delegate(FUNC(via6522_device::write),via_1));
+ space.install_readwrite_handler(0xFFD0, 0xFFDF, 0, 0, read8_delegate(FUNC(via6522_device::read),m_via_0.target()), write8_delegate(FUNC(via6522_device::write),m_via_0.target()));
+ space.install_readwrite_handler(0xFFE0, 0xFFEF, 0, 0, read8_delegate(FUNC(via6522_device::read),m_via_1.target()), write8_delegate(FUNC(via6522_device::write),m_via_1.target()));
}
}
@@ -464,10 +459,6 @@ void apple3_state::apple3_via_out(UINT8 *var, UINT8 data)
}
-/* these are here to appease the Apple /// confidence tests */
-READ8_MEMBER(apple3_state::apple3_via_1_in_a){ return ~0; }
-READ8_MEMBER(apple3_state::apple3_via_1_in_b){ return ~0; }
-
WRITE8_MEMBER(apple3_state::apple3_via_0_out_a)
{
apple3_via_out(&m_via_0_a, data);
@@ -690,6 +681,26 @@ DRIVER_INIT_MEMBER(apple3_state,apple3)
m_via_0_a = ~0;
m_via_1_a = ~0;
m_via_1_irq = 0;
+
+ /* these are here to appease the Apple /// confidence tests */
+ m_via_1->write_pa0(1);
+ m_via_1->write_pa1(1);
+ m_via_1->write_pa2(1);
+ m_via_1->write_pa3(1);
+ m_via_1->write_pa4(1);
+ m_via_1->write_pa5(1);
+ m_via_1->write_pa6(1);
+ m_via_1->write_pa7(1);
+
+ m_via_1->write_pb0(1);
+ m_via_1->write_pb1(1);
+ m_via_1->write_pb2(1);
+ m_via_1->write_pb3(1);
+ m_via_1->write_pb4(1);
+ m_via_1->write_pb5(1);
+ m_via_1->write_pb6(1);
+ m_via_1->write_pb7(1);
+
apple3_update_memory();
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(apple3_state::apple3_opbase), this));
diff --git a/src/mess/machine/lisa.c b/src/mess/machine/lisa.c
index 12d27864e79..4804ec2c36c 100644
--- a/src/mess/machine/lisa.c
+++ b/src/mess/machine/lisa.c
@@ -387,6 +387,7 @@ TIMER_CALLBACK_MEMBER(lisa_state::read_COPS_command)
address_space &space = m_maincpu->space(AS_PROGRAM);
m_COPS_Ready = 0;
+ m_via0->write_pb6(m_COPS_Ready);
/*logerror("read_COPS_command : trying to send data to VIA\n");*/
COPS_send_data_if_possible();
@@ -557,6 +558,7 @@ TIMER_CALLBACK_MEMBER(lisa_state::read_COPS_command)
TIMER_CALLBACK_MEMBER(lisa_state::set_COPS_ready)
{
m_COPS_Ready = 1;
+ m_via0->write_pb6(m_COPS_Ready);
/* impulsion width : +/- 20us */
machine().scheduler().timer_set(attotime::from_usec(20), timer_expired_delegate(FUNC(lisa_state::read_COPS_command),this));
@@ -620,6 +622,7 @@ void lisa_state::plug_keyboard()
void lisa_state::init_COPS()
{
m_COPS_Ready = 0;
+ m_via0->write_pb6(m_COPS_Ready);
reset_COPS();
}
@@ -663,18 +666,6 @@ WRITE_LINE_MEMBER(lisa_state::COPS_via_out_ca2)
CB1 : not used
CB2 (O) : sound output
*/
-READ8_MEMBER(lisa_state::COPS_via_in_b)
-{
- int val = 0;
-
- if (m_COPS_Ready)
- val |= 0x40;
-
- if (m_FDIR)
- val |= 0x10;
-
- return val;
-}
WRITE8_MEMBER(lisa_state::COPS_via_out_b)
{
@@ -734,24 +725,6 @@ void lisa_state::COPS_via_irq_func(int val)
CB1 : not used
CB2 (I) : current parity latch value
*/
-READ8_MEMBER(lisa_state::parallel_via_in_b)
-{
- int val = 0;
-
- if (m_DISK_DIAG)
- val |= 0x40;
-
- /* tell there is no hard disk : */
- val |= 0x1;
-
- /* keep busy high to work around a bug??? */
- //val |= 0x2;
-
- return val;
-}
-
-
-
@@ -1010,6 +983,18 @@ void lisa_state::machine_reset()
m_video_address_latch = 0;
m_videoram_ptr = (UINT16 *) m_ram_ptr;
+ m_FDIR = 0;
+ m_via0->write_pb4(m_FDIR);
+
+ /* tell there is no hard disk : */
+ m_via1->write_pb0(1);
+
+ /* keep busy high to work around a bug??? */
+ //m_via1->write_pb1(1);
+
+ m_DISK_DIAG = 0;
+ m_via1->write_pb6(m_DISK_DIAG);
+
/* reset COPS keyboard/mouse controller */
init_COPS();
@@ -1177,9 +1162,11 @@ void lisa_state::lisa_fdc_ttl_glue_access(offs_t offset)
break;
case 6:
m_DISK_DIAG = offset & 1;
+ m_via1->write_pb6(m_DISK_DIAG);
break;
case 7:
m_FDIR = offset & 1; /* Interrupt request to 68k */
+ m_via0->write_pb4(m_FDIR);
field_interrupts();
break;
}
diff --git a/src/mess/machine/microtan.c b/src/mess/machine/microtan.c
index aa316cd6b65..c4250f5b13b 100644
--- a/src/mess/machine/microtan.c
+++ b/src/mess/machine/microtan.c
@@ -162,13 +162,6 @@ READ8_MEMBER(microtan_state::via_0_in_a)
return data;
}
-READ8_MEMBER(microtan_state::via_0_in_b)
-{
- int data = 0xff;
- LOG(("microtan_via_0_in_b %02X\n", data));
- return data;
-}
-
WRITE8_MEMBER(microtan_state::via_0_out_a)
{
LOG(("microtan_via_0_out_a %02X\n", data));
@@ -201,19 +194,6 @@ WRITE_LINE_MEMBER(microtan_state::via_0_irq)
/**************************************************************
* VIA callback functions for VIA #1
**************************************************************/
-READ8_MEMBER(microtan_state::via_1_in_a)
-{
- int data = 0xff;
- LOG(("microtan_via_1_in_a %02X\n", data));
- return data;
-}
-
-READ8_MEMBER(microtan_state::via_1_in_b)
-{
- int data = 0xff;
- LOG(("microtan_via_1_in_b %02X\n", data));
- return data;
-}
WRITE8_MEMBER(microtan_state::via_1_out_a)
{
@@ -492,13 +472,39 @@ DRIVER_INIT_MEMBER(microtan_state,microtan)
m_timer = timer_alloc(TIMER_READ_CASSETTE);
m_via6522_0->write_ca1(1);
- m_via6522_0->write_cb1(1);
m_via6522_0->write_ca2(1);
+
+ m_via6522_0->write_pb0(1);
+ m_via6522_0->write_pb1(1);
+ m_via6522_0->write_pb2(1);
+ m_via6522_0->write_pb3(1);
+ m_via6522_0->write_pb4(1);
+ m_via6522_0->write_pb5(1);
+ m_via6522_0->write_pb6(1);
+ m_via6522_0->write_pb7(1);
+ m_via6522_0->write_cb1(1);
m_via6522_0->write_cb2(1);
+ m_via6522_1->write_pa0(1);
+ m_via6522_1->write_pa1(1);
+ m_via6522_1->write_pa2(1);
+ m_via6522_1->write_pa3(1);
+ m_via6522_1->write_pa4(1);
+ m_via6522_1->write_pa5(1);
+ m_via6522_1->write_pa6(1);
+ m_via6522_1->write_pa7(1);
m_via6522_1->write_ca1(1);
- m_via6522_1->write_cb1(1);
m_via6522_1->write_ca2(1);
+
+ m_via6522_1->write_pb0(1);
+ m_via6522_1->write_pb1(1);
+ m_via6522_1->write_pb2(1);
+ m_via6522_1->write_pb3(1);
+ m_via6522_1->write_pb4(1);
+ m_via6522_1->write_pb5(1);
+ m_via6522_1->write_pb6(1);
+ m_via6522_1->write_pb7(1);
+ m_via6522_1->write_cb1(1);
m_via6522_1->write_cb2(1);
}
diff --git a/src/mess/machine/rmnimbus.c b/src/mess/machine/rmnimbus.c
index 9da35fe45b4..497b7af7cca 100644
--- a/src/mess/machine/rmnimbus.c
+++ b/src/mess/machine/rmnimbus.c
@@ -1242,6 +1242,15 @@ void rmnimbus_state::machine_reset()
DRIVER_INIT_MEMBER(rmnimbus_state,nimbus)
{
+/* USER VIA 6522 port B is connected to the BBC user port */
+ m_via->write_pb0(1);
+ m_via->write_pb1(1);
+ m_via->write_pb2(1);
+ m_via->write_pb3(1);
+ m_via->write_pb4(1);
+ m_via->write_pb5(1);
+ m_via->write_pb6(1);
+ m_via->write_pb7(1);
}
void rmnimbus_state::machine_start()
@@ -2970,11 +2979,6 @@ collector output only. It usially acts as the printer strobe line.
***********************************************************************/
/* USER VIA 6522 port B is connected to the BBC user port */
-READ8_MEMBER(rmnimbus_state::nimbus_via_read_portb)
-{
- return 0xff;
-}
-
WRITE8_MEMBER(rmnimbus_state::nimbus_via_write_portb)
{
}