Nascom: Add support for the CP/M version of the Nascom 2

This commit is contained in:
Dirk Best 2015-05-20 15:59:45 +02:00
parent a877bb053b
commit c3f47033c5
2 changed files with 77 additions and 3 deletions

View File

@ -1583,6 +1583,7 @@ fsa1st
// NASCOM Microcomputers
nascom1 // 1978 Nascom 1
nascom2 // 1979 Nascom 2
nascom2c // 1980 Nascom 2 (CP/M)
// Miles Gordon Technology
samcoupe // 1989 Sam Coupe

View File

@ -111,8 +111,10 @@ public:
{}
DECLARE_WRITE_LINE_MEMBER(ram_disable_w);
DECLARE_WRITE_LINE_MEMBER(ram_disable_cpm_w);
virtual DECLARE_DRIVER_INIT(nascom);
virtual DECLARE_DRIVER_INIT(nascomc);
UINT32 screen_update_nascom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
int load_cart(device_image_interface &image, generic_slot_device *slot, int slot_id);
@ -369,6 +371,25 @@ WRITE_LINE_MEMBER( nascom2_state::ram_disable_w )
}
}
DRIVER_INIT_MEMBER( nascom2_state, nascomc )
{
// install memory
m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0000 + m_ram->size() - 1, m_ram->pointer());
// setup nasbus
m_nasbus->set_program_space(&m_maincpu->space(AS_PROGRAM));
m_nasbus->set_io_space(&m_maincpu->space(AS_IO));
}
WRITE_LINE_MEMBER( nascom2_state::ram_disable_cpm_w )
{
if (state)
{
// enable ram again
m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0000 + m_ram->size() - 1, m_ram->pointer());
}
}
//**************************************************************************
// VIDEO
@ -468,6 +489,12 @@ static ADDRESS_MAP_START( nascom2_io, AS_IO, 8, nascom2_state )
AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("z80pio", z80pio_device, read, write )
ADDRESS_MAP_END
static ADDRESS_MAP_START( nascom2c_mem, AS_PROGRAM, 8, nascom2_state )
AM_RANGE(0xf000, 0xf7ff) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE(0xf800, 0xfbff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0xfc00, 0xffff) AM_RAM // WRAM
ADDRESS_MAP_END
//**************************************************************************
// INPUT PORTS
@ -584,6 +611,30 @@ static INPUT_PORTS_START( nascom2 )
PORT_DIPSETTING(0x0f, "F000H")
INPUT_PORTS_END
static INPUT_PORTS_START( nascom2c )
PORT_INCLUDE(nascom2)
PORT_MODIFY("lsw1")
PORT_DIPNAME(0x0f, 0x0f, "Restart address")
PORT_DIPLOCATION("LSW1:2,3,4,5")
PORT_DIPSETTING(0x00, "0000H")
PORT_DIPSETTING(0x01, "1000H")
PORT_DIPSETTING(0x02, "2000H")
PORT_DIPSETTING(0x03, "3000H")
PORT_DIPSETTING(0x04, "4000H")
PORT_DIPSETTING(0x05, "5000H")
PORT_DIPSETTING(0x06, "6000H")
PORT_DIPSETTING(0x07, "7000H")
PORT_DIPSETTING(0x08, "8000H")
PORT_DIPSETTING(0x09, "9000H")
PORT_DIPSETTING(0x0a, "A000H")
PORT_DIPSETTING(0x0b, "B000H")
PORT_DIPSETTING(0x0c, "C000H")
PORT_DIPSETTING(0x0d, "D000H")
PORT_DIPSETTING(0x0e, "E000H")
PORT_DIPSETTING(0x0f, "F000H")
INPUT_PORTS_END
//**************************************************************************
// MACHINE DRIVERS
@ -661,6 +712,18 @@ static MACHINE_CONFIG_DERIVED_CLASS( nascom2, nascom1, nascom2_state )
MCFG_NASBUS_SLOT_ADD("nasbus4", nasbus_slot_cards, NULL)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( nascom2c, nascom2, nascom2_state )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(nascom2c_mem)
MCFG_DEVICE_REMOVE(RAM_TAG)
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("60K")
MCFG_DEVICE_MODIFY(NASBUS_TAG)
MCFG_NASBUS_RAM_DISABLE_HANDLER(WRITELINE(nascom2_state, ram_disable_cpm_w))
MACHINE_CONFIG_END
//**************************************************************************
// ROM DEFINITIONS
@ -694,11 +757,21 @@ ROM_START( nascom2 )
ROM_LOAD("nasgra.chr", 0x0800, 0x0800, CRC(2bc09d32) SHA1(d384297e9b02cbcb283c020da51b3032ff62b1ae))
ROM_END
ROM_START( nascom2c )
ROM_REGION(0x0800, "maincpu", 0)
ROM_LOAD("cpmboot.rom", 0x0000, 0x0800, CRC(44b67ffc) SHA1(60c8335f24798f8de7ad48a4cd03e56a60d87b63))
ROM_REGION(0x1000, "gfx1", 0)
ROM_LOAD("nascom1.chr", 0x0000, 0x0800, CRC(33e92a04) SHA1(be6e1cc80e7f95a032759f7df19a43c27ff93a52))
ROM_LOAD("nasgra.chr", 0x0800, 0x0800, CRC(2bc09d32) SHA1(d384297e9b02cbcb283c020da51b3032ff62b1ae))
ROM_END
//**************************************************************************
// GAME DRIVERS
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1977, nascom1, 0, 0, nascom1, nascom1, nascom_state, nascom, "Nascom Microcomputers", "Nascom 1", GAME_NO_SOUND_HW )
COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, nascom, "Nascom Microcomputers", "Nascom 2", GAME_NO_SOUND_HW )
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1977, nascom1, 0, 0, nascom1, nascom1, nascom_state, nascom, "Nascom Microcomputers", "Nascom 1", GAME_NO_SOUND_HW )
COMP( 1979, nascom2, 0, 0, nascom2, nascom2, nascom2_state, nascom, "Nascom Microcomputers", "Nascom 2", GAME_NO_SOUND_HW )
COMP( 1980, nascom2c, nascom2, 0, nascom2c, nascom2c, nascom2_state, nascomc, "Nascom Microcomputers", "Nascom 2 (CP/M)", GAME_NO_SOUND_HW )