diff options
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 |
commit | 813c5ff2f4d07de9f53ce233bb7327716f379e75 (patch) | |
tree | 84690de7a368803e7f9adf401764c1ea9a985b3a | |
parent | 18fccbde68315b62e2a722b140d298b274348030 (diff) |
New working clones
------------------
Acorn Electron (Trial) [Centre for Computing History, ABUG]
-rw-r--r-- | src/mame/drivers/electron.cpp | 69 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
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) |