mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
bus/bbc/fdc: Added the Kenda Professional DMFS and Microware/UDM DDFS boards.
This commit is contained in:
parent
d64262230b
commit
ea75086da7
@ -331,12 +331,14 @@ if (BUSES["BBC_FDC"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/cumana.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/cv1797.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/cv1797.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/microware.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/microware.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/kenda.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/kenda.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/opus.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/opus.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/udm.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/udm.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/watford.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/watford.h",
|
||||
}
|
||||
|
@ -96,9 +96,10 @@ void bbc_fdc_slot_device::write(offs_t offset, uint8_t data)
|
||||
#include "ams.h"
|
||||
#include "cumana.h"
|
||||
#include "cv1797.h"
|
||||
#include "microware.h"
|
||||
#include "kenda.h"
|
||||
#include "opus.h"
|
||||
#include "solidisk.h"
|
||||
#include "udm.h"
|
||||
#include "watford.h"
|
||||
|
||||
|
||||
@ -110,7 +111,7 @@ void bbc_fdc_devices(device_slot_interface &device)
|
||||
device.option_add("cumana1", BBC_CUMANA1);
|
||||
device.option_add("cumana2", BBC_CUMANA2);
|
||||
device.option_add("cv1797", BBC_CV1797);
|
||||
device.option_add("microware", BBC_MICROWARE);
|
||||
device.option_add("kenda", BBC_KENDA);
|
||||
device.option_add("opus8272", BBC_OPUS8272);
|
||||
device.option_add("opus2791", BBC_OPUS2791);
|
||||
device.option_add("opus2793", BBC_OPUS2793);
|
||||
@ -118,6 +119,7 @@ void bbc_fdc_devices(device_slot_interface &device)
|
||||
device.option_add("stl1770_1", BBC_STL1770_1);
|
||||
device.option_add("stl1770_2", BBC_STL1770_2);
|
||||
device.option_add("stldfdc_1", BBC_STLDFDC_1);
|
||||
device.option_add("udm", BBC_UDM);
|
||||
device.option_add("weddb2", BBC_WEDDB2);
|
||||
device.option_add("weddb3", BBC_WEDDB3);
|
||||
}
|
||||
|
166
src/devices/bus/bbc/fdc/kenda.cpp
Normal file
166
src/devices/bus/bbc/fdc/kenda.cpp
Normal file
@ -0,0 +1,166 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Kenda Professional DMFS
|
||||
|
||||
The Kenda Professional is packaged with the board in an epoxy blob, and is
|
||||
quite rare. The board contents are not known as no-one has attempted to
|
||||
remove the epoxy.
|
||||
What we do know is that it contains:
|
||||
- 8K ROM
|
||||
- 2K RAM
|
||||
- FDC (definitely WD compatible, and likely a WD2793)
|
||||
|
||||
The board plugs into the usual 8271 socket and has a ribbon cable with 24 pin
|
||||
header that plugs into a ROM socket.
|
||||
|
||||
The 8K ROM is mirrored to fill the 16K ROM space, and has the 2K RAM overlayed
|
||||
from offset &3000, and also mirrored upto &4000.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "kenda.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_KENDA, bbc_kenda_device, "bbc_kenda", "Kenda Professional DMFS")
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// FLOPPY_FORMATS( floppy_formats )
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( bbc_kenda_device::floppy_formats )
|
||||
FLOPPY_ACORN_SSD_FORMAT,
|
||||
FLOPPY_ACORN_DSD_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// SLOT_INTERFACE( bbc_floppies_525 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static void bbc_floppies_525(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("525sssd", FLOPPY_525_SSSD);
|
||||
device.option_add("525sd", FLOPPY_525_SD);
|
||||
device.option_add("525ssdd", FLOPPY_525_SSDD);
|
||||
device.option_add("525dd", FLOPPY_525_DD);
|
||||
device.option_add("525qd", FLOPPY_525_QD);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( kenda )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( kenda )
|
||||
ROM_REGION(0x4000, "dfs_rom", 0)
|
||||
ROM_LOAD("kenda102.rom", 0x0000, 0x2000, CRC(430b911c) SHA1(594ae1d1aeaa20a1d5d1c64cd94d43926dda4029))
|
||||
ROM_RELOAD( 0x2000, 0x2000)
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_kenda_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
WD2793(config, m_fdc, DERIVED_CLOCK(1, 8)); // TODO: unconfirmed FDC
|
||||
m_fdc->intrq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::intrq_w));
|
||||
m_fdc->drq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::drq_w));
|
||||
m_fdc->hld_wr_callback().set(FUNC(bbc_kenda_device::motor_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
|
||||
const tiny_rom_entry *bbc_kenda_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( kenda );
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// bbc_kenda_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_kenda_device::bbc_kenda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_KENDA, tag, owner, clock)
|
||||
, device_bbc_fdc_interface(mconfig, *this)
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_floppy(*this, "fdc:%u", 0)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_kenda_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
uint8_t bbc_kenda_device::read(offs_t offset)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
if (offset & 0x04)
|
||||
{
|
||||
data = 0xfe;
|
||||
}
|
||||
else
|
||||
{
|
||||
data = m_fdc->read(offset & 0x03);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void bbc_kenda_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset & 0x04)
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0: drive select
|
||||
floppy = m_floppy[BIT(data, 0)]->get_device();
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
// bit 1: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 1));
|
||||
|
||||
// other bits unknown, or unused
|
||||
|
||||
// bit 7: density
|
||||
m_fdc->dden_w(!BIT(data, 7));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_fdc->write(offset & 0x03, data);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_kenda_device::motor_w)
|
||||
{
|
||||
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->mon_w(!state);
|
||||
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->mon_w(!state);
|
||||
}
|
54
src/devices/bus/bbc/fdc/kenda.h
Normal file
54
src/devices/bus/bbc/fdc/kenda.h
Normal file
@ -0,0 +1,54 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Kenda Professional DMFS
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#ifndef MAME_BUS_BBC_FDC_KENDA_H
|
||||
#define MAME_BUS_BBC_FDC_KENDA_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "fdc.h"
|
||||
#include "imagedev/floppy.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "formats/acorn_dsk.h"
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class bbc_kenda_device : public device_t, public device_bbc_fdc_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
bbc_kenda_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||
|
||||
virtual uint8_t read(offs_t offset) override;
|
||||
virtual void write(offs_t offset, uint8_t data) override;
|
||||
|
||||
private:
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
||||
|
||||
required_device<wd2793_device> m_fdc;
|
||||
required_device_array<floppy_connector, 2> m_floppy;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_KENDA, bbc_kenda_device)
|
||||
|
||||
#endif /* MAME_BUS_BBC_FDC_KENDA_H */
|
@ -2,29 +2,27 @@
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
United Disk Memories DDFS FDC
|
||||
|
||||
Microware DDFS FDC
|
||||
Microware / United Disk Memories DDFS FDC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "microware.h"
|
||||
#include "udm.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_MICROWARE, bbc_microware_device, "bbc_microware", "Microware DDFS FDC")
|
||||
DEFINE_DEVICE_TYPE(BBC_UDM, bbc_udm_device, "bbc_udm", "United Disk Memories DDFS FDC")
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// FLOPPY_FORMATS( microware )
|
||||
// FLOPPY_FORMATS( udm )
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( bbc_microware_device::floppy_formats )
|
||||
FLOPPY_FORMATS_MEMBER( bbc_udm_device::floppy_formats )
|
||||
FLOPPY_ACORN_SSD_FORMAT,
|
||||
FLOPPY_ACORN_DSD_FORMAT,
|
||||
FLOPPY_FSD_FORMAT
|
||||
@ -41,16 +39,19 @@ static void bbc_floppies_525(device_slot_interface &device)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( microware )
|
||||
// ROM( udm )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( microware )
|
||||
ROM_START( udm )
|
||||
ROM_REGION(0x4000, "dfs_rom", 0)
|
||||
ROM_DEFAULT_BIOS("udm200")
|
||||
ROM_SYSTEM_BIOS(0, "ddfs090", "Microware DDFS 0.90")
|
||||
ROMX_LOAD("microware_ddfs090.rom", 0x0000, 0x4000, CRC(700d50e5) SHA1(6834e46cb15354003d553e6c2bdb4ed76b47a465), ROM_BIOS(0))
|
||||
ROM_SYSTEM_BIOS(1, "udm200", "UDM DDFS 2.00")
|
||||
ROM_SYSTEM_BIOS(0, "ddfs310", "UDM DDFS 3.10")
|
||||
ROMX_LOAD("udm_ddfs310.rom", 0x0000, 0x4000, CRC(55851c2d) SHA1(c5b6557fa4dbfa651c8ecc5b1da93b615c3aa905), ROM_BIOS(0))
|
||||
ROM_SYSTEM_BIOS(1, "ddfs200", "UDM DDFS 2.00")
|
||||
ROMX_LOAD("udm_ddfs200.rom", 0x0000, 0x4000, CRC(1b4708a2) SHA1(0f37bcc73a758657cfe58c19f0cc92be9107e767), ROM_BIOS(1))
|
||||
ROM_SYSTEM_BIOS(2, "ddfs098", "UDM DDFS 0.98")
|
||||
ROMX_LOAD("udm_ddfs098.rom", 0x0000, 0x4000, CRC(2119f9ad) SHA1(bfb9404b34de3b489db73d886300f37081db2482), ROM_BIOS(2))
|
||||
ROM_SYSTEM_BIOS(3, "ddfs090", "Microware DDFS 0.90")
|
||||
ROMX_LOAD("microware_ddfs090.rom", 0x0000, 0x4000, CRC(700d50e5) SHA1(6834e46cb15354003d553e6c2bdb4ed76b47a465), ROM_BIOS(3))
|
||||
ROM_END
|
||||
|
||||
|
||||
@ -58,20 +59,20 @@ ROM_END
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_microware_device::device_add_mconfig(machine_config &config)
|
||||
void bbc_udm_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
WD2793(config, m_fdc, DERIVED_CLOCK(1, 8)); // Replay advert suggests Type R8272 UDM DFS
|
||||
m_fdc->intrq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::intrq_w));
|
||||
m_fdc->drq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::drq_w));
|
||||
m_fdc->hld_wr_callback().set(FUNC(bbc_microware_device::motor_w));
|
||||
WD2793(config, m_fdc, DERIVED_CLOCK(1, 8));
|
||||
m_fdc->drq_wr_callback().set(FUNC(bbc_udm_device::drq_w));
|
||||
m_fdc->intrq_wr_callback().set(FUNC(bbc_udm_device::intrq_w));
|
||||
m_fdc->hld_wr_callback().set(FUNC(bbc_udm_device::motor_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, m_floppy0, bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy1, bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], bbc_floppies_525, "525qd", floppy_formats).enable_sound(true);
|
||||
}
|
||||
|
||||
const tiny_rom_entry *bbc_microware_device::device_rom_region() const
|
||||
const tiny_rom_entry *bbc_udm_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( microware );
|
||||
return ROM_NAME( udm );
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
@ -79,16 +80,15 @@ const tiny_rom_entry *bbc_microware_device::device_rom_region() const
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// bbc_microware_device - constructor
|
||||
// bbc_udm_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_microware_device::bbc_microware_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_MICROWARE, tag, owner, clock)
|
||||
bbc_udm_device::bbc_udm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_UDM, tag, owner, clock)
|
||||
, device_bbc_fdc_interface(mconfig, *this)
|
||||
, m_fdc(*this, "wd2793")
|
||||
, m_floppy0(*this, "wd2793:0")
|
||||
, m_floppy1(*this, "wd2793:1")
|
||||
, m_drive_control(0)
|
||||
, m_floppy(*this, "wd2793:%u", 0)
|
||||
, m_fdc_ie(0)
|
||||
{
|
||||
}
|
||||
|
||||
@ -96,9 +96,8 @@ bbc_microware_device::bbc_microware_device(const machine_config &mconfig, const
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_microware_device::device_start()
|
||||
void bbc_udm_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_drive_control));
|
||||
}
|
||||
|
||||
|
||||
@ -106,7 +105,7 @@ void bbc_microware_device::device_start()
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
uint8_t bbc_microware_device::read(offs_t offset)
|
||||
uint8_t bbc_udm_device::read(offs_t offset)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
@ -116,12 +115,12 @@ uint8_t bbc_microware_device::read(offs_t offset)
|
||||
}
|
||||
else
|
||||
{
|
||||
data = m_drive_control;
|
||||
data = 0xfe;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
void bbc_microware_device::write(offs_t offset, uint8_t data)
|
||||
void bbc_udm_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset & 0x04)
|
||||
{
|
||||
@ -131,31 +130,37 @@ void bbc_microware_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
m_drive_control = data;
|
||||
logerror("fdc: Drive control %02x \n", data);
|
||||
// bit 0: drive select
|
||||
switch (BIT(data, 0))
|
||||
{
|
||||
case 0: floppy = m_floppy0->get_device(); break;
|
||||
case 1: floppy = m_floppy1->get_device(); break;
|
||||
}
|
||||
floppy = m_floppy[BIT(data, 0)]->get_device();
|
||||
m_fdc->set_floppy(floppy);
|
||||
|
||||
// bit 1: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 1));
|
||||
floppy->ss_w(!BIT(data, 1));
|
||||
|
||||
// bit 2: density
|
||||
m_fdc->dden_w(BIT(data, 2));
|
||||
m_fdc->dden_w(!BIT(data, 2));
|
||||
|
||||
// bit 3: always set ???
|
||||
// bit 3: master reset
|
||||
m_fdc->mr_w(BIT(data, 3));
|
||||
|
||||
// bit 4: ??? interrupt
|
||||
// bit 4: interrupt enable
|
||||
m_fdc_ie = BIT(data, 4);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_microware_device::motor_w)
|
||||
WRITE_LINE_MEMBER(bbc_udm_device::intrq_w)
|
||||
{
|
||||
if (m_floppy0->get_device()) m_floppy0->get_device()->mon_w(!state);
|
||||
if (m_floppy1->get_device()) m_floppy1->get_device()->mon_w(!state);
|
||||
m_slot->intrq_w((state && m_fdc_ie) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_udm_device::drq_w)
|
||||
{
|
||||
m_slot->drq_w((state && m_fdc_ie) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_udm_device::motor_w)
|
||||
{
|
||||
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->mon_w(!state);
|
||||
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->mon_w(!state);
|
||||
}
|
@ -2,15 +2,13 @@
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
United Disk Memories DDFS FDC
|
||||
|
||||
Microware DDFS FDC
|
||||
Microware / United Disk Memories DDFS FDC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#ifndef MAME_BUS_BBC_FDC_MICROWARE_H
|
||||
#define MAME_BUS_BBC_FDC_MICROWARE_H
|
||||
#ifndef MAME_BUS_BBC_FDC_UDM_H
|
||||
#define MAME_BUS_BBC_FDC_UDM_H
|
||||
|
||||
#pragma once
|
||||
|
||||
@ -24,15 +22,13 @@
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class bbc_microware_device :
|
||||
class bbc_udm_device :
|
||||
public device_t,
|
||||
public device_bbc_fdc_interface
|
||||
{
|
||||
public:
|
||||
static constexpr feature_type imperfect_features() { return feature::DISK; }
|
||||
|
||||
// construction/destruction
|
||||
bbc_microware_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
bbc_udm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -48,18 +44,19 @@ protected:
|
||||
private:
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(intrq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(drq_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
||||
|
||||
required_device<wd2793_device> m_fdc;
|
||||
required_device<floppy_connector> m_floppy0;
|
||||
optional_device<floppy_connector> m_floppy1;
|
||||
required_device_array<floppy_connector, 2> m_floppy;
|
||||
|
||||
int m_drive_control;
|
||||
int m_fdc_ie;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_MICROWARE, bbc_microware_device);
|
||||
DECLARE_DEVICE_TYPE(BBC_UDM, bbc_udm_device);
|
||||
|
||||
|
||||
#endif /* MAME_BUS_BBC_FDC_MICROWARE_H */
|
||||
#endif /* MAME_BUS_BBC_FDC_UDM_H */
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Nigel Barnes
|
||||
/***************************************************************************
|
||||
|
||||
BBC Micro MRM E00 DFS emulation
|
||||
BBC Micro E00 DFS emulation
|
||||
|
||||
Comprises of 8K ROM and 2K/4K? RAM on a carrier board, with flying lead
|
||||
to RW line to enable writing to RAM.
|
||||
@ -17,7 +17,7 @@
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_MRME00, bbc_mrme00_device, "bbc_mrme00", "BBC Micro MRM E00 DFS")
|
||||
DEFINE_DEVICE_TYPE(BBC_DFSE00, bbc_dfse00_device, "bbc_dfse00", "BBC Micro E00 DFS")
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
@ -27,8 +27,8 @@ DEFINE_DEVICE_TYPE(BBC_MRME00, bbc_mrme00_device, "bbc_mrme00", "BBC Micro MRM E
|
||||
// bbc_rom_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_mrme00_device::bbc_mrme00_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_MRME00, tag, owner, clock)
|
||||
bbc_dfse00_device::bbc_dfse00_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BBC_DFSE00, tag, owner, clock)
|
||||
, device_bbc_rom_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
@ -37,7 +37,7 @@ bbc_mrme00_device::bbc_mrme00_device(const machine_config &mconfig, const char *
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_mrme00_device::device_start()
|
||||
void bbc_dfse00_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
@ -45,7 +45,7 @@ void bbc_mrme00_device::device_start()
|
||||
// read
|
||||
//-------------------------------------------------
|
||||
|
||||
uint8_t bbc_mrme00_device::read(offs_t offset)
|
||||
uint8_t bbc_dfse00_device::read(offs_t offset)
|
||||
{
|
||||
if (offset < get_rom_size())
|
||||
return get_rom_base()[offset & (get_rom_size() - 1)];
|
||||
@ -57,7 +57,7 @@ uint8_t bbc_mrme00_device::read(offs_t offset)
|
||||
// write
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_mrme00_device::write(offs_t offset, uint8_t data)
|
||||
void bbc_dfse00_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
get_ram_base()[offset & (get_ram_size() - 1)] = data;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Nigel Barnes
|
||||
/***************************************************************************
|
||||
|
||||
BBC Micro MRM E00 DFS emulation
|
||||
BBC Micro E00 DFS emulation
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -17,14 +17,13 @@
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> bbc_mrme00_device
|
||||
// ======================> bbc_dfse00_device
|
||||
|
||||
class bbc_mrme00_device : public device_t,
|
||||
public device_bbc_rom_interface
|
||||
class bbc_dfse00_device : public device_t, public device_bbc_rom_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
bbc_mrme00_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
bbc_dfse00_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -36,7 +35,7 @@ protected:
|
||||
};
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_MRME00, bbc_mrme00_device)
|
||||
DECLARE_DEVICE_TYPE(BBC_DFSE00, bbc_dfse00_device)
|
||||
|
||||
|
||||
#endif // MAME_BUS_BBC_ROM_DFS_H
|
||||
|
@ -211,6 +211,7 @@ void bbc_romslot_device::write(offs_t offset, uint8_t data)
|
||||
#include "dfs.h"
|
||||
#include "genie.h"
|
||||
#include "pal.h"
|
||||
//#include "ramagic.h"
|
||||
#include "rtc.h"
|
||||
|
||||
|
||||
@ -229,7 +230,8 @@ void bbc_rom_devices(device_slot_interface &device)
|
||||
device.option_add_internal("palabe", BBC_PALABE);
|
||||
device.option_add_internal("palmo2", BBC_PALMO2);
|
||||
device.option_add_internal("genie", BBC_PMSGENIE);
|
||||
device.option_add_internal("mrme00", BBC_MRME00);
|
||||
device.option_add_internal("dfse00", BBC_DFSE00);
|
||||
//device.option_add_internal("ramagic", BBC_RAMAGIC);
|
||||
device.option_add_internal("stlrtc", BBC_STLRTC);
|
||||
device.option_add_internal("pmsrtc", BBC_PMSRTC);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user