bus/bbc/1mhzbus: Added The Barry-Box (not working)

This commit is contained in:
Nigel Barnes 2024-02-16 18:10:35 +00:00
parent 1f419cf779
commit fb3539ce0c
5 changed files with 125 additions and 8 deletions

View File

@ -706,6 +706,8 @@ if (BUSES["BBC_1MHZBUS"]~=null) then
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/2ndserial.h",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/autoprom.cpp",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/autoprom.h",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/barrybox.cpp",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/barrybox.h",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebopl.cpp",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebopl.h",
MAME_DIR .. "src/devices/bus/bbc/1mhzbus/beebsid.cpp",

View File

@ -26,10 +26,10 @@ DEFINE_DEVICE_TYPE(BBC_1MHZBUS_SLOT, bbc_1mhzbus_slot_device, "bbc_1mhzbus_slot"
// device_bbc_1mhzbus_interface - constructor
//-------------------------------------------------
device_bbc_1mhzbus_interface::device_bbc_1mhzbus_interface(const machine_config &mconfig, device_t &device) :
device_interface(device, "bbc1mhzbus")
device_bbc_1mhzbus_interface::device_bbc_1mhzbus_interface(const machine_config &mconfig, device_t &device)
: device_interface(device, "bbc1mhzbus")
, m_slot(dynamic_cast<bbc_1mhzbus_slot_device*>(device.owner()))
{
m_slot = dynamic_cast<bbc_1mhzbus_slot_device *>(device.owner());
}
@ -106,6 +106,7 @@ void bbc_1mhzbus_slot_device::jim_w(offs_t offset, uint8_t data)
#include "24bbc.h"
#include "2ndserial.h"
#include "autoprom.h"
#include "barrybox.h"
#include "cc500.h"
#include "cisco.h"
//#include "beebscan.h"
@ -139,15 +140,15 @@ void bbc_1mhzbus_devices(device_slot_interface &device)
device.option_add("m500", BBC_M500); /* Acorn ANV02 Music 500 */
device.option_add("awhd", BBC_AWHD); /* Acorn Winchester Disc */
device.option_add("autoprom", BBC_AUTOPROM); /* ATPL AutoPrommer */
device.option_add("barrybox", BBC_BARRYBOX); /* The Barry-Box */
device.option_add("24bbc", BBC_24BBC); /* Sprow 24bBC/RAM Disc */
device.option_add("2ndserial", BBC_2NDSERIAL); /* Sprow 2nd Serial Port */
device.option_add("beebide", BBC_BEEBIDE); /* Sprow BeebIDE 16-bit */
device.option_add("ide8", BBC_IDE8); /* RetroClinic BBC 8-bit IDE */
//device.option_add("beebscan", BBC_BEEBSCAN); /* Beeb HandScan */
device.option_add("b488", BBC_B488); /* Aries B488 */
device.option_add("cisco", BBC_CISCO); /* Cisco Terminal */
//device.option_add("videodig", BBC_VIDEODIG); /* Video Digitiser (RH Electronics) */
device.option_add("emrmidi", BBC_EMRMIDI); /* EMR Midi Interface */
device.option_add("emrmidi", BBC_EMRMIDI); /* EMR MIDI Interface */
//device.option_add("procyon", BBC_PROCYON); /* CST Procyon IEEE Interface */
device.option_add("m2000", BBC_M2000); /* Hybrid Music 2000 Interface */
device.option_add("m3000", BBC_M3000); /* Hybrid Music 3000 Expander */
@ -167,6 +168,7 @@ void bbc_1mhzbus_devices(device_slot_interface &device)
//device.option_add("prisma3", BBC_PRISMA3); /* PRISMA-3 - Millipede 1989 */
device.option_add("sprite", BBC_SPRITE); /* Logotron Sprite Board */
device.option_add_internal("cfa3000opt", CFA3000_OPT);/* Henson CFA 3000 Option Board */
device.option_add_internal("cisco", BBC_CISCO); /* Cisco Terminal */
}
void bbcm_1mhzbus_devices(device_slot_interface &device)
@ -174,13 +176,14 @@ void bbcm_1mhzbus_devices(device_slot_interface &device)
//device.option_add("teletext", BBC_TELETEXT); /* Acorn ANE01 Teletext Adapter */
device.option_add("ieee488", BBC_IEEE488); /* Acorn ANK01 IEEE488 Interface */
device.option_add("awhd", BBC_AWHD); /* Acorn Winchester Disc */
device.option_add("barrybox", BBC_BARRYBOX); /* The Barry-Box */
device.option_add("24bbc", BBC_24BBC); /* Sprow 24bBC/RAM Disc */
device.option_add("2ndserial", BBC_2NDSERIAL); /* Sprow 2nd Serial Port */
device.option_add("beebide", BBC_BEEBIDE); /* Sprow BeebIDE 16-bit */
device.option_add("ide8", BBC_IDE8); /* RetroClinic BBC 8-bit IDE */
device.option_add("b488", BBC_B488); /* Aries B488 */
//device.option_add("videodig", BBC_VIDEODIG); /* Video Digitiser (RH Electronics) */
device.option_add("emrmidi", BBC_EMRMIDI); /* EMR Midi Interface */
device.option_add("emrmidi", BBC_EMRMIDI); /* EMR MIDI Interface */
//device.option_add("procyon", BBC_PROCYON); /* CST Procyon IEEE Interface */
device.option_add("m2000", BBC_M2000); /* Hybrid Music 2000 Interface */
device.option_add("m3000", BBC_M3000); /* Hybrid Music 3000 Expander */

