diff options
author | 2014-01-02 18:08:30 +0000 | |
---|---|---|
committer | 2014-01-02 18:08:30 +0000 | |
commit | 8f1e301775661619821a67661d8257ead6dcea72 (patch) | |
tree | 0c966b20c0e34e1bc313d1b05c0a990e1aa8990a /src | |
parent | 838276728a99327d99e45768bac9cc659160d7b1 (diff) |
removed the simplest 6522 port callbacks [smf]
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/bus/a2bus/a2mockingboard.c | 32 | ||||
-rw-r--r-- | src/emu/bus/a2bus/a2mockingboard.h | 4 | ||||
-rw-r--r-- | src/mame/drivers/gameplan.c | 4 | ||||
-rw-r--r-- | src/mame/drivers/trvquest.c | 4 | ||||
-rw-r--r-- | src/mame/includes/gameplan.h | 1 | ||||
-rw-r--r-- | src/mame/video/gameplan.c | 7 | ||||
-rw-r--r-- | src/mess/drivers/a6809.c | 32 | ||||
-rw-r--r-- | src/mess/drivers/apple3.c | 2 | ||||
-rw-r--r-- | src/mess/drivers/ec65.c | 50 | ||||
-rw-r--r-- | src/mess/drivers/lisa.c | 2 | ||||
-rw-r--r-- | src/mess/drivers/microtan.c | 3 | ||||
-rw-r--r-- | src/mess/drivers/mirage.c | 51 | ||||
-rw-r--r-- | src/mess/drivers/rmnimbus.c | 1 | ||||
-rw-r--r-- | src/mess/includes/apple3.h | 11 | ||||
-rw-r--r-- | src/mess/includes/lisa.h | 2 | ||||
-rw-r--r-- | src/mess/includes/microtan.h | 3 | ||||
-rw-r--r-- | src/mess/includes/rmnimbus.h | 5 | ||||
-rw-r--r-- | src/mess/machine/apple3.c | 39 | ||||
-rw-r--r-- | src/mess/machine/lisa.c | 47 | ||||
-rw-r--r-- | src/mess/machine/microtan.c | 50 | ||||
-rw-r--r-- | src/mess/machine/rmnimbus.c | 14 |
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) { } |