summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Nigel Barnes <Pernod70@users.noreply.github.com>2018-09-11 22:48:26 +0100
committer Nigel Barnes <Pernod70@users.noreply.github.com>2018-09-11 22:50:30 +0100
commit813c5ff2f4d07de9f53ce233bb7327716f379e75 (patch)
tree84690de7a368803e7f9adf401764c1ea9a985b3a
parent18fccbde68315b62e2a722b140d298b274348030 (diff)
New working clones
------------------ Acorn Electron (Trial) [Centre for Computing History, ABUG]
-rw-r--r--src/mame/drivers/electron.cpp69
-rw-r--r--src/mame/mame.lst1
2 files changed, 41 insertions, 29 deletions
diff --git a/src/mame/drivers/electron.cpp b/src/mame/drivers/electron.cpp
index 478e46b954c..be07cc1b85e 100644
--- a/src/mame/drivers/electron.cpp
+++ b/src/mame/drivers/electron.cpp
@@ -113,7 +113,6 @@ INPUT_CHANGED_MEMBER(electron_state::trigger_reset)
}
static INPUT_PORTS_START( electron )
-
PORT_START("LINE.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\xE2\x86\x92 | \\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR('|') PORT_CHAR('\\') // on the real keyboard, this would be on the 1st row, the 3rd key after 0
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("COPY") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHAR('[') PORT_CHAR(']')
@@ -213,29 +212,29 @@ static INPUT_PORTS_START( electron64 )
INPUT_PORTS_END
MACHINE_CONFIG_START(electron_state::electron)
- MCFG_DEVICE_ADD( "maincpu", M6502, 16_MHz_XTAL/8 )
- MCFG_DEVICE_PROGRAM_MAP( electron_mem )
+ M6502(config, m_maincpu, 16_MHz_XTAL / 8);
+ m_maincpu->set_addrmap(AS_PROGRAM, &electron_state::electron_mem);
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(16_MHz_XTAL, 1024, 0, 640, 312, 0, 256)
- //MCFG_SCREEN_RAW_PARAMS(16_MHz_XTAL, 1024, 264, 264 + 640, 312, 31, 31 + 256)
- MCFG_SCREEN_UPDATE_DRIVER(electron_state, screen_update_electron)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(16_MHz_XTAL, 1024, 0, 640, 312, 0, 256);
+ //m_screen->set_raw(16_MHz_XTAL, 1024, 264, 264 + 640, 312, 31, 31 + 256)
+ m_screen->set_screen_update(FUNC(electron_state::screen_update_electron));
+ m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
+ m_screen->set_palette("palette");
- MCFG_PALETTE_ADD( "palette", 16 )
- MCFG_PALETTE_INIT_OWNER(electron_state, electron)
+ palette_device &palette(PALETTE(config, "palette", 16));
+ palette.set_init(palette_init_delegate(FUNC(electron_state::palette_init_electron), this));
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD( "beeper", BEEP, 300 )
- MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
+ BEEP(config, m_beeper, 300);
+ m_beeper->add_route(ALL_OUTPUTS, "mono", 1.00);
RAM(config, m_ram).set_default_size("32K");
- MCFG_CASSETTE_ADD( "cassette" )
- MCFG_CASSETTE_FORMATS(bbc_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED)
- MCFG_CASSETTE_INTERFACE("electron_cass")
+ CASSETTE(config, m_cassette);
+ m_cassette->set_formats(bbc_cassette_formats);
+ m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED);
+ m_cassette->set_interface("electron_cass");
/* expansion port */
MCFG_ELECTRON_EXPANSION_SLOT_ADD("exp", electron_expansion_devices, "plus3", false)
@@ -243,36 +242,39 @@ MACHINE_CONFIG_START(electron_state::electron)
MCFG_ELECTRON_EXPANSION_SLOT_NMI_HANDLER(INPUTLINE("maincpu", M6502_NMI_LINE))
/* software lists */
- MCFG_SOFTWARE_LIST_ADD("cass_list", "electron_cass")
- MCFG_SOFTWARE_LIST_ADD("cart_list", "electron_cart")
- MCFG_SOFTWARE_LIST_ADD("flop_list", "electron_flop")
- MCFG_SOFTWARE_LIST_ADD("rom_list", "electron_rom")
+ SOFTWARE_LIST(config, "cass_list").set_original("electron_cass");
+ SOFTWARE_LIST(config, "cart_list").set_original("electron_cart");
+ SOFTWARE_LIST(config, "flop_list").set_original("electron_flop");
+ SOFTWARE_LIST(config, "rom_list").set_original("electron_rom");
MACHINE_CONFIG_END
MACHINE_CONFIG_START(electron_state::btm2105)
electron(config);
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_COLOR(rgb_t::amber())
+
+ m_screen->set_color(rgb_t::amber());
/* expansion port */
MCFG_DEVICE_MODIFY("exp")
MCFG_DEVICE_SLOT_INTERFACE(electron_expansion_devices, "m2105", true)
/* software lists */
- MCFG_SOFTWARE_LIST_REMOVE("cass_list")
+ config.device_remove("cass_list");
+ config.device_remove("cart_list");
+ config.device_remove("flop_list");
+ config.device_remove("rom_list");
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(electron_state::electron64)
+void electron_state::electron64(machine_config &config)
+{
electron(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(electron_mem)
- MCFG_DEVICE_OPCODES_MAP(electron64_opcodes)
+ m_maincpu->set_addrmap(AS_PROGRAM, &electron_state::electron_mem);
+ m_maincpu->set_addrmap(AS_OPCODES, &electron_state::electron64_opcodes);
m_ram->set_default_size("64K");
-MACHINE_CONFIG_END
+}
/* Electron Rom Load */
@@ -283,6 +285,14 @@ ROM_START(electron)
ROM_LOAD( "basic.rom", 0x0000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281) )
ROM_END
+ROM_START(electront)
+ ROM_REGION( 0x4000, "mos", 0 )
+ /* Serial 06-ALA01-0000087 from Centre for Computing History */
+ ROM_LOAD( "elk_036.rom", 0x0000, 0x4000, CRC(dd1a99c3) SHA1(87ee1b14895e476909dd002d5ca2346a3a5f3f57) )
+ ROM_REGION( 0x4000, "basic", 0 )
+ ROM_LOAD( "basic.rom", 0x0000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281) )
+ROM_END
+
ROM_START(electron64)
ROM_REGION( 0x4000, "mos", 0 )
ROM_LOAD( "os_300.rom", 0x0000, 0x4000, CRC(f80a0cea) SHA1(165e42ff4164a842e56f08ebd420d5027af99fdd) )
@@ -295,5 +305,6 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP ( 1983, electron, 0, 0, electron, electron, electron_state, empty_init, "Acorn", "Acorn Electron", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+COMP ( 1983, electront, electron, 0, electron, electron, electron_state, empty_init, "Acorn", "Acorn Electron (Trial)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
COMP ( 1985, btm2105, electron, 0, btm2105, electron, electron_state, empty_init, "British Telecom Business Systems", "BT Merlin M2105", MACHINE_NOT_WORKING )
COMP ( 1987, electron64, electron, 0, electron64, electron64, electron_state, empty_init, "Acorn/Slogger", "Acorn Electron (64K Master RAM Board)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 2d87ba63abb..18deffef5d0 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -12301,6 +12301,7 @@ avenger // (c) 1975 Electra
@source:electron.cpp
electron // 1983 Acorn Electron
+electront // 1983 Acorn Electron (Trial)
btm2105 // 1985 BT Merlin M2105
electron64 // 1987 Acorn Electron (64K Master RAM Board)