mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
vcs80: removed direct update handler [R. Belmont]
This commit is contained in:
parent
9d3d07b771
commit
20e0d73916
@ -64,14 +64,18 @@ WRITE8_MEMBER( vcs80_state::pio_w )
|
||||
|
||||
/* Memory Maps */
|
||||
|
||||
static ADDRESS_MAP_START( vcs80_mem, AS_PROGRAM, 8, vcs80_state )
|
||||
AM_RANGE(0x0000, 0x01ff) AM_ROM
|
||||
static ADDRESS_MAP_START( vcs80_bd_mem, AS_PROGRAM, 8, vcs80_state )
|
||||
AM_RANGE(0x0000, 0x01ff) AM_ROM AM_REGION(Z80_TAG, 0)
|
||||
AM_RANGE(0x0400, 0x07ff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( vcs80_mem, AS_PROGRAM, 8, vcs80_state )
|
||||
AM_RANGE(0x0000, 0xffff) AM_READWRITE(mem_r, mem_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( vcs80_io, AS_IO, 8, vcs80_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||
AM_RANGE(0x04, 0x07) AM_READWRITE(pio_r, pio_w)
|
||||
AM_RANGE(0x00, 0xff) AM_READWRITE(io_r, io_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* Input Ports */
|
||||
@ -226,6 +230,13 @@ static MACHINE_CONFIG_START( vcs80, vcs80_state )
|
||||
/* internal ram */
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("1K")
|
||||
|
||||
/* bankdev */
|
||||
MCFG_DEVICE_ADD("bdmem", ADDRESS_MAP_BANK, 0)
|
||||
MCFG_DEVICE_PROGRAM_MAP(vcs80_bd_mem)
|
||||
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
|
||||
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
|
||||
MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/* ROMs */
|
||||
@ -235,23 +246,7 @@ ROM_START( vcs80 )
|
||||
ROM_LOAD( "monitor.rom", 0x0000, 0x0200, CRC(44aff4e9) SHA1(3472e5a9357eaba3ed6de65dee2b1c6b29349dd2) )
|
||||
ROM_END
|
||||
|
||||
/* Driver Initialization */
|
||||
|
||||
DIRECT_UPDATE_MEMBER(vcs80_state::vcs80_direct_update_handler)
|
||||
{
|
||||
/* _A0 is connected to PIO PB7 */
|
||||
m_pio->port_b_write((!BIT(address, 0)) << 7);
|
||||
|
||||
return address;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(vcs80_state,vcs80)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&vcs80_state::vcs80_direct_update_handler, this));
|
||||
m_maincpu->space(AS_IO).set_direct_update_handler(direct_update_delegate(&vcs80_state::vcs80_direct_update_handler, this));
|
||||
}
|
||||
|
||||
/* System Drivers */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1983, vcs80, 0, 0, vcs80, vcs80, vcs80_state, vcs80, "Eckhard Schiller", "VCS-80", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND)
|
||||
COMP( 1983, vcs80, 0, 0, vcs80, vcs80, driver_device, 0, "Eckhard Schiller", "VCS-80", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND)
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "cpu/z80/z80daisy.h"
|
||||
#include "machine/z80pio.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/bankdev.h"
|
||||
|
||||
#define SCREEN_TAG "screen"
|
||||
#define Z80_TAG "z80"
|
||||
@ -25,7 +26,8 @@ public:
|
||||
m_pio(*this, Z80PIO_TAG),
|
||||
m_y0(*this, "Y0"),
|
||||
m_y1(*this, "Y1"),
|
||||
m_y2(*this, "Y2")
|
||||
m_y2(*this, "Y2"),
|
||||
m_bdmem(*this, "bdmem")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -33,6 +35,7 @@ public:
|
||||
required_ioport m_y0;
|
||||
required_ioport m_y1;
|
||||
required_ioport m_y2;
|
||||
required_device<address_map_bank_device> m_bdmem;
|
||||
|
||||
virtual void machine_start() override;
|
||||
|
||||
@ -40,8 +43,38 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( pio_w );
|
||||
DECLARE_READ8_MEMBER( pio_pa_r );
|
||||
DECLARE_WRITE8_MEMBER( pio_pb_w );
|
||||
|
||||
DECLARE_READ8_MEMBER( mem_r )
|
||||
{
|
||||
m_pio->port_b_write((!BIT(offset, 0)) << 7);
|
||||
return m_bdmem->read8(space, offset);
|
||||
}
|
||||
|
||||
DECLARE_WRITE8_MEMBER( mem_w )
|
||||
{
|
||||
m_pio->port_b_write((!BIT(offset, 0)) << 7);
|
||||
m_bdmem->write8(space, offset, data);
|
||||
}
|
||||
|
||||
DECLARE_READ8_MEMBER( io_r )
|
||||
{
|
||||
m_pio->port_b_write((!BIT(offset, 0)) << 7);
|
||||
if ((offset >= 4) && (offset <= 7))
|
||||
{
|
||||
return pio_r(space, offset-4);
|
||||
}
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
DECLARE_WRITE8_MEMBER( io_w )
|
||||
{
|
||||
m_pio->port_b_write((!BIT(offset, 0)) << 7);
|
||||
if ((offset >= 4) && (offset <= 7))
|
||||
{
|
||||
pio_w(space, offset-4, data);
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_DIRECT_UPDATE_MEMBER(vcs80_direct_update_handler);
|
||||
/* keyboard state */
|
||||
int m_keylatch;
|
||||
int m_keyclk;
|
||||
|
Loading…
Reference in New Issue
Block a user