sage2: Remove direct update handler [O. Galibert]

This commit is contained in:
Olivier Galibert 2017-03-03 11:09:02 +01:00
parent d76b79dfd3
commit 8459d2b2ae
2 changed files with 21 additions and 66 deletions

View File

@ -28,45 +28,6 @@
#include "bus/rs232/rs232.h"
#include "softlist.h"
//**************************************************************************
// MEMORY MANAGEMENT UNIT
//**************************************************************************
//-------------------------------------------------
// read -
//-------------------------------------------------
READ8_MEMBER( sage2_state::read )
{
uint8_t data = 0xff;
if (m_reset || (offset >= 0xfe0000 && offset < 0xff4000))
{
data = m_rom[offset & 0x1fff];
}
else if (offset < 0x080000)
{
data = m_ram->pointer()[offset];
}
return data;
}
//-------------------------------------------------
// write -
//-------------------------------------------------
WRITE8_MEMBER( sage2_state::write )
{
if (offset < 0x080000)
{
m_ram->pointer()[offset] = data;
}
}
//**************************************************************************
// ADDRESS MAPS
//**************************************************************************
@ -77,7 +38,6 @@ WRITE8_MEMBER( sage2_state::write )
static ADDRESS_MAP_START( sage2_mem, AS_PROGRAM, 16, sage2_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0xfeffff) AM_READWRITE8(read, write, 0xffff)
AM_RANGE(0xffc000, 0xffc007) AM_DEVREADWRITE8(I8253_1_TAG, pit8253_device, read, write, 0x00ff)
AM_RANGE(0xffc010, 0xffc01f) AM_NOP //AM_DEVREADWRITE8(TMS9914_TAG, tms9914_device, read, write, 0x00ff)
AM_RANGE(0xffc020, 0xffc027) AM_DEVREADWRITE8(I8255A_0_TAG, i8255_device, read, write, 0x00ff) // i8255, DIPs + Floppy ctrl port
@ -417,17 +377,27 @@ DEVICE_INPUT_DEFAULTS_END
void sage2_state::machine_start()
{
// find memory regions
m_rom = memregion(M68000_TAG)->base();
address_space &program = m_maincpu->space(AS_PROGRAM);
program.install_rom(0x000000, 0x001fff, 0x07e000, m_rom->base()); // Avoid the 68000 reading from lalaland in its reset handler
}
void sage2_state::machine_reset()
{
m_reset = 1;
address_space &program = m_maincpu->space(AS_PROGRAM);
program.unmap_readwrite(0x000000, 0x07ffff);
program.install_rom(0x000000, 0x001fff, 0x07e000, m_rom->base());
program.install_read_handler(0xfe0000, 0xfe3fff, read16_delegate(FUNC(sage2_state::rom_r), this));
m_maincpu->reset();
}
READ16_MEMBER(sage2_state::rom_r)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
program.unmap_readwrite(0x000000, 0x07ffff);
program.install_ram(0, m_ram->size()-1, m_ram->pointer());
program.install_rom(0xfe0000, 0xfe1fff, 0x002000, m_rom->base());
return program.read_word(0xfe0000 | (offset*2));
}
//**************************************************************************
// MACHINE DRIVERS
@ -530,9 +500,9 @@ MACHINE_CONFIG_END
//-------------------------------------------------
ROM_START( sage2 )
ROM_REGION( 0x2000, M68000_TAG, 0 )
ROM_LOAD16_BYTE( "sage2.u18", 0x0000, 0x1000, CRC(ca9b312d) SHA1(99436a6d166aa5280c3b2d28355c4d20528fe48c) )
ROM_LOAD16_BYTE( "sage2.u17", 0x0001, 0x1000, CRC(27e25045) SHA1(041cd9d4617473d089f31f18cbb375046c3b61bb) )
ROM_REGION16_BE( 0x2000, M68000_TAG, 0 )
ROM_LOAD16_BYTE( "sage2.u18", 0x0001, 0x1000, CRC(ca9b312d) SHA1(99436a6d166aa5280c3b2d28355c4d20528fe48c) )
ROM_LOAD16_BYTE( "sage2.u17", 0x0000, 0x1000, CRC(27e25045) SHA1(041cd9d4617473d089f31f18cbb375046c3b61bb) )
ROM_END
@ -545,20 +515,8 @@ ROM_END
// DRIVER_INIT( sage2 )
//-------------------------------------------------
DIRECT_UPDATE_MEMBER(sage2_state::sage2_direct_update_handler)
{
if (m_reset && address >= 0xfe0000)
{
m_reset = 0;
}
return address;
}
DRIVER_INIT_MEMBER(sage2_state,sage2)
{
address_space &program = machine().device<cpu_device>(M68000_TAG)->space(AS_PROGRAM);
program.set_direct_update_handler(direct_update_delegate(&sage2_state::sage2_direct_update_handler, this));
}

View File

@ -36,12 +36,12 @@ public:
m_usart1(*this, I8251_1_TAG),
m_fdc(*this, UPD765_TAG),
m_ram(*this, RAM_TAG),
m_rom(*this, M68000_TAG),
m_floppy0(*this, UPD765_TAG ":0"),
m_floppy1(*this, UPD765_TAG ":1"),
m_floppy(nullptr),
m_centronics(*this, CENTRONICS_TAG),
m_ieee488(*this, IEEE488_TAG),
m_reset(1),
m_fdc_int(0),
m_fdie(0)
{ }
@ -52,6 +52,7 @@ public:
required_device<i8251_device> m_usart1;
required_device<upd765a_device> m_fdc;
required_device<ram_device> m_ram;
required_memory_region m_rom;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
floppy_image_device *m_floppy;
@ -63,8 +64,7 @@ public:
void update_fdc_int();
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
DECLARE_READ16_MEMBER(rom_r);
DECLARE_WRITE_LINE_MEMBER( br1_w );
DECLARE_WRITE_LINE_MEMBER( br2_w );
DECLARE_WRITE8_MEMBER( ppi0_pc_w );
@ -75,9 +75,6 @@ public:
DECLARE_WRITE_LINE_MEMBER( fdc_irq );
const uint8_t *m_rom;
int m_reset;
// floppy state
int m_fdc_int;
int m_fdie;