summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Nigel Barnes <Pernod70@users.noreply.github.com>2020-03-15 19:24:32 +0000
committer Nigel Barnes <Pernod70@users.noreply.github.com>2020-03-15 19:34:46 +0000
commitba827829eca9d7afcc10388a1f3eeb1fbc4abb5b (patch)
tree29085c76cb58b71361aa10595fbbb2b99d2d2d37
parent1a2b4cb540109d109eda1a43edfc4a64d0d6a8c1 (diff)
bus/bbc/fdc: Added insert_rom property to optionally insert any support roms, and cleanups (nw)
-rw-r--r--src/devices/bus/bbc/fdc/acorn.cpp8
-rw-r--r--src/devices/bus/bbc/fdc/ams.cpp7
-rw-r--r--src/devices/bus/bbc/fdc/cumana.cpp10
-rw-r--r--src/devices/bus/bbc/fdc/cv1797.cpp10
-rw-r--r--src/devices/bus/bbc/fdc/fdc.cpp3
-rw-r--r--src/devices/bus/bbc/fdc/fdc.h6
-rw-r--r--src/devices/bus/bbc/fdc/microware.cpp7
-rw-r--r--src/devices/bus/bbc/fdc/opus.cpp8
-rw-r--r--src/devices/bus/bbc/fdc/watford.cpp12
9 files changed, 54 insertions, 17 deletions
diff --git a/src/devices/bus/bbc/fdc/acorn.cpp b/src/devices/bus/bbc/fdc/acorn.cpp
index e5042ae0411..39b3cb08dc8 100644
--- a/src/devices/bus/bbc/fdc/acorn.cpp
+++ b/src/devices/bus/bbc/fdc/acorn.cpp
@@ -20,7 +20,7 @@ DEFINE_DEVICE_TYPE(BBC_ACORN1770, bbc_acorn1770_device, "bbc_acorn1770", "Acorn
//-------------------------------------------------
-// MACHINE_DRIVER( acorn )
+// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_acorn8271_device::floppy_formats )
@@ -30,7 +30,7 @@ FLOPPY_FORMATS_MEMBER( bbc_acorn8271_device::floppy_formats )
FLOPPY_ACORN_DOS_FORMAT,
FLOPPY_FSD_FORMAT,
FLOPPY_PC_FORMAT
-FLOPPY_FORMATS_END0
+FLOPPY_FORMATS_END
static void bbc_floppies_525(device_slot_interface &device)
{
@@ -41,6 +41,10 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+//-------------------------------------------------
+// ROM( acorn )
+//-------------------------------------------------
+
ROM_START( acorn8271 )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("dnfs120")
diff --git a/src/devices/bus/bbc/fdc/ams.cpp b/src/devices/bus/bbc/fdc/ams.cpp
index db9eb7e3012..dae78e8486e 100644
--- a/src/devices/bus/bbc/fdc/ams.cpp
+++ b/src/devices/bus/bbc/fdc/ams.cpp
@@ -19,13 +19,18 @@ DEFINE_DEVICE_TYPE(BBC_AMS3, bbc_ams3_device, "bbc_ams3", "AMS 3\" Microdrive Di
//-------------------------------------------------
-// MACHINE_DRIVER( ams3 )
+// FLOPPY_FORMATS( ams3 )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_ams3_device::floppy_formats )
FLOPPY_ACORN_SSD_FORMAT
FLOPPY_FORMATS_END
+
+//-------------------------------------------------
+// ROM( ams3 )
+//-------------------------------------------------
+
ROM_START( ams3 )
ROM_REGION(0x8000, "dfs_rom", 0)
ROM_LOAD("dfs098.rom", 0x0000, 0x2000, CRC(90852e7d) SHA1(6df3552d5426f3a4625b9a0c7829bdba03f05e84))
diff --git a/src/devices/bus/bbc/fdc/cumana.cpp b/src/devices/bus/bbc/fdc/cumana.cpp
index f4490b1922d..0194e797c4b 100644
--- a/src/devices/bus/bbc/fdc/cumana.cpp
+++ b/src/devices/bus/bbc/fdc/cumana.cpp
@@ -22,14 +22,14 @@ DEFINE_DEVICE_TYPE(BBC_CUMANA2, bbc_cumana2_device, "bbc_cumana2", "Cumana QFS I
//-------------------------------------------------
-// MACHINE_DRIVER( cumana )
+// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_cumanafdc_device::floppy_formats )
FLOPPY_ACORN_SSD_FORMAT,
FLOPPY_ACORN_DSD_FORMAT,
FLOPPY_FSD_FORMAT
-FLOPPY_FORMATS_END0
+FLOPPY_FORMATS_END
static void bbc_floppies_525(device_slot_interface &device)
{
@@ -40,6 +40,10 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+//-------------------------------------------------
+// ROM( cumana )
+//-------------------------------------------------
+
ROM_START( cumana1 )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("qfs102")
@@ -192,7 +196,7 @@ void bbc_cumanafdc_device::write(offs_t offset, uint8_t data)
m_fdc->dden_w(BIT(data, 2));
}
// bit 3: reset
- if (BIT(data, 3)) m_fdc->soft_reset();
+ m_fdc->mr_w(!BIT(data, 3));
// bit 4: interrupt enable
m_fdc_ie = BIT(data, 4);
diff --git a/src/devices/bus/bbc/fdc/cv1797.cpp b/src/devices/bus/bbc/fdc/cv1797.cpp
index d14098a3fa3..cc29926e692 100644
--- a/src/devices/bus/bbc/fdc/cv1797.cpp
+++ b/src/devices/bus/bbc/fdc/cv1797.cpp
@@ -21,14 +21,14 @@ DEFINE_DEVICE_TYPE(BBC_CV1797, bbc_cv1797_device, "bbc_cv1797", "Computer Villa
//-------------------------------------------------
-// MACHINE_DRIVER( cv1797 )
+// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_cv1797_device::floppy_formats )
FLOPPY_ACORN_SSD_FORMAT,
FLOPPY_ACORN_DSD_FORMAT,
FLOPPY_FSD_FORMAT
-FLOPPY_FORMATS_END0
+FLOPPY_FORMATS_END
static void bbc_floppies_525(device_slot_interface &device)
{
@@ -39,6 +39,10 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+//-------------------------------------------------
+// ROM( cv1797 )
+//-------------------------------------------------
+
ROM_START( cv1797 )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("lvldos")
@@ -143,7 +147,7 @@ void bbc_cv1797_device::write(offs_t offset, uint8_t data)
m_fdc->dden_w(!BIT(data, 2));
// bit 6: reset
- //if (BIT(data, 6)) m_fdc->soft_reset();
+ //m_fdc->mr_w(!BIT(data, 6));
}
}
diff --git a/src/devices/bus/bbc/fdc/fdc.cpp b/src/devices/bus/bbc/fdc/fdc.cpp
index 6c9e4b152c4..fb5f88f153f 100644
--- a/src/devices/bus/bbc/fdc/fdc.cpp
+++ b/src/devices/bus/bbc/fdc/fdc.cpp
@@ -45,7 +45,8 @@ bbc_fdc_slot_device::bbc_fdc_slot_device(const machine_config &mconfig, const ch
device_single_card_slot_interface<device_bbc_fdc_interface>(mconfig, *this),
m_card(nullptr),
m_intrq_cb(*this),
- m_drq_cb(*this)
+ m_drq_cb(*this),
+ m_insert_rom(true)
{
}
diff --git a/src/devices/bus/bbc/fdc/fdc.h b/src/devices/bus/bbc/fdc/fdc.h
index 2662919edbd..7138ced7ad1 100644
--- a/src/devices/bus/bbc/fdc/fdc.h
+++ b/src/devices/bus/bbc/fdc/fdc.h
@@ -33,10 +33,14 @@ public:
slot_options(*this);
set_default_option(default_option);
set_fixed(false);
+ set_insert_rom(true);
}
bbc_fdc_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
+ void set_insert_rom(bool insert_rom) { m_insert_rom = insert_rom; }
+ bool insert_rom() { return m_insert_rom; }
+
// callbacks
auto intrq_wr_callback() { return m_intrq_cb.bind(); }
auto drq_wr_callback() { return m_drq_cb.bind(); }
@@ -56,6 +60,8 @@ protected:
private:
devcb_write_line m_intrq_cb;
devcb_write_line m_drq_cb;
+
+ bool m_insert_rom;
};
diff --git a/src/devices/bus/bbc/fdc/microware.cpp b/src/devices/bus/bbc/fdc/microware.cpp
index 477ac0f3f9e..01a183300ee 100644
--- a/src/devices/bus/bbc/fdc/microware.cpp
+++ b/src/devices/bus/bbc/fdc/microware.cpp
@@ -21,7 +21,7 @@ DEFINE_DEVICE_TYPE(BBC_MICROWARE, bbc_microware_device, "bbc_microware", "Microw
//-------------------------------------------------
-// MACHINE_DRIVER( microware )
+// FLOPPY_FORMATS( microware )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_microware_device::floppy_formats )
@@ -39,6 +39,11 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+
+//-------------------------------------------------
+// ROM( microware )
+//-------------------------------------------------
+
ROM_START( microware )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("udm200")
diff --git a/src/devices/bus/bbc/fdc/opus.cpp b/src/devices/bus/bbc/fdc/opus.cpp
index f6b07df6bcb..43425182fba 100644
--- a/src/devices/bus/bbc/fdc/opus.cpp
+++ b/src/devices/bus/bbc/fdc/opus.cpp
@@ -28,7 +28,7 @@ DEFINE_DEVICE_TYPE(BBC_OPUS1770, bbc_opus1770_device, "bbc_opus1770", "Opus D-DO
//-------------------------------------------------
-// MACHINE_DRIVER( opus2791 )
+// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_opusfdc_device::floppy_formats )
@@ -37,7 +37,7 @@ FLOPPY_FORMATS_MEMBER( bbc_opusfdc_device::floppy_formats )
FLOPPY_FSD_FORMAT,
FLOPPY_OPUS_DDOS_FORMAT,
FLOPPY_OPUS_DDCPM_FORMAT
-FLOPPY_FORMATS_END0
+FLOPPY_FORMATS_END
static void bbc_floppies_525(device_slot_interface &device)
{
@@ -48,6 +48,10 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+//-------------------------------------------------
+// ROM( opus )
+//-------------------------------------------------
+
ROM_START( opus8272 )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("ddos305")
diff --git a/src/devices/bus/bbc/fdc/watford.cpp b/src/devices/bus/bbc/fdc/watford.cpp
index 4c3f31344ee..9a0764e604b 100644
--- a/src/devices/bus/bbc/fdc/watford.cpp
+++ b/src/devices/bus/bbc/fdc/watford.cpp
@@ -24,14 +24,14 @@ DEFINE_DEVICE_TYPE(BBC_WEDDB3, bbc_weddb3_device, "bbc_weddb3", "Watford Electro
//-------------------------------------------------
-// MACHINE_DRIVER( watford )
+// FLOPPY_FORMATS( floppy_formats )
//-------------------------------------------------
FLOPPY_FORMATS_MEMBER( bbc_watfordfdc_device::floppy_formats )
FLOPPY_ACORN_SSD_FORMAT,
FLOPPY_ACORN_DSD_FORMAT,
FLOPPY_FSD_FORMAT
-FLOPPY_FORMATS_END0
+FLOPPY_FORMATS_END
static void bbc_floppies_525(device_slot_interface &device)
{
@@ -42,6 +42,10 @@ static void bbc_floppies_525(device_slot_interface &device)
device.option_add("525qd", FLOPPY_525_QD);
}
+//-------------------------------------------------
+// ROM( watford )
+//-------------------------------------------------
+
ROM_START( weddb2 )
ROM_REGION(0x4000, "dfs_rom", 0)
ROM_DEFAULT_BIOS("ddfs153")
@@ -188,7 +192,7 @@ void bbc_weddb2_device::write(offs_t offset, uint8_t data)
floppy->ss_w(BIT(data, 1));
// bit 3: reset
- if (!BIT(data, 3)) m_fdc->soft_reset();
+ m_fdc->mr_w(BIT(data, 3));
}
}
@@ -232,6 +236,6 @@ void bbc_weddb3_device::write(offs_t offset, uint8_t data)
m_fdc->dden_w(BIT(data, 3));
// bit 5: reset
- if (!BIT(data, 5)) m_fdc->soft_reset();
+ m_fdc->mr_w(BIT(data, 5));
}
}