From 2bbbff6146a83b238569f906c393e43073fe32be Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 14 Jun 2022 13:35:03 +0300 Subject: x37: Populate devices. [Curt Coder] --- hash/x37_flop.xml | 1 - src/mame/drivers/ds90.cpp | 120 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 111 insertions(+), 10 deletions(-) diff --git a/hash/x37_flop.xml b/hash/x37_flop.xml index 2bc2c592fe8..6a764eb308f 100644 --- a/hash/x37_flop.xml +++ b/hash/x37_flop.xml @@ -156,7 +156,6 @@ license:CC0 - diff --git a/src/mame/drivers/ds90.cpp b/src/mame/drivers/ds90.cpp index df22f89892f..5fdcfa4be97 100644 --- a/src/mame/drivers/ds90.cpp +++ b/src/mame/drivers/ds90.cpp @@ -11,21 +11,72 @@ #include "emu.h" #include "softlist_dev.h" +#include "bus/nscsi/devices.h" #include "cpu/m68000/m68000.h" +#include "formats/abc1600_dsk.h" +#include "imagedev/floppy.h" +#include "machine/e0516.h" +#include "machine/hd63450.h" +#include "machine/nmc9306.h" +#include "machine/ns32081.h" +#include "machine/nscsi_bus.h" +#include "machine/nscsi_cb.h" +#include "machine/wd_fdc.h" +#include "machine/z80scc.h" +#include "machine/z8536.h" #include "video/abc1600.h" +#define MC68010_TAG "14m" +#define NS32081_TAG "06o" +#define MC68450_TAG "11m" +#define Z8536A_TAG "06l" +#define NMC9306_TAG "05k" +#define E050_16_TAG "03j" +#define Z8530A_0_TAG "16m" +#define Z8530A_1_TAG "16h" +#define Z8530A_2_TAG "16o" +#define FD1797_TAG "15g" + class x37_state : public driver_device { public: x37_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + m_cpu(*this, MC68010_TAG), + m_fpu(*this, NS32081_TAG), + m_dmac(*this, MC68450_TAG), + m_cio(*this, Z8536A_TAG), + m_nvram(*this, NMC9306_TAG), + m_scc0(*this, Z8530A_0_TAG), + m_scc1(*this, Z8530A_1_TAG), + m_scc2(*this, Z8530A_2_TAG), + m_fdc(*this, FD1797_TAG), + m_floppy0(*this, FD1797_TAG":0"), + m_floppy1(*this, FD1797_TAG":1"), + m_floppy2(*this, FD1797_TAG":2"), + m_sasi(*this, "sasi:7:scsicb") { } void x37(machine_config &config); private: - required_device m_maincpu; + required_device m_cpu; + required_device m_fpu; + required_device m_dmac; + required_device m_cio; + required_device m_nvram; + required_device m_scc0; + required_device m_scc1; + required_device m_scc2; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_sasi; + + virtual void machine_reset() override; + + static void floppy_formats(format_registration &fr); void program_map(address_map &map); void cpu_space_map(address_map &map); @@ -33,23 +84,62 @@ private: void x37_state::program_map(address_map &map) { - map(0x000000, 0x007fff).rom().region("maincpu", 0); + map(0x000000, 0x007fff).rom().region(MC68010_TAG, 0); } void x37_state::cpu_space_map(address_map &map) { - map(0xffff0, 0xfffff).m(m_maincpu, FUNC(m68010_device::autovectors_map)); + map(0xffff0, 0xfffff).m(m_cpu, FUNC(m68010_device::autovectors_map)); } static INPUT_PORTS_START( x37 ) INPUT_PORTS_END +void x37_state::machine_reset() +{ + m_fpu->reset(); +} + +static void x37_floppies(device_slot_interface &device) +{ + device.option_add("525qd", FLOPPY_525_QD); +} + +void x37_state::floppy_formats(format_registration &fr) +{ + fr.add_mfm_containers(); + fr.add(FLOPPY_ABC1600_FORMAT); +} + void x37_state::x37(machine_config &config) { // basic machine hardware - M68010(config, m_maincpu, 10000000); - m_maincpu->set_addrmap(AS_PROGRAM, &x37_state::program_map); - m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &x37_state::cpu_space_map); + M68010(config, m_cpu, 20'000'000/2); + m_cpu->set_addrmap(AS_PROGRAM, &x37_state::program_map); + m_cpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &x37_state::cpu_space_map); + + NS32081(config, m_fpu, 20'000'000/2); + + HD63450(config, m_dmac, 20'000'000/2, m_cpu); + + Z8536(config, m_cio, 6000000); + NMC9306(config, m_nvram, 0); + E0516(config, E050_16_TAG, 32'768); + + SCC8530N(config, m_scc0, 6000000); + SCC8530N(config, m_scc1, 6000000); + SCC8530N(config, m_scc2, 6000000); + + FD1797(config, m_fdc, 16'000'000/16); + + FLOPPY_CONNECTOR(config, FD1797_TAG":0", x37_floppies, nullptr, x37_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, FD1797_TAG":1", x37_floppies, nullptr, x37_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, FD1797_TAG":2", x37_floppies, "525qd", x37_state::floppy_formats).enable_sound(true); + + NSCSI_BUS(config, "sasi"); + NSCSI_CONNECTOR(config, "sasi:0", default_scsi_devices, "s1410"); + NSCSI_CONNECTOR(config, "sasi:7", default_scsi_devices, "scsicb", true) + .option_add_internal("scsicb", NSCSI_CB); // video hardware ABC1600_MOVER(config, ABC1600_MOVER_TAG, 0); @@ -59,8 +149,20 @@ void x37_state::x37(machine_config &config) } ROM_START( x37 ) - ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "x37.rom", 0x0000, 0x8000, CRC(d505e7e7) SHA1(a3ad839e47b1f71c394e5ce28bce199e5e4810d2) ) + ROM_REGION( 0x8000, MC68010_TAG, 0 ) + ROM_LOAD( "x37.07o", 0x0000, 0x8000, CRC(d505e7e7) SHA1(a3ad839e47b1f71c394e5ce28bce199e5e4810d2) ) + + ROM_REGION( 0x104, "plds", 0 ) + ROM_LOAD( "pat8003.12l", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8031.05h", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8032.07h", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8033.06h", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8034.12g", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8035.05g", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8036.07g", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8037.10k", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8038.04n", 0x000, 0x104, NO_DUMP ) + ROM_LOAD( "pat8039.12h", 0x000, 0x104, NO_DUMP ) ROM_END COMP( 1985, x37, 0, 0, x37, x37, x37_state, empty_init, "Luxor", "X37 (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -- cgit v1.2.3