View File

@ -116,7 +116,7 @@ public:
void nmi_w(int state) { m_nmi_handler(state); }
protected:
// device-level overrides
// device_t overrides
virtual void device_start() override;
device_bbc_1mhzbus_interface *m_card;
@ -140,7 +140,7 @@ public:
protected:
device_bbc_1mhzbus_interface(const machine_config &mconfig, device_t &device);
bbc_1mhzbus_slot_device *m_slot;
bbc_1mhzbus_slot_device *const m_slot;
};

View File

@ -0,0 +1,101 @@
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
/**********************************************************************
The Barry-Box from BML Electronics
Use with Barry-Box ROM.
**********************************************************************/
#include "emu.h"
#include "barrybox.h"
#include "sound/dac.h"
#include "speaker.h"
namespace {
class bbc_barrybox_device : public device_t, public device_bbc_1mhzbus_interface
{
public:
static constexpr feature_type unemulated_features() { return feature::MICROPHONE; }
bbc_barrybox_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, BBC_BARRYBOX, tag, owner, clock)
, device_bbc_1mhzbus_interface(mconfig, *this)
, m_dac(*this,"dac")
{
}
protected:
// device_t overrides
virtual void device_start() override;
// optional information overrides
virtual void device_add_mconfig(machine_config &config) override;
virtual uint8_t jim_r(offs_t offset) override;
virtual void jim_w(offs_t offset, uint8_t data) override;
private:
required_device<dac_byte_interface> m_dac;
};
//-------------------------------------------------
// device_add_mconfig - add device configuration
//-------------------------------------------------
void bbc_barrybox_device::device_add_mconfig(machine_config &config)
{
SPEAKER(config, "speaker").front_center();
ZN428E(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5);
// TODO: ZN449E ADC
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void bbc_barrybox_device::device_start()
{
}
//**************************************************************************
// IMPLEMENTATION
//**************************************************************************
uint8_t bbc_barrybox_device::jim_r(offs_t offset)
{
uint8_t data = 0x00;
if (offset & 0x01)
{
// ADC busy?
}
if (offset & 0x04)
{
//data = m_adc->read();
}
return data;
}
void bbc_barrybox_device::jim_w(offs_t offset, uint8_t data)
{
if (offset & 0x02)
{
m_dac->write(data);
}
}
} // anonymous namespace
DEFINE_DEVICE_TYPE_PRIVATE(BBC_BARRYBOX, device_bbc_1mhzbus_interface, bbc_barrybox_device, "bbc_barrybox", "The Barry-Box");

View File

@ -0,0 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
#ifndef MAME_BUS_BBC_1MHZBUS_BARRYBOX_H
#define MAME_BUS_BBC_1MHZBUS_BARRYBOX_H
#include "1mhzbus.h"
DECLARE_DEVICE_TYPE(BBC_BARRYBOX, device_bbc_1mhzbus_interface);
#endif // MAME_BUS_BBC_1MHZBUS_BARRYBOX_H