summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/beta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/beta.cpp')
-rw-r--r--src/devices/bus/spectrum/beta.cpp256
1 files changed, 0 insertions, 256 deletions
diff --git a/src/devices/bus/spectrum/beta.cpp b/src/devices/bus/spectrum/beta.cpp
deleted file mode 100644
index e48bed34e52..00000000000
--- a/src/devices/bus/spectrum/beta.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nigel Barnes
-/*********************************************************************
-
- Technology Research Beta 128 Disk interface
-
-*********************************************************************/
-
-#include "emu.h"
-#include "beta.h"
-
-
-/***************************************************************************
- DEVICE DEFINITIONS
-***************************************************************************/
-
-DEFINE_DEVICE_TYPE(SPECTRUM_BETA128, spectrum_beta128_device, "spectrum_beta128", "TR Beta 128 Disk Interface")
-
-
-//-------------------------------------------------
-// INPUT_PORTS( beta128 )
-//-------------------------------------------------
-
-INPUT_PORTS_START(beta128)
- PORT_START("BUTTON")
- PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("Magic Button") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, spectrum_beta128_device, magic_button, nullptr)
-
- PORT_START("SWITCH")
- PORT_CONFNAME(0x03, 0x01, "System Switch") //PORT_CHANGED_MEMBER(DEVICE_SELF, spectrum_beta128_device, switch_changed, 0)
- PORT_CONFSETTING(0x00, "Off (128)")
- PORT_CONFSETTING(0x01, "Normal (auto-boot)")
- //PORT_CONFSETTING(0x02, "Reset") // TODO: implement RESET callback
-INPUT_PORTS_END
-
-//-------------------------------------------------
-// input_ports - device-specific input ports
-//-------------------------------------------------
-
-ioport_constructor spectrum_beta128_device::device_input_ports() const
-{
- return INPUT_PORTS_NAME(beta128);
-}
-
-//-------------------------------------------------
-// SLOT_INTERFACE( beta_floppies )
-//-------------------------------------------------
-
-static void beta_floppies(device_slot_interface &device)
-{
- device.option_add("525qd", FLOPPY_525_QD);
-}
-
-//-------------------------------------------------
-// floppy_format_type floppy_formats
-//-------------------------------------------------
-
-FLOPPY_FORMATS_MEMBER(spectrum_beta128_device::floppy_formats)
- FLOPPY_TRD_FORMAT
-FLOPPY_FORMATS_END
-
-//-------------------------------------------------
-// ROM( beta )
-//-------------------------------------------------
-
-ROM_START(beta128)
- ROM_REGION(0x4000, "rom", 0)
- ROM_DEFAULT_BIOS("trd504")
- ROM_SYSTEM_BIOS(0, "trd501", "TR-DOS v5.01")
- ROMX_LOAD("trd501.rom", 0x0000, 0x4000, CRC(3e3cdd4c) SHA1(8303ba0cc79daa6c04cd1e6ce27e8b6886a3f0de), ROM_BIOS(0))
- ROM_SYSTEM_BIOS(1, "trd503", "TR-DOS v5.03")
- ROMX_LOAD("trd503.rom", 0x0000, 0x4000, CRC(10751aba) SHA1(21695e3f2a8f796386ce66eea8a246b0ac44810c), ROM_BIOS(1))
- ROM_SYSTEM_BIOS(2, "trd504", "TR-DOS v5.04")
- ROMX_LOAD("trd504.rom", 0x0000, 0x4000, CRC(ba310874) SHA1(05e55e37df8eee6c68601ba9cf6c92195852ce3f), ROM_BIOS(2))
-ROM_END
-
-//-------------------------------------------------
-// device_add_mconfig - add device configuration
-//-------------------------------------------------
-
-void spectrum_beta128_device::device_add_mconfig(machine_config &config)
-{
- FD1793(config, m_fdc, 4_MHz_XTAL / 4);
- FLOPPY_CONNECTOR(config, "fdc:0", beta_floppies, "525qd", spectrum_beta128_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", beta_floppies, "525qd", spectrum_beta128_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:2", beta_floppies, nullptr, spectrum_beta128_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:3", beta_floppies, nullptr, spectrum_beta128_device::floppy_formats).enable_sound(true);
-
- // passthru
- SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, nullptr);
- m_exp->irq_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::irq_w));
- m_exp->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::nmi_w));
-}
-
-const tiny_rom_entry *spectrum_beta128_device::device_rom_region() const
-{
- return ROM_NAME(beta128);
-}
-
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-//-------------------------------------------------
-// spectrum_beta128_device - constructor
-//-------------------------------------------------
-
-spectrum_beta128_device::spectrum_beta128_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, SPECTRUM_BETA128, tag, owner, clock)
- , device_spectrum_expansion_interface(mconfig, *this)
- , m_rom(*this, "rom")
- , m_fdc(*this, "fdc")
- , m_floppy(*this, "fdc:%u", 0)
- , m_exp(*this, "exp")
- , m_switch(*this, "SWITCH")
-{
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void spectrum_beta128_device::device_start()
-{
- save_item(NAME(m_romcs));
-}
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void spectrum_beta128_device::device_reset()
-{
- // Page in the ROM if auto-boot is selected
- if (m_switch->read() == 0x01)
- m_romcs = 1;
- else
- m_romcs = 0;
-}
-
-//**************************************************************************
-// IMPLEMENTATION
-//**************************************************************************
-
-READ_LINE_MEMBER(spectrum_beta128_device::romcs)
-{
- return m_romcs | m_exp->romcs();
-}
-
-
-void spectrum_beta128_device::opcode_fetch(offs_t offset)
-{
- m_exp->opcode_fetch(offset);
-
- if (!machine().side_effects_disabled())
- {
- if ((offset == 0x0066) || (offset & 0xff00) == 0x3d00)
- m_romcs = 1;
- else if (offset >= 0x4000)
- m_romcs = 0;
- }
-}
-
-uint8_t spectrum_beta128_device::iorq_r(offs_t offset)
-{
- uint8_t data = m_exp->iorq_r(offset);
-
- if (m_romcs)
- {
- switch (offset & 0xff)
- {
- case 0x1f: case 0x3f: case 0x5f: case 0x7f:
- data = m_fdc->read((offset >> 5) & 0x03);
- break;
-
- case 0xff:
- data &= 0x3f; // actually open bus
- data |= m_fdc->drq_r() ? 0x40 : 0;
- data |= m_fdc->intrq_r() ? 0x80 : 0;
- break;
- }
- }
- return data;
-}
-
-void spectrum_beta128_device::iorq_w(offs_t offset, uint8_t data)
-{
- if (m_romcs)
- {
- switch (offset & 0xff)
- {
- case 0x1f: case 0x3f: case 0x5f: case 0x7f:
- m_fdc->write((offset >> 5) & 0x03, data);
- break;
-
- case 0xff:
- floppy_image_device* floppy = m_floppy[data & 3]->get_device();
-
- m_fdc->set_floppy(floppy);
- if (floppy)
- floppy->ss_w(BIT(data, 4) ? 0 : 1);
- m_fdc->dden_w(BIT(data, 6));
-
- // bit 3 connected to pin 23 "HLT" of FDC and via diode to INDEX
- //m_fdc->hlt_w(BIT(data, 3)); // not handled in current wd_fdc
-
- if (BIT(data, 2) == 0) // reset
- {
- m_fdc->reset();
- if (floppy)
- floppy->mon_w(ASSERT_LINE);
- }
- else
- {
- // TODO: implement correct motor control, FDD motor and RDY FDC pin controlled by HLD pin of FDC
- if (floppy)
- floppy->mon_w(CLEAR_LINE);
- }
- break;
- }
- }
- m_exp->iorq_w(offset, data);
-}
-
-uint8_t spectrum_beta128_device::mreq_r(offs_t offset)
-{
- uint8_t data = 0xff;
-
- if (m_romcs)
- {
- data = m_rom->base()[offset & 0x3fff];
- }
-
- if (m_exp->romcs())
- data &= m_exp->mreq_r(offset);
-
- return data;
-}
-
-void spectrum_beta128_device::mreq_w(offs_t offset, uint8_t data)
-{
- if (m_exp->romcs())
- m_exp->mreq_w(offset, data);
-}
-
-INPUT_CHANGED_MEMBER(spectrum_beta128_device::magic_button)
-{
- if (newval && !oldval)
- {
- m_slot->nmi_w(ASSERT_LINE);
- }
- else
- {
- m_slot->nmi_w(CLEAR_LINE);
- }
-}