diff options
Diffstat (limited to 'src/mame/drivers/mtx.cpp')
-rw-r--r-- | src/mame/drivers/mtx.cpp | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp index e322d4ab9c2..72b4d4f84b9 100644 --- a/src/mame/drivers/mtx.cpp +++ b/src/mame/drivers/mtx.cpp @@ -11,7 +11,8 @@ TODO: - cassette - - FDX floppy + - cartridges + - SDX/FDX floppy - HDX hard disk - HRX high resolution graphics - "Silicon" disks @@ -23,8 +24,14 @@ #include "includes/mtx.h" #include "bus/centronics/ctronics.h" +#include "cpu/z80/z80.h" +#include "machine/z80daisy.h" #include "imagedev/cassette.h" #include "imagedev/snapquik.h" +#include "machine/ram.h" +#include "machine/z80ctc.h" +#include "machine/z80dart.h" +#include "sound/sn76496.h" #include "video/tms9928a.h" #include "softlist.h" @@ -51,13 +58,13 @@ void mtx_state::mtx_io(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).rw(FUNC(mtx_state::mtx_strobe_r), FUNC(mtx_state::mtx_bankswitch_w)); - map(0x01, 0x01).rw("tms9929a", FUNC(tms9929a_device::vram_read), FUNC(tms9929a_device::vram_write)); - map(0x02, 0x02).rw("tms9929a", FUNC(tms9929a_device::register_read), FUNC(tms9929a_device::register_write)); + map(0x01, 0x01).rw("tms9929a", FUNC(tms9929a_device::vram_r), FUNC(tms9929a_device::vram_w)); + map(0x02, 0x02).rw("tms9929a", FUNC(tms9929a_device::register_r), FUNC(tms9929a_device::register_w)); map(0x03, 0x03).rw(FUNC(mtx_state::mtx_sound_strobe_r), FUNC(mtx_state::mtx_cst_w)); map(0x04, 0x04).r(FUNC(mtx_state::mtx_prt_r)).w("cent_data_out", FUNC(output_latch_device::bus_w)); map(0x05, 0x05).rw(FUNC(mtx_state::mtx_key_lo_r), FUNC(mtx_state::mtx_sense_w)); map(0x06, 0x06).rw(FUNC(mtx_state::mtx_key_hi_r), FUNC(mtx_state::mtx_sound_latch_w)); - // map(0x07, 0x07) PIO +// map(0x07, 0x07) PIO map(0x08, 0x0b).rw(m_z80ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); map(0x1f, 0x1f).w(FUNC(mtx_state::mtx_cst_motor_w)); map(0x30, 0x31).w(FUNC(mtx_state::hrx_address_w)); @@ -195,12 +202,6 @@ static INPUT_PORTS_START( mtx512 ) PORT_DIPSETTING(0x08, DEF_STR(Off) ) PORT_DIPSETTING(0x00, DEF_STR(On) ) PORT_BIT( 0xf3, IP_ACTIVE_LOW, IPT_UNUSED) - - PORT_START("keyboard_rom") - PORT_CONFNAME(0x03, 0x00, "Keyboard ROM") - PORT_CONFSETTING(0x00, "None") - PORT_CONFSETTING(0x01, "Denmark") - PORT_CONFSETTING(0x02, "Finland") INPUT_PORTS_END /*************************************************************************** @@ -242,7 +243,7 @@ WRITE_LINE_MEMBER(mtx_state::ctc_trg2_w) static const z80_daisy_config mtx_daisy_chain[] = { - { "z80ctc" }, + { Z80CTC_TAG }, { nullptr } }; @@ -252,8 +253,8 @@ static const z80_daisy_config mtx_daisy_chain[] = static const z80_daisy_config rs128_daisy_chain[] = { - { "z80ctc" }, - { "z80dart" }, + { Z80CTC_TAG }, + { Z80DART_TAG }, { nullptr } }; @@ -279,19 +280,22 @@ WRITE_LINE_MEMBER(mtx_state::mtx_tms9929a_interrupt) ***************************************************************************/ /*------------------------------------------------- - machine_config( mtx512 ) + MACHINE_CONFIG_START( mtx512 ) -------------------------------------------------*/ -void mtx_state::mtx512(machine_config &config) -{ +MACHINE_CONFIG_START(mtx_state::mtx512) + /* basic machine hardware */ - Z80(config, m_maincpu, 4_MHz_XTAL); + Z80(config, m_maincpu, XTAL(4'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &mtx_state::mtx_mem); m_maincpu->set_addrmap(AS_IO, &mtx_state::mtx_io); m_maincpu->set_daisy_config(mtx_daisy_chain); + MCFG_MACHINE_START_OVERRIDE(mtx_state,mtx512) + MCFG_MACHINE_RESET_OVERRIDE(mtx_state,mtx512) + /* video hardware */ - tms9929a_device &vdp(TMS9929A(config, "tms9929a", 10.6875_MHz_XTAL)); + tms9929a_device &vdp(TMS9929A(config, "tms9929a", XTAL(10'738'635))); vdp.set_screen("screen"); vdp.set_vram_size(0x4000); vdp.int_callback().set(FUNC(mtx_state::mtx_tms9929a_interrupt)); @@ -299,61 +303,50 @@ void mtx_state::mtx512(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - SN76489A(config, m_sn, 4_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.00); + MCFG_DEVICE_ADD(SN76489A_TAG, SN76489A, XTAL(4'000'000)) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ - Z80CTC(config, m_z80ctc, 4_MHz_XTAL); + Z80CTC(config, m_z80ctc, XTAL(4'000'000)); m_z80ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_z80ctc->zc_callback<1>().set(FUNC(mtx_state::ctc_trg1_w)); m_z80ctc->zc_callback<2>().set(FUNC(mtx_state::ctc_trg2_w)); - TIMER(config, "z80ctc_timer").configure_periodic(FUNC(mtx_state::ctc_tick), attotime::from_hz(4_MHz_XTAL/13)); - - CENTRONICS(config, m_centronics, centronics_devices, "printer"); - m_centronics->busy_handler().set(FUNC(mtx_state::write_centronics_busy)); - m_centronics->fault_handler().set(FUNC(mtx_state::write_centronics_fault)); - m_centronics->perror_handler().set(FUNC(mtx_state::write_centronics_perror)); - m_centronics->select_handler().set(FUNC(mtx_state::write_centronics_select)); + MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_timer", mtx_state, ctc_tick, attotime::from_hz(XTAL(4'000'000)/13)) - output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); - m_centronics->set_output_latch(cent_data_out); + MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") + MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, mtx_state, write_centronics_busy)) + MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, mtx_state, write_centronics_fault)) + MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, mtx_state, write_centronics_perror)) + MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, mtx_state, write_centronics_select)) - snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot")); - snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(mtx_state, mtx), this), "mtx", attotime::from_seconds(1)); - quickload_image_device &quickload(QUICKLOAD(config, "quickload")); - quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(mtx_state, mtx), this), "run", attotime::from_seconds(1)); + MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - CASSETTE(config, m_cassette); - m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED); - m_cassette->set_interface("mtx_cass"); + MCFG_SNAPSHOT_ADD("snapshot", mtx_state, mtx, "mtx", 1) + MCFG_CASSETTE_ADD("cassette") + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) + MCFG_CASSETTE_INTERFACE("mtx_cass") - TIMER(config, "cassette_timer").configure_periodic(FUNC(mtx_state::cassette_tick), attotime::from_hz(44100)); + MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", mtx_state, cassette_tick, attotime::from_hz(44100)) /* internal ram */ RAM(config, m_ram).set_default_size("64K").set_extra_options("96K,128K,192K,320K,448K,512K"); /* rom extension board */ - GENERIC_SOCKET(config, m_extrom, generic_plain_slot, "mtx_rom", "bin,rom"); - m_extrom->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_extrom_load, this)); - - /* rs232 board with disk drive bus */ - MTX_EXP_SLOT(config, m_exp, mtx_expansion_devices, nullptr); - m_exp->set_program_space(m_maincpu, AS_PROGRAM); - m_exp->set_io_space(m_maincpu, AS_IO); - m_exp->int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); - m_exp->busreq_handler().set_inputline(m_maincpu, Z80_INPUT_LINE_BUSRQ); + MCFG_GENERIC_SOCKET_ADD("extrom", generic_plain_slot, "mtx_rom") + MCFG_GENERIC_EXTENSIONS("bin,rom") + MCFG_GENERIC_LOAD(mtx_state, extrom_load) /* cartridge slot */ - GENERIC_CARTSLOT(config, m_rompak, generic_plain_slot, "mtx_cart", "bin,rom"); - m_rompak->set_device_load(device_image_load_delegate(&mtx_state::device_image_load_rompak_load, this)); + MCFG_GENERIC_SOCKET_ADD("rompak", generic_plain_slot, "mtx_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") + MCFG_GENERIC_LOAD(mtx_state, rompak_load) /* software lists */ - SOFTWARE_LIST(config, "cass_list").set_original("mtx_cass"); - SOFTWARE_LIST(config, "flop_list").set_original("mtx_flop"); - SOFTWARE_LIST(config, "cart_list").set_original("mtx_cart"); - SOFTWARE_LIST(config, "rom_list").set_original("mtx_rom"); -} + MCFG_SOFTWARE_LIST_ADD("cass_list", "mtx_cass") + MCFG_SOFTWARE_LIST_ADD("cart_list", "mtx_cart") + MCFG_SOFTWARE_LIST_ADD("rom_list", "mtx_rom") +MACHINE_CONFIG_END void mtx_state::mtx500(machine_config &config) { @@ -364,7 +357,7 @@ void mtx_state::mtx500(machine_config &config) } /*------------------------------------------------- - machine_config( rs128 ) + MACHINE_CONFIG_START( rs128 ) -------------------------------------------------*/ void mtx_state::rs128(machine_config &config) @@ -376,7 +369,7 @@ void mtx_state::rs128(machine_config &config) m_maincpu->set_daisy_config(rs128_daisy_chain); /* devices */ - Z80DART(config, m_z80dart, 4_MHz_XTAL); + Z80DART(config, m_z80dart, XTAL(4'000'000)); m_z80dart->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); /* internal ram */ @@ -389,23 +382,30 @@ void mtx_state::rs128(machine_config &config) ROM_START( mtx512 ) ROM_REGION( 0x02000, "user1", 0 ) - ROM_SYSTEM_BIOS( 0, "uk", "UK" ) - ROMX_LOAD( "mtx1a.9h", 0x0000, 0x2000, CRC(9ca858cc) SHA1(3804503a58f0bcdea96bb6488833782ebd03976d), ROM_BIOS(0) ) /* OS */ - ROM_SYSTEM_BIOS( 1, "de", "German" ) - ROMX_LOAD( "mtx2a.9h", 0x0000, 0x2000, CRC(1c7bbe98) SHA1(8c950051b830e5e0c41072d6bd893151acd3839d), ROM_BIOS(1) ) /* OS */ + ROM_LOAD( "osrom", 0x0000, 0x2000, CRC(9ca858cc) SHA1(3804503a58f0bcdea96bb6488833782ebd03976d) ) ROM_REGION( 0x10000, "user2", ROMREGION_ERASEFF ) - ROMX_LOAD( "mtx1b.8h", 0x0000, 0x2000, CRC(87b4e59c) SHA1(c49782a82a7f068c1195cd967882ba9edd546eaf), ROM_BIOS(0) ) /* BASIC */ - ROMX_LOAD( "mtx1c.10h", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f), ROM_BIOS(0) ) /* ASSEM */ - ROMX_LOAD( "mtx2b.8h", 0x0000, 0x2000, CRC(599d5b6b) SHA1(3ec1f7f476a21ca3206012ded22198c020b47f7d), ROM_BIOS(1) ) /* BASIC */ - ROMX_LOAD( "mtx1c.10h", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f), ROM_BIOS(1) ) /* ASSEM */ + ROM_LOAD( "basicrom", 0x0000, 0x2000, CRC(87b4e59c) SHA1(c49782a82a7f068c1195cd967882ba9edd546eaf) ) + ROM_LOAD( "assemrom", 0x2000, 0x2000, CRC(9d7538c3) SHA1(d1882c4ea61a68b1715bd634ded5603e18a99c5f) ) - /* Keyboard PROMs (N82S181N) are piggy-backed on top of the OS ROM, wired to be selected as ROM 7 */ + /* Keyboard ROMs are piggy-backed on top of the OS ROM, wired to be selected as ROM 7 */ /* Country character sets documented in the Operators Manual are: U.S.A, France, Germany, England, Denmark, Sweden, Italy, Spain */ - ROM_REGION( 0x4000, "keyboard_rom", 0 ) - ROM_LOAD( "danish.rom", 0x0000, 0x2000, CRC(9c1b3fae) SHA1(82bc021660d88eebcf0c4d3856558ee9acc1c348) ) - ROM_LOAD( "finnish.rom", 0x2000, 0x2000, CRC(9b96cf72) SHA1(b46d1a733e0e635ccdaf4752cc370d793c3b5c55) ) + ROM_DEFAULT_BIOS("us") + ROM_SYSTEM_BIOS( 0, "us", "U.S.A." ) + ROM_SYSTEM_BIOS( 1, "dk", "Denmark" ) + ROMX_LOAD( "danish.rom", 0xe000, 0x2000, CRC(9c1b3fae) SHA1(82bc021660d88eebcf0c4d3856558ee9acc1c348), ROM_BIOS(1) ) + ROM_SYSTEM_BIOS( 2, "fi", "Finland" ) + ROMX_LOAD( "finnish.rom", 0xe000, 0x2000, CRC(9b96cf72) SHA1(b46d1a733e0e635ccdaf4752cc370d793c3b5c55), ROM_BIOS(2) ) + + ROM_REGION( 0x2000, "sdx", 0 ) + ROM_LOAD( "sdx", 0x0000, 0x2000, NO_DUMP ) + + ROM_REGION( 0x2000, "mtx", 0 ) + ROM_LOAD( "sm2 fdcx1 v03", 0x0000, 0x2000, NO_DUMP ) + + ROM_REGION( 0x1000, MC6845_TAG, 0 ) + ROM_LOAD( "80z.bin", 0x0000, 0x1000, CRC(ea6fe865) SHA1(f84883f79bed34501e5828336894fad929bddbb5) ) /* Device GAL16V8 converted from PAL14L4 JEDEC map */ ROM_REGION( 0x117, "plds", 0 ) |