summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-12-24 14:55:09 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2018-12-24 14:55:09 +1100
commit0e43a220ef3e5ebabd28e39bc08988979a7620a6 (patch)
tree5bc615470c82d6f3647b76c016ff13dc3fb9e2b5
parent52537abc086189f24b0617af59d19f52aca7534d (diff)
laser500 etc : added bankdev, fixes MT 07180 (crash on hard reset)
-rw-r--r--src/mame/drivers/vtech2.cpp116
-rw-r--r--src/mame/includes/vtech2.h43
-rw-r--r--src/mame/machine/vtech2.cpp179
-rw-r--r--src/mame/video/vtech2.cpp3
4 files changed, 131 insertions, 210 deletions
diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp
index 78c72c220f2..9d69691bb99 100644
--- a/src/mame/drivers/vtech2.cpp
+++ b/src/mame/drivers/vtech2.cpp
@@ -59,9 +59,9 @@
F 0x3c000 - 0x3ffff ROM expansion
TODO:
- Add ROMs and drivers for the Laser100, 110,
- 210 and 310 machines and the Texet 8000.
- They should probably go to the vtech1.c files, though.
+ - Hook up cart slots
+ - Ram pak
+ - undumped DOS ROM
***************************************************************************/
@@ -77,24 +77,89 @@
#include "formats/vt_cas.h"
-void vtech2_state::vtech2_mem(address_map &map)
+void vtech2_state::mem_map(address_map &map)
{
- map.unmap_value_high();
- map(0x0000, 0x3fff).bankrw("bank1");
- map(0x4000, 0x7fff).bankrw("bank2");
- map(0x8000, 0xbfff).bankrw("bank3");
- map(0xc000, 0xffff).bankrw("bank4");
+ map(0x0000, 0x3fff).m(m_banka, FUNC(address_map_bank_device::amap8));
+ map(0x4000, 0x7fff).m(m_bankb, FUNC(address_map_bank_device::amap8));
+ map(0x8000, 0xbfff).m(m_bankc, FUNC(address_map_bank_device::amap8));
+ map(0xc000, 0xffff).m(m_bankd, FUNC(address_map_bank_device::amap8));
}
-void vtech2_state::vtech2_io(address_map &map)
+void vtech2_state::io_map(address_map &map)
{
map.global_mask(0xff);
map(0x10, 0x1f).rw(FUNC(vtech2_state::laser_fdc_r), FUNC(vtech2_state::laser_fdc_w));
- map(0x40, 0x43).w(FUNC(vtech2_state::laser_bank_select_w));
+ map(0x40, 0x40).lw8("set_bankA", [this] (u8 data) { m_banka->set_bank(data & 15); });
+ map(0x41, 0x41).lw8("set_bankB", [this] (u8 data) { m_bankb->set_bank(data & 15); });
+ map(0x42, 0x42).lw8("set_bankC", [this] (u8 data) { m_bankc->set_bank(data & 15); });
+ map(0x43, 0x43).lw8("set_bankD", [this] (u8 data) { m_bankd->set_bank(data & 15); });
map(0x44, 0x44).w(FUNC(vtech2_state::laser_bg_mode_w));
map(0x45, 0x45).w(FUNC(vtech2_state::laser_two_color_w));
}
+// Laser 350, 16k ram
+void vtech2_state::m_map350(address_map &map)
+{
+ map(0x00000, 0x03fff).rom().region("maincpu", 0);
+ map(0x04000, 0x07fff).rom().region("maincpu", 0x4000);
+ map(0x08000, 0x0bfff).rw(FUNC(vtech2_state::mmio_r), FUNC(vtech2_state::mmio_w));
+ map(0x0c000, 0x0ffff).ram().share(m_videoram);
+ map(0x10000, 0x13fff).noprw();
+ map(0x14000, 0x17fff).noprw();
+ map(0x18000, 0x1bfff).noprw();
+ map(0x1c000, 0x1ffff).noprw();
+ map(0x20000, 0x23fff).noprw(); // TODO: 64k ram expansion pak
+ map(0x24000, 0x27fff).noprw(); // TODO: 64k ram expansion pak
+ map(0x28000, 0x2bfff).noprw(); // TODO: 64k ram expansion pak
+ map(0x2c000, 0x2ffff).noprw(); // TODO: 64k ram expansion pak
+ map(0x30000, 0x33fff).noprw(); // TODO: rom in expansion port
+ map(0x34000, 0x37fff).noprw(); // TODO: rom in expansion port
+ map(0x38000, 0x3bfff).noprw(); // TODO: rom in expansion port
+ map(0x3c000, 0x3ffff).noprw(); // TODO: rom in expansion port
+}
+
+// Laser 500, 64k ram
+void vtech2_state::m_map500(address_map &map)
+{
+ map(0x00000, 0x03fff).rom().region("maincpu", 0);
+ map(0x04000, 0x07fff).rom().region("maincpu", 0x4000);
+ map(0x08000, 0x0bfff).rw(FUNC(vtech2_state::mmio_r), FUNC(vtech2_state::mmio_w));
+ map(0x0c000, 0x0ffff).noprw();
+ map(0x10000, 0x13fff).ram();
+ map(0x14000, 0x17fff).ram();
+ map(0x18000, 0x1bfff).ram();
+ map(0x1c000, 0x1ffff).ram().share(m_videoram);
+ map(0x20000, 0x23fff).noprw(); // TODO: 64k ram expansion pak
+ map(0x24000, 0x27fff).noprw(); // TODO: 64k ram expansion pak
+ map(0x28000, 0x2bfff).noprw(); // TODO: 64k ram expansion pak
+ map(0x2c000, 0x2ffff).noprw(); // TODO: 64k ram expansion pak
+ map(0x30000, 0x33fff).noprw(); // TODO: rom in expansion port
+ map(0x34000, 0x37fff).noprw(); // TODO: rom in expansion port
+ map(0x38000, 0x3bfff).noprw(); // TODO: rom in expansion port
+ map(0x3c000, 0x3ffff).noprw(); // TODO: rom in expansion port
+}
+
+// Laser 700, 128k ram
+void vtech2_state::m_map700(address_map &map)
+{
+ map(0x00000, 0x03fff).rom().region("maincpu", 0);
+ map(0x04000, 0x07fff).rom().region("maincpu", 0x4000);
+ map(0x08000, 0x0bfff).rw(FUNC(vtech2_state::mmio_r), FUNC(vtech2_state::mmio_w));
+ map(0x0c000, 0x0ffff).noprw();
+ map(0x10000, 0x13fff).ram();
+ map(0x14000, 0x17fff).ram();
+ map(0x18000, 0x1bfff).ram();
+ map(0x1c000, 0x1ffff).ram().share(m_videoram);
+ map(0x20000, 0x23fff).ram();
+ map(0x24000, 0x27fff).ram();
+ map(0x28000, 0x2bfff).ram();
+ map(0x2c000, 0x2ffff).ram();
+ map(0x30000, 0x33fff).noprw(); // TODO: rom in expansion port
+ map(0x34000, 0x37fff).noprw(); // TODO: rom in expansion port
+ map(0x38000, 0x3bfff).noprw(); // TODO: rom in expansion port
+ map(0x3c000, 0x3ffff).noprw(); // TODO: rom in expansion port
+}
+
static INPUT_PORTS_START( laser500 )
PORT_START("ROW0") /* KEY ROW 0 */
@@ -428,11 +493,16 @@ static const floppy_interface vtech2_floppy_interface =
MACHINE_CONFIG_START(vtech2_state::laser350)
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 3694700) /* 3.694700 MHz */
- MCFG_DEVICE_PROGRAM_MAP(vtech2_mem)
- MCFG_DEVICE_IO_MAP(vtech2_io)
+ MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ MCFG_DEVICE_IO_MAP(io_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vtech2_state, vtech2_interrupt)
MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ ADDRESS_MAP_BANK(config, "banka").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankb").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankc").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankd").set_map(&vtech2_state::m_map350).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
@@ -467,13 +537,29 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(vtech2_state::laser500)
laser350(config);
- MCFG_MACHINE_RESET_OVERRIDE(vtech2_state, laser500 )
+
+ config.device_remove("banka");
+ config.device_remove("bankb");
+ config.device_remove("bankc");
+ config.device_remove("bankd");
+ ADDRESS_MAP_BANK(config, "banka").set_map(&vtech2_state::m_map500).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankb").set_map(&vtech2_state::m_map500).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankc").set_map(&vtech2_state::m_map500).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankd").set_map(&vtech2_state::m_map500).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(vtech2_state::laser700)
laser350(config);
- MCFG_MACHINE_RESET_OVERRIDE(vtech2_state, laser700 )
+
+ config.device_remove("banka");
+ config.device_remove("bankb");
+ config.device_remove("bankc");
+ config.device_remove("bankd");
+ ADDRESS_MAP_BANK(config, "banka").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankb").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankc").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
+ ADDRESS_MAP_BANK(config, "bankd").set_map(&vtech2_state::m_map700).set_options(ENDIANNESS_LITTLE, 8, 18, 0x4000);
/* Second 5.25" floppy drive */
MCFG_LEGACY_FLOPPY_DRIVE_ADD( FLOPPY_1, vtech2_floppy_interface )
diff --git a/src/mame/includes/vtech2.h b/src/mame/includes/vtech2.h
index 06d69009c1a..ccfed0f13a6 100644
--- a/src/mame/includes/vtech2.h
+++ b/src/mame/includes/vtech2.h
@@ -9,6 +9,7 @@
#ifndef MAME_INCLUDES_VTECH2_H
#define MAME_INCLUDES_VTECH2_H
+#include "machine/bankdev.h"
#include "bus/generic/carts.h"
#include "bus/generic/slot.h"
#include "imagedev/cassette.h"
@@ -30,7 +31,12 @@ public:
, m_laser_file(*this, {FLOPPY_0, FLOPPY_1})
, m_gfxdecode(*this, "gfxdecode")
, m_palette(*this, "palette")
+ , m_videoram(*this, "videoram")
, m_io_keyboard(*this, {"ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7", "ROWD", "ROWC", "ROWB", "ROWA"})
+ , m_banka(*this, "banka")
+ , m_bankb(*this, "bankb")
+ , m_bankc(*this, "bankc")
+ , m_bankd(*this, "bankd")
{ }
void laser350(machine_config &config);
@@ -48,31 +54,20 @@ private:
DECLARE_WRITE8_MEMBER(laser_two_color_w);
DECLARE_READ8_MEMBER(laser_fdc_r);
virtual void machine_reset() override;
- virtual void video_start() override;
DECLARE_PALETTE_INIT(vtech2);
- DECLARE_MACHINE_RESET(laser500);
- DECLARE_MACHINE_RESET(laser700);
uint32_t screen_update_laser(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(vtech2_interrupt);
+ DECLARE_WRITE8_MEMBER(mmio_w);
+ DECLARE_READ8_MEMBER(mmio_r);
- int mra_bank(int bank, int offs);
- void mwa_bank(int bank, int offs, int data);
-
- DECLARE_WRITE8_MEMBER(mwa_bank1);
- DECLARE_WRITE8_MEMBER(mwa_bank2);
- DECLARE_WRITE8_MEMBER(mwa_bank3);
- DECLARE_WRITE8_MEMBER(mwa_bank4);
- DECLARE_READ8_MEMBER(mra_bank1);
- DECLARE_READ8_MEMBER(mra_bank2);
- DECLARE_READ8_MEMBER(mra_bank3);
- DECLARE_READ8_MEMBER(mra_bank4);
-
- void laser_machine_init(int bank_mask, int video_mask);
void laser_get_track();
void laser_put_track();
- void vtech2_io(address_map &map);
- void vtech2_mem(address_map &map);
+ void io_map(address_map &map);
+ void mem_map(address_map &map);
+ void m_map350(address_map &map);
+ void m_map500(address_map &map);
+ void m_map700(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
@@ -81,16 +76,16 @@ private:
optional_device_array<legacy_floppy_image_device, 2> m_laser_file;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ optional_shared_ptr<u8> m_videoram;
required_ioport_array<12> m_io_keyboard;
+ required_device<address_map_bank_device> m_banka;
+ required_device<address_map_bank_device> m_bankb;
+ required_device<address_map_bank_device> m_bankc;
+ required_device<address_map_bank_device> m_bankd;
- uint8_t *m_videoram;
- int m_laser_latch;
char m_laser_frame_message[64+1];
int m_laser_frame_time;
- uint8_t *m_mem;
- int m_laser_bank_mask;
- int m_laser_bank[4];
- int m_laser_video_bank;
+ u8 m_laser_latch;
uint8_t m_laser_track_x2[2];
uint8_t m_laser_fdc_status;
uint8_t m_laser_fdc_data[TRKSIZE_FM];
diff --git a/src/mame/machine/vtech2.cpp b/src/mame/machine/vtech2.cpp
index 4b31ef031f3..c99a40ea729 100644
--- a/src/mame/machine/vtech2.cpp
+++ b/src/mame/machine/vtech2.cpp
@@ -26,36 +26,6 @@
static const uint8_t laser_fdc_wrprot[2] = {0x80, 0x80};
-/* wrappers for bank #1 to #4 */
-WRITE8_MEMBER(vtech2_state::mwa_bank1 ) { mwa_bank(0,offset,data); }
-WRITE8_MEMBER(vtech2_state::mwa_bank2 ) { mwa_bank(1,offset,data); }
-WRITE8_MEMBER(vtech2_state::mwa_bank3 ) { mwa_bank(2,offset,data); }
-WRITE8_MEMBER(vtech2_state::mwa_bank4 ) { mwa_bank(3,offset,data); }
-
-/* wrappers for bank #1 to #4 */
-READ8_MEMBER(vtech2_state::mra_bank1 ) { return mra_bank(0,offset); }
-READ8_MEMBER(vtech2_state::mra_bank2 ) { return mra_bank(1,offset); }
-READ8_MEMBER(vtech2_state::mra_bank3 ) { return mra_bank(2,offset); }
-READ8_MEMBER(vtech2_state::mra_bank4 ) { return mra_bank(3,offset); }
-
-/* read banked memory (plain ROM/RAM) */
-static const char *const mra_bank_hard[4] =
-{
- "bank1", /* mapped in 0000-3fff */
- "bank2", /* mapped in 4000-7fff */
- "bank3", /* mapped in 8000-bfff */
- "bank4" /* mapped in c000-ffff */
-};
-
-/* write banked memory (plain ROM/RAM) */
-static const char *const mwa_bank_hard[4] =
-{
- "bank1", /* mapped in 0000-3fff */
- "bank2", /* mapped in 4000-7fff */
- "bank3", /* mapped in 8000-bfff */
- "bank4" /* mapped in c000-ffff */
-};
-
void vtech2_state::init_laser()
{
uint8_t *gfx = memregion("gfx2")->base();
@@ -69,117 +39,19 @@ void vtech2_state::init_laser()
gfx[i] = i;
m_laser_latch = -1;
- m_mem = memregion("maincpu")->base();
// check ROM expansion
std::string region_tag;
m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str());
-
- for (i = 0; i < ARRAY_LENGTH(m_laser_bank); i++)
- m_laser_bank[i] = -1;
}
-
-void vtech2_state::laser_machine_init(int bank_mask, int video_mask)
-{
- m_laser_bank_mask = bank_mask;
- m_laser_video_bank = video_mask;
- m_videoram = m_mem + m_laser_video_bank * 0x04000;
- logerror("laser_machine_init(): bank mask $%04X, video %d [$%05X]\n", m_laser_bank_mask, m_laser_video_bank, m_laser_video_bank * 0x04000);
-
- for (int i = 0; i < ARRAY_LENGTH(m_laser_bank); i++)
- laser_bank_select_w(m_maincpu->space(AS_PROGRAM), i, 0);
-
- m_language = m_io_keyboard[5]->read() & 0x30;
-}
-
void vtech2_state::machine_reset()
{
- /* banks 0 to 3 only, optional ROM extension */
- laser_machine_init(0x00f, 3);
-}
-
-MACHINE_RESET_MEMBER(vtech2_state,laser500)
-{
- /* banks 0 to 2, and 4-7 only, optional ROM extension */
- laser_machine_init(0x0f7, 7);
-}
-
-MACHINE_RESET_MEMBER(vtech2_state,laser700)
-{
- /* all banks except #3 */
- laser_machine_init(0xff7, 7);
+ m_language = m_io_keyboard[5]->read() & 0x30;
}
-WRITE8_MEMBER(vtech2_state::laser_bank_select_w)
-{
- static const char *const bank_name[16] = {
- "ROM lo","ROM hi","MM I/O","Video RAM lo",
- "RAM #0","RAM #1","RAM #2","RAM #3",
- "RAM #4","RAM #5","RAM #6","RAM #7/Video RAM hi",
- "ext ROM #0","ext ROM #1","ext ROM #2","ext ROM #3"
- };
- char bank[10];
- offset %= 4;
- data &= 15;
-
- if( data != m_laser_bank[offset] )
- {
- m_laser_bank[offset] = data;
- logerror("select bank #%d $%02X [$%05X] %s\n", offset+1, data, 0x4000 * (data & 15), bank_name[data]);
-
- /* memory mapped I/O bank selected? */
- if (data == 2)
- {
- static read8_delegate mra_bank_soft[] =
- {
- read8_delegate(FUNC(vtech2_state::mra_bank1), this),
- read8_delegate(FUNC(vtech2_state::mra_bank2), this),
- read8_delegate(FUNC(vtech2_state::mra_bank3), this),
- read8_delegate(FUNC(vtech2_state::mra_bank4), this),
- };
-
- static write8_delegate mwa_bank_soft[] =
- {
- write8_delegate(FUNC(vtech2_state::mwa_bank1), this),
- write8_delegate(FUNC(vtech2_state::mwa_bank2), this),
- write8_delegate(FUNC(vtech2_state::mwa_bank3), this),
- write8_delegate(FUNC(vtech2_state::mwa_bank4), this),
- };
-
- m_maincpu->space(AS_PROGRAM).install_readwrite_handler(offset * 0x4000, offset * 0x4000 + 0x3fff, mra_bank_soft[offset], mwa_bank_soft[offset]);
- }
- else
- {
- sprintf(bank, "bank%d", offset + 1);
- if (data >= 12 && m_cart_rom && (m_cart_rom->bytes() > (data % 12) * 0x4000)) // Expansion ROM banks
- {
- membank(bank)->set_base(m_cart_rom->base()+ (data % 12) * 0x4000);
- m_maincpu->space(AS_PROGRAM).install_read_bank(offset * 0x4000, offset * 0x4000 + 0x3fff, mra_bank_hard[offset]);
- m_maincpu->space(AS_PROGRAM).install_write_bank(offset * 0x4000, offset * 0x4000 + 0x3fff, mwa_bank_hard[offset]);
- }
- else if (data < 12 && (m_laser_bank_mask & (1 << data))) // ROM/RAM banks
- {
- // video RAM bank selected?
- if (data == m_laser_video_bank)
- logerror("select bank #%d VIDEO!\n", offset + 1);
-
- membank(bank)->set_base(&m_mem[0x4000 * m_laser_bank[offset]]);
- m_maincpu->space(AS_PROGRAM).install_read_bank(offset * 0x4000, offset * 0x4000 + 0x3fff, mra_bank_hard[offset]);
- m_maincpu->space(AS_PROGRAM).install_write_bank(offset * 0x4000, offset * 0x4000 + 0x3fff, mwa_bank_hard[offset]);
- }
- else
- {
- logerror("select bank #%d MASKED!\n", offset + 1);
- m_maincpu->space(AS_PROGRAM).nop_readwrite(offset * 0x4000, offset * 0x4000 + 0x3fff);
- }
- }
-
- }
-}
-
/*************************************************
* memory mapped I/O read
* bit function
@@ -192,19 +64,19 @@ WRITE8_MEMBER(vtech2_state::laser_bank_select_w)
* 1 column 1
* 0 column 0
************************************************/
-int vtech2_state::mra_bank(int bank, int offs)
+READ8_MEMBER( vtech2_state::mmio_r )
{
u8 data = 0x7f;
- offs = ~offs & 0x7ff;
- if (BIT(offs, 10))
+ offset = ~offset & 0x7ff;
+ if (BIT(offset, 10))
{
- offs = (offs >> 8) & 3;
- data &= m_io_keyboard[offs + 8]->read(); // ROW A-D
+ offset = (offset >> 8) & 3;
+ data &= m_io_keyboard[offset + 8]->read(); // ROW A-D
}
else
for (u8 i = 0; i < 8; i++)
- if (BIT(offs, i))
+ if (BIT(offset, i))
data &= m_io_keyboard[i]->read(); // ROW 0-7
/* BIT 7 - tape input */
@@ -224,40 +96,11 @@ int vtech2_state::mra_bank(int bank, int offs)
* 1 cassette out (LSB)
* 0 speaker A
************************************************/
-void vtech2_state::mwa_bank(int bank, int offs, int data)
+WRITE8_MEMBER( vtech2_state::mmio_w )
{
- offs += 0x4000 * m_laser_bank[bank];
- switch (m_laser_bank[bank])
- {
- case 0: /* ROM lower 16K */
- case 1: /* ROM upper 16K */
- logerror("bank #%d write to ROM [$%05X] $%02X\n", bank+1, offs, data);
- break;
- case 2: /* memory mapped output */
- if (data != m_laser_latch)
- {
- logerror("bank #%d write to I/O [$%05X] $%02X\n", bank+1, offs, data);
- /* Toggle between graphics and text modes? */
- if ((data ^ m_laser_latch) & 0x01)
- m_speaker->level_w(data & 1);
- m_laser_latch = data;
- }
- m_cassette->output( BIT(data, 2) ? -1.0 : +1.0);
- break;
- case 12: /* ext. ROM #1 */
- case 13: /* ext. ROM #2 */
- case 14: /* ext. ROM #3 */
- case 15: /* ext. ROM #4 */
- logerror("bank #%d write to ROM [$%05X] $%02X\n", bank+1, offs, data);
- break;
- default: /* RAM */
- if( m_laser_bank[bank] == m_laser_video_bank && m_mem[offs] != data )
- {
- logerror("bank #%d write to videoram [$%05X] $%02X\n", bank+1, offs, data);
- }
- m_mem[offs] = data;
- break;
- }
+ m_speaker->level_w(data & 1);
+ m_laser_latch = data;
+ m_cassette->output( BIT(data, 2) ? -1.0 : +1.0);
}
diff --git a/src/mame/video/vtech2.cpp b/src/mame/video/vtech2.cpp
index b873993eb5f..9c24b9b13bc 100644
--- a/src/mame/video/vtech2.cpp
+++ b/src/mame/video/vtech2.cpp
@@ -42,9 +42,6 @@
* 1 1 1 1 GR1 bank 3 0E000-0FFFF
*/
-void vtech2_state::video_start()
-{
-}
static const int offs_2[192] = {
0x0000,0x0800,0x1000,0x1800,0x2000,0x2800,0x3000,0x3800,