From d17c5470d930cc2ae0a9182d55f9d3f3b1a280f7 Mon Sep 17 00:00:00 2001 From: Nigel Barnes Date: Wed, 15 Feb 2017 11:17:58 +0000 Subject: [PATCH] aim65: add 16K PROM/ROM module, 4 extra sockets required for Instant Pascal --- src/mame/drivers/aim65.cpp | 32 +++++++++++++++++++++++++------- src/mame/includes/aim65.h | 12 ++++++++++++ src/mame/machine/aim65.cpp | 10 ++++++++++ 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp index 6d8d61d3ab2..49acc045602 100644 --- a/src/mame/drivers/aim65.cpp +++ b/src/mame/drivers/aim65.cpp @@ -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 ) diff --git a/src/mame/includes/aim65.h b/src/mame/includes/aim65.h index 2775e2130a3..1782c6fef28 100644 --- a/src/mame/includes/aim65.h +++ b/src/mame/includes/aim65.h @@ -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 m_z24; required_device m_z25; required_device m_z26; + required_device m_z12; + required_device m_z13; + required_device m_z14; + required_device m_z15; required_device m_ram; required_device_array m_ds; }; diff --git a/src/mame/machine/aim65.cpp b/src/mame/machine/aim65.cpp index d68e7663250..ff87da77764 100644 --- a/src/mame/machine/aim65.cpp +++ b/src/mame/machine/aim65.cpp @@ -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());