aim65: add 16K PROM/ROM module, 4 extra sockets required for Instant Pascal

This commit is contained in:
Nigel Barnes 2017-02-15 11:17:58 +00:00
parent 080a944190
commit d17c5470d9
3 changed files with 47 additions and 7 deletions

View File

@ -36,7 +36,9 @@ Bugs
/* Note: RAM is mapped dynamically in machine/aim65.c */
static ADDRESS_MAP_START( aim65_mem, AS_PROGRAM, 8, aim65_state )
AM_RANGE( 0x1000, 0x9fff ) AM_NOP /* User available expansions */
AM_RANGE( 0x1000, 0x3fff ) AM_NOP /* User available expansions */
AM_RANGE( 0x4000, 0x7fff ) AM_ROM /* 4 ROM sockets in 16K PROM/ROM module */
AM_RANGE( 0x8000, 0x9fff ) AM_NOP /* User available expansions */
AM_RANGE( 0xa000, 0xa00f ) AM_MIRROR(0x3f0) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) // user via
AM_RANGE( 0xa400, 0xa47f ) AM_DEVICE("riot", mos6532_t, ram_map)
AM_RANGE( 0xa480, 0xa497 ) AM_DEVICE("riot", mos6532_t, io_map)
@ -151,7 +153,7 @@ image_init_result aim65_state::load_cart(device_image_interface &image, generic_
if (size > 0x1000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported ROM size");
return image_init_result::FAIL;
}
@ -176,7 +178,6 @@ static MACHINE_CONFIG_START( aim65, aim65_state )
MCFG_CPU_ADD("maincpu", M6502, AIM65_CLOCK) /* 1 MHz */
MCFG_CPU_PROGRAM_MAP(aim65_mem)
MCFG_DEFAULT_LAYOUT(layout_aim65)
/* alpha-numeric display */
@ -226,18 +227,35 @@ static MACHINE_CONFIG_START( aim65, aim65_state )
MCFG_CASSETTE_ADD( "cassette2" )
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_RECORD | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED)
MCFG_GENERIC_SOCKET_ADD("z26", generic_plain_slot, "aim65_cart")
MCFG_GENERIC_SOCKET_ADD("z26", generic_plain_slot, "aim65_z26_cart")
MCFG_GENERIC_EXTENSIONS("z26")
MCFG_GENERIC_LOAD(aim65_state, z26_load)
MCFG_GENERIC_SOCKET_ADD("z25", generic_plain_slot, "aim65_cart")
MCFG_GENERIC_SOCKET_ADD("z25", generic_plain_slot, "aim65_z25_cart")
MCFG_GENERIC_EXTENSIONS("z25")
MCFG_GENERIC_LOAD(aim65_state, z25_load)
MCFG_GENERIC_SOCKET_ADD("z24", generic_plain_slot, "aim65_cart")
MCFG_GENERIC_SOCKET_ADD("z24", generic_plain_slot, "aim65_z24_cart")
MCFG_GENERIC_EXTENSIONS("z24")
MCFG_GENERIC_LOAD(aim65_state, z24_load)
/* PROM/ROM module sockets */
MCFG_GENERIC_SOCKET_ADD("z12", generic_plain_slot, "rm65_z12_cart")
MCFG_GENERIC_EXTENSIONS("z12")
MCFG_GENERIC_LOAD(aim65_state, z12_load)
MCFG_GENERIC_SOCKET_ADD("z13", generic_plain_slot, "rm65_z13_cart")
MCFG_GENERIC_EXTENSIONS("z13")
MCFG_GENERIC_LOAD(aim65_state, z13_load)
MCFG_GENERIC_SOCKET_ADD("z14", generic_plain_slot, "rm65_z14_cart")
MCFG_GENERIC_EXTENSIONS("z14")
MCFG_GENERIC_LOAD(aim65_state, z14_load)
MCFG_GENERIC_SOCKET_ADD("z15", generic_plain_slot, "rm65_z15_cart")
MCFG_GENERIC_EXTENSIONS("z15")
MCFG_GENERIC_LOAD(aim65_state, z15_load)
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("4K")
@ -285,5 +303,5 @@ ROM_END
GAME DRIVERS
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP(1977, aim65, 0, 0, aim65, aim65, driver_device, 0, "Rockwell", "AIM 65", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )

View File

@ -43,6 +43,10 @@ public:
, m_z24(*this, "z24")
, m_z25(*this, "z25")
, m_z26(*this, "z26")
, m_z12(*this, "z12")
, m_z13(*this, "z13")
, m_z14(*this, "z14")
, m_z15(*this, "z15")
, m_ram(*this, RAM_TAG)
, m_ds(*this, "ds%u", 1)
{
@ -60,6 +64,10 @@ public:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z24_load) { return load_cart(image, m_z24, "z24"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z25_load) { return load_cart(image, m_z25, "z25"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z26_load) { return load_cart(image, m_z26, "z26"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z12_load) { return load_cart(image, m_z12, "z12"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z13_load) { return load_cart(image, m_z13, "z13"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z14_load) { return load_cart(image, m_z14, "z14"); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z15_load) { return load_cart(image, m_z15, "z15"); }
protected:
virtual void machine_start() override;
@ -75,6 +83,10 @@ protected:
required_device<generic_slot_device> m_z24;
required_device<generic_slot_device> m_z25;
required_device<generic_slot_device> m_z26;
required_device<generic_slot_device> m_z12;
required_device<generic_slot_device> m_z13;
required_device<generic_slot_device> m_z14;
required_device<generic_slot_device> m_z15;
required_device<ram_device> m_ram;
required_device_array<dl1416_device, 5> m_ds;
};

View File

@ -133,6 +133,16 @@ void aim65_state::machine_start()
if (m_z26->exists())
space.install_read_handler(0xb000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z26));
// Init PROM/ROM module sockets
if (m_z12->exists())
space.install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z12));
if (m_z13->exists())
space.install_read_handler(0x5000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z13));
if (m_z14->exists())
space.install_read_handler(0x6000, 0x6fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z14));
if (m_z15->exists())
space.install_read_handler(0x7000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z15));
// Init RAM
space.install_ram(0x0000, ram->size() - 1, ram->pointer());