x37: Populate devices. [Curt Coder]

This commit is contained in:
Curt Coder 2022-06-14 13:35:03 +03:00
parent e76d23fc73
commit 2bbbff6146
2 changed files with 111 additions and 10 deletions

View File

@ -156,7 +156,6 @@ license:CC0
<rom name="etc_bin_x37_OBS_PC_FORMAT.img" size="737280" crc="0336a022" sha1="57776a18bb868961248945036ff1a39cd0e242e3"/>
</dataarea>
</part>
</software>
<software name="cremount">

View File

@ -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<m68000_base_device> m_maincpu;
required_device<m68000_base_device> m_cpu;
required_device<ns32081_device> m_fpu;
required_device<hd63450_device> m_dmac;
required_device<z8536_device> m_cio;
required_device<nmc9306_device> m_nvram;
required_device<scc8530_device> m_scc0;
required_device<scc8530_device> m_scc1;
required_device<scc8530_device> m_scc2;
required_device<fd1797_device> m_fdc;
required_device<floppy_connector> m_floppy0;
required_device<floppy_connector> m_floppy1;
required_device<floppy_connector> m_floppy2;
required_device<nscsi_callback_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 )