mirror of
https://github.com/holub/mame
synced 2025-07-04 01:18:59 +03:00
bbcmaiv: Added internal modem port, with Acorn AIV SCSI Host Adaptor.
This commit is contained in:
parent
79221dd5f9
commit
417176a102
@ -456,6 +456,21 @@ if (BUSES["BBC_JOYPORT"]~=null) then
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------
|
||||||
|
--
|
||||||
|
--@src/devices/bus/bbc/modem/modem.h,BUSES["BBC_MODEM"] = true
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
if (BUSES["BBC_MODEM"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/bus/bbc/modem/modem.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/bbc/modem/modem.h",
|
||||||
|
MAME_DIR .. "src/devices/bus/bbc/modem/scsiaiv.cpp",
|
||||||
|
MAME_DIR .. "src/devices/bus/bbc/modem/scsiaiv.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
--
|
--
|
||||||
--@src/devices/bus/bbc/1mhzbus/1mhzbus.h,BUSES["BBC_1MHZBUS"] = true
|
--@src/devices/bus/bbc/1mhzbus/1mhzbus.h,BUSES["BBC_1MHZBUS"] = true
|
||||||
|
@ -768,6 +768,7 @@ BUSES["BBC_CART"] = true
|
|||||||
BUSES["BBC_EXP"] = true
|
BUSES["BBC_EXP"] = true
|
||||||
BUSES["BBC_INTERNAL"] = true
|
BUSES["BBC_INTERNAL"] = true
|
||||||
BUSES["BBC_JOYPORT"] = true
|
BUSES["BBC_JOYPORT"] = true
|
||||||
|
BUSES["BBC_MODEM"] = true
|
||||||
BUSES["BBC_1MHZBUS"] = true
|
BUSES["BBC_1MHZBUS"] = true
|
||||||
BUSES["BBC_TUBE"] = true
|
BUSES["BBC_TUBE"] = true
|
||||||
BUSES["BBC_USERPORT"] = true
|
BUSES["BBC_USERPORT"] = true
|
||||||
|
102
src/devices/bus/bbc/modem/modem.cpp
Normal file
102
src/devices/bus/bbc/modem/modem.cpp
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Nigel Barnes
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
BBC Master Internal Modem port
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "modem.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(BBC_MODEM_SLOT, bbc_modem_slot_device, "bbc_modem_slot", "BBC Master Internal Modem port")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE BBC_MODEM PORT INTERFACE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_bbc_modem_interface - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
device_bbc_modem_interface::device_bbc_modem_interface(const machine_config &mconfig, device_t &device) :
|
||||||
|
device_interface(device, "bbcmodem")
|
||||||
|
{
|
||||||
|
m_slot = dynamic_cast<bbc_modem_slot_device *>(device.owner());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// bbc_modem_slot_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
bbc_modem_slot_device::bbc_modem_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, BBC_MODEM_SLOT, tag, owner, clock)
|
||||||
|
, device_single_card_slot_interface<device_bbc_modem_interface>(mconfig, *this)
|
||||||
|
, m_card(nullptr)
|
||||||
|
, m_irq_handler(*this)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void bbc_modem_slot_device::device_start()
|
||||||
|
{
|
||||||
|
m_card = get_card_device();
|
||||||
|
|
||||||
|
// resolve callbacks
|
||||||
|
m_irq_handler.resolve_safe();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// read
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
uint8_t bbc_modem_slot_device::read(offs_t offset)
|
||||||
|
{
|
||||||
|
if (m_card)
|
||||||
|
return m_card->read(offset & 0x0f);
|
||||||
|
else
|
||||||
|
return 0xfe;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// write
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void bbc_modem_slot_device::write(offs_t offset, uint8_t data)
|
||||||
|
{
|
||||||
|
if (m_card)
|
||||||
|
m_card->write(offset & 0x0f, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// SLOT_INTERFACE( bbcm_modem_devices )
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// slot devices
|
||||||
|
#include "scsiaiv.h"
|
||||||
|
|
||||||
|
|
||||||
|
void bbcm_modem_devices(device_slot_interface &device)
|
||||||
|
{
|
||||||
|
//device.option_add("modem", BBC_MODEM); /* Beebug Master Modem */
|
||||||
|
device.option_add("scsiaiv", BBC_SCSIAIV); /* Acorn AIV SCSI Host Adaptor */
|
||||||
|
//device.option_add("vp415", BBC_VP415); /* Philips VP415 */
|
||||||
|
}
|
105
src/devices/bus/bbc/modem/modem.h
Normal file
105
src/devices/bus/bbc/modem/modem.h
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Nigel Barnes
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
BBC Master Internal Modem port
|
||||||
|
|
||||||
|
**********************************************************************
|
||||||
|
|
||||||
|
Pinout:
|
||||||
|
|
||||||
|
1 NIRQ
|
||||||
|
2 NRST
|
||||||
|
3 BD0
|
||||||
|
4 BD1
|
||||||
|
5 BD2
|
||||||
|
6 BD3
|
||||||
|
7 BD4
|
||||||
|
8 BD5
|
||||||
|
9 BD6
|
||||||
|
10 BD7
|
||||||
|
11 MODEM
|
||||||
|
12 A0
|
||||||
|
13 A1
|
||||||
|
14 A2
|
||||||
|
15 A3
|
||||||
|
16 1MHzE
|
||||||
|
17 R/W
|
||||||
|
18 +5V
|
||||||
|
19 -5V
|
||||||
|
20 0V
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_BBC_MODEM_MODEM_H
|
||||||
|
#define MAME_BUS_BBC_MODEM_MODEM_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// ======================> bbc_modem_slot_device
|
||||||
|
|
||||||
|
class device_bbc_modem_interface;
|
||||||
|
|
||||||
|
class bbc_modem_slot_device : public device_t, public device_single_card_slot_interface<device_bbc_modem_interface>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
template <typename T>
|
||||||
|
bbc_modem_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock, T &&slot_options, const char *default_option)
|
||||||
|
: bbc_modem_slot_device(mconfig, tag, owner, clock)
|
||||||
|
{
|
||||||
|
option_reset();
|
||||||
|
slot_options(*this);
|
||||||
|
set_default_option(default_option);
|
||||||
|
set_fixed(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bbc_modem_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
|
||||||
|
|
||||||
|
// callbacks
|
||||||
|
auto irq_handler() { return m_irq_handler.bind(); }
|
||||||
|
|
||||||
|
virtual uint8_t read(offs_t offset);
|
||||||
|
virtual void write(offs_t offset, uint8_t data);
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_handler(state); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
device_bbc_modem_interface *m_card;
|
||||||
|
|
||||||
|
private:
|
||||||
|
devcb_write_line m_irq_handler;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// ======================> device_bbc_modem_interface
|
||||||
|
|
||||||
|
class device_bbc_modem_interface : public device_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual uint8_t read(offs_t offset) { return 0xff; }
|
||||||
|
virtual void write(offs_t offset, uint8_t data) { }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
device_bbc_modem_interface(const machine_config &mconfig, device_t &device);
|
||||||
|
|
||||||
|
bbc_modem_slot_device *m_slot;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
DECLARE_DEVICE_TYPE(BBC_MODEM_SLOT, bbc_modem_slot_device)
|
||||||
|
|
||||||
|
void bbcm_modem_devices(device_slot_interface &device);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MAME_BUS_BBC_MODEM_MODEM_H
|
142
src/devices/bus/bbc/modem/scsiaiv.cpp
Normal file
142
src/devices/bus/bbc/modem/scsiaiv.cpp
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Nigel Barnes
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Acorn AIV SCSI Host Adaptor
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "scsiaiv.h"
|
||||||
|
#include "machine/nscsi_bus.h"
|
||||||
|
#include "bus/nscsi/devices.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// DEVICE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(BBC_SCSIAIV, bbc_scsiaiv_device, "bbc_scsiaiv", "Acorn AIV SCSI Host Adaptor");
|
||||||
|
//DEFINE_DEVICE_TYPE(BBC_VP415, bbc_vp415_device, "bbc_vp415", "BBC Philips VP415");
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_add_mconfig - add device configuration
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void bbc_scsiaiv_device::device_add_mconfig(machine_config& config)
|
||||||
|
{
|
||||||
|
NSCSI_BUS(config, "scsi");
|
||||||
|
NSCSI_CONNECTOR(config, "scsi:0", default_scsi_devices, nullptr);
|
||||||
|
NSCSI_CONNECTOR(config, "scsi:7", default_scsi_devices, "scsicb", true)
|
||||||
|
.option_add_internal("scsicb", NSCSI_CB)
|
||||||
|
.machine_config([this](device_t* device) {
|
||||||
|
downcast<nscsi_callback_device&>(*device).bsy_callback().set(*this, FUNC(bbc_scsiaiv_device::bsy_w));
|
||||||
|
downcast<nscsi_callback_device&>(*device).req_callback().set(*this, FUNC(bbc_scsiaiv_device::req_w));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//void bbc_vp415_device::device_add_mconfig(machine_config& config)
|
||||||
|
//{
|
||||||
|
// bbc_scsiaiv_device::device_add_mconfig(config);
|
||||||
|
//
|
||||||
|
// /* Philips VP415 */
|
||||||
|
// subdevice<nscsi_connector>("scsi:0")->set_default_option("vp415");
|
||||||
|
// subdevice<nscsi_connector>("scsi:0")->set_fixed(true);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// LIVE DEVICE
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// bbc_scsiaiv_device - constructor
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
bbc_scsiaiv_device::bbc_scsiaiv_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, type, tag, owner, clock)
|
||||||
|
, device_bbc_modem_interface(mconfig, *this)
|
||||||
|
, m_scsi(*this, "scsi:7:scsicb")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bbc_scsiaiv_device::bbc_scsiaiv_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock)
|
||||||
|
: bbc_scsiaiv_device(mconfig, BBC_SCSIAIV, tag, owner, clock)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//bbc_vp415_device::bbc_vp415_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock)
|
||||||
|
// : bbc_scsiaiv_device(mconfig, BBC_VP415, tag, owner, clock)
|
||||||
|
//{
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------
|
||||||
|
// device_start - device-specific startup
|
||||||
|
//-------------------------------------------------
|
||||||
|
|
||||||
|
void bbc_scsiaiv_device::device_start()
|
||||||
|
{
|
||||||
|
/* register for save states */
|
||||||
|
save_item(NAME(m_irq_enable));
|
||||||
|
save_item(NAME(m_irq_state));
|
||||||
|
}
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// IMPLEMENTATION
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
uint8_t bbc_scsiaiv_device::read(offs_t offset)
|
||||||
|
{
|
||||||
|
uint8_t data = 0xff;
|
||||||
|
|
||||||
|
switch (offset & 0x07)
|
||||||
|
{
|
||||||
|
case 0x00:
|
||||||
|
data = m_scsi->read();
|
||||||
|
m_scsi->ack_w(1);
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
data = (m_scsi->msg_r() << 0)
|
||||||
|
| (m_scsi->bsy_r() << 1)
|
||||||
|
| (m_scsi->rst_r() << 2)
|
||||||
|
| (!m_irq_state << 4)
|
||||||
|
| (m_scsi->req_r() << 5)
|
||||||
|
| (m_scsi->io_r() << 6)
|
||||||
|
| (m_scsi->cd_r() << 7);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void bbc_scsiaiv_device::write(offs_t offset, uint8_t data)
|
||||||
|
{
|
||||||
|
switch (offset & 0x07)
|
||||||
|
{
|
||||||
|
case 0x00:
|
||||||
|
m_scsi->write(~data);
|
||||||
|
m_scsi->ack_w(1);
|
||||||
|
break;
|
||||||
|
case 0x02:
|
||||||
|
m_scsi->sel_w(1);
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
m_irq_enable = BIT(data, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER(bbc_scsiaiv_device::bsy_w)
|
||||||
|
{
|
||||||
|
m_scsi->sel_w(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE_LINE_MEMBER(bbc_scsiaiv_device::req_w)
|
||||||
|
{
|
||||||
|
m_scsi->ack_w(0);
|
||||||
|
|
||||||
|
m_irq_state = (m_irq_enable && !state) ? 0 : 1;
|
||||||
|
m_slot->irq_w(m_irq_state ? CLEAR_LINE : ASSERT_LINE);
|
||||||
|
}
|
71
src/devices/bus/bbc/modem/scsiaiv.h
Normal file
71
src/devices/bus/bbc/modem/scsiaiv.h
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Nigel Barnes
|
||||||
|
/**********************************************************************
|
||||||
|
|
||||||
|
Acorn AIV SCSI Host Adaptor
|
||||||
|
|
||||||
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MAME_BUS_BBC_1MHZBUS_SCSIAIV_H
|
||||||
|
#define MAME_BUS_BBC_1MHZBUS_SCSIAIV_H
|
||||||
|
|
||||||
|
#include "modem.h"
|
||||||
|
#include "machine/nscsi_cb.h"
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
class bbc_scsiaiv_device:
|
||||||
|
public device_t,
|
||||||
|
public device_bbc_modem_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// construction/destruction
|
||||||
|
bbc_scsiaiv_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(bsy_w);
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(req_w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bbc_scsiaiv_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock);
|
||||||
|
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
// optional information overrides
|
||||||
|
virtual void device_add_mconfig(machine_config& config) override;
|
||||||
|
|
||||||
|
virtual uint8_t read(offs_t offset) override;
|
||||||
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<nscsi_callback_device> m_scsi;
|
||||||
|
|
||||||
|
int m_irq_enable;
|
||||||
|
int m_irq_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// ======================> bbc_vp415_device
|
||||||
|
|
||||||
|
//class bbc_vp415_device : public bbc_scsiaiv_device
|
||||||
|
//{
|
||||||
|
//public:
|
||||||
|
// // construction/destruction
|
||||||
|
// bbc_vp415_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||||
|
//
|
||||||
|
//protected:
|
||||||
|
// // optional information overrides
|
||||||
|
// virtual void device_add_mconfig(machine_config& config) override;
|
||||||
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
// device type definition
|
||||||
|
DECLARE_DEVICE_TYPE(BBC_SCSIAIV, bbc_scsiaiv_device);
|
||||||
|
//DECLARE_DEVICE_TYPE(BBC_VP415, bbc_vp415_device);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* MAME_BUS_BBC_1MHZBUS_SCSIAIV_H */
|
@ -250,7 +250,7 @@ void bbcm_state::bbcm_bankdev(address_map &map)
|
|||||||
map(0x023c, 0x023f).mirror(0x400).r(FUNC(bbc_state::bbc_fe_r)); // fe3c-fe3f INTON
|
map(0x023c, 0x023f).mirror(0x400).r(FUNC(bbc_state::bbc_fe_r)); // fe3c-fe3f INTON
|
||||||
map(0x0240, 0x025f).mirror(0x400).m(m_via6522_0, FUNC(via6522_device::map)); // fe40-fe5f 6522 VIA SYSTEM VIA
|
map(0x0240, 0x025f).mirror(0x400).m(m_via6522_0, FUNC(via6522_device::map)); // fe40-fe5f 6522 VIA SYSTEM VIA
|
||||||
map(0x0260, 0x027f).mirror(0x400).m(m_via6522_1, FUNC(via6522_device::map)); // fe60-fe7f 6522 VIA USER VIA
|
map(0x0260, 0x027f).mirror(0x400).m(m_via6522_1, FUNC(via6522_device::map)); // fe60-fe7f 6522 VIA USER VIA
|
||||||
map(0x0280, 0x029f).mirror(0x400).r(FUNC(bbc_state::bbc_fe_r)); // fe80-fe9f Int. Modem Int. Modem
|
map(0x0280, 0x029f).mirror(0x400).rw(m_modem, FUNC(bbc_modem_slot_device::read), FUNC(bbc_modem_slot_device::write)); // fe80-fe9f Int. Modem Int. Modem
|
||||||
map(0x02a0, 0x02bf).mirror(0x400).rw(m_adlc, FUNC(mc6854_device::read), FUNC(mc6854_device::write)); // fea0-febf 68B54 ADLC ECONET controller
|
map(0x02a0, 0x02bf).mirror(0x400).rw(m_adlc, FUNC(mc6854_device::read), FUNC(mc6854_device::write)); // fea0-febf 68B54 ADLC ECONET controller
|
||||||
map(0x02e0, 0x02ff).mirror(0x400).rw(FUNC(bbc_state::bbcm_tube_r), FUNC(bbc_state::bbcm_tube_w)); // fee0-feff Tube ULA Tube system interface
|
map(0x02e0, 0x02ff).mirror(0x400).rw(FUNC(bbc_state::bbcm_tube_r), FUNC(bbc_state::bbcm_tube_w)); // fee0-feff Tube ULA Tube system interface
|
||||||
/* ACCCON TST bit - hardware test */
|
/* ACCCON TST bit - hardware test */
|
||||||
@ -1510,6 +1510,10 @@ void bbcm_state::bbcm(machine_config &config)
|
|||||||
m_internal->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<8>));
|
m_internal->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<8>));
|
||||||
m_internal->nmi_handler().set(FUNC(bbc_state::bus_nmi_w));
|
m_internal->nmi_handler().set(FUNC(bbc_state::bus_nmi_w));
|
||||||
|
|
||||||
|
/* internal modem port */
|
||||||
|
BBC_MODEM_SLOT(config, m_modem, 16_MHz_XTAL / 16, bbcm_modem_devices, nullptr);
|
||||||
|
m_modem->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<9>));
|
||||||
|
|
||||||
/* software lists */
|
/* software lists */
|
||||||
SOFTWARE_LIST(config, "cass_ls_m").set_original("bbcm_cass");
|
SOFTWARE_LIST(config, "cass_ls_m").set_original("bbcm_cass");
|
||||||
SOFTWARE_LIST(config, "flop_ls_m").set_original("bbcm_flop");
|
SOFTWARE_LIST(config, "flop_ls_m").set_original("bbcm_flop");
|
||||||
@ -1538,7 +1542,9 @@ void bbcm_state::bbcmaiv(machine_config &config)
|
|||||||
m_intube->set_default_option("65c102");
|
m_intube->set_default_option("65c102");
|
||||||
m_intube->set_fixed(true);
|
m_intube->set_fixed(true);
|
||||||
|
|
||||||
/* Add Philips VP415 Laserdisc player */
|
/* Philips VP415 Laserdisc player */
|
||||||
|
m_modem->set_default_option("scsiaiv");
|
||||||
|
m_modem->set_fixed(true);
|
||||||
|
|
||||||
/* Acorn Tracker Ball */
|
/* Acorn Tracker Ball */
|
||||||
m_userport->set_default_option("tracker");
|
m_userport->set_default_option("tracker");
|
||||||
@ -1587,6 +1593,7 @@ void bbcm_state::bbcmet(machine_config &config)
|
|||||||
config.device_remove("extube");
|
config.device_remove("extube");
|
||||||
config.device_remove("1mhzbus");
|
config.device_remove("1mhzbus");
|
||||||
config.device_remove("userport");
|
config.device_remove("userport");
|
||||||
|
config.device_remove("modem");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1765,6 +1772,7 @@ void bbcm_state::bbcmc(machine_config &config)
|
|||||||
config.device_remove("extube");
|
config.device_remove("extube");
|
||||||
config.device_remove("userport");
|
config.device_remove("userport");
|
||||||
config.device_remove("internal");
|
config.device_remove("internal");
|
||||||
|
config.device_remove("modem");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "bus/bbc/fdc/fdc.h"
|
#include "bus/bbc/fdc/fdc.h"
|
||||||
#include "bus/bbc/analogue/analogue.h"
|
#include "bus/bbc/analogue/analogue.h"
|
||||||
#include "bus/bbc/1mhzbus/1mhzbus.h"
|
#include "bus/bbc/1mhzbus/1mhzbus.h"
|
||||||
|
#include "bus/bbc/modem/modem.h"
|
||||||
#include "bus/bbc/internal/internal.h"
|
#include "bus/bbc/internal/internal.h"
|
||||||
#include "bus/bbc/tube/tube.h"
|
#include "bus/bbc/tube/tube.h"
|
||||||
#include "bus/bbc/userport/userport.h"
|
#include "bus/bbc/userport/userport.h"
|
||||||
@ -84,6 +85,7 @@ public:
|
|||||||
, m_intube(*this, "intube")
|
, m_intube(*this, "intube")
|
||||||
, m_extube(*this, "extube")
|
, m_extube(*this, "extube")
|
||||||
, m_1mhzbus(*this, "1mhzbus")
|
, m_1mhzbus(*this, "1mhzbus")
|
||||||
|
, m_modem(*this, "modem")
|
||||||
, m_userport(*this, "userport")
|
, m_userport(*this, "userport")
|
||||||
, m_internal(*this, "internal")
|
, m_internal(*this, "internal")
|
||||||
, m_exp(*this, "exp")
|
, m_exp(*this, "exp")
|
||||||
@ -243,6 +245,7 @@ protected:
|
|||||||
optional_device<bbc_tube_slot_device> m_intube;
|
optional_device<bbc_tube_slot_device> m_intube;
|
||||||
optional_device<bbc_tube_slot_device> m_extube;
|
optional_device<bbc_tube_slot_device> m_extube;
|
||||||
optional_device<bbc_1mhzbus_slot_device> m_1mhzbus;
|
optional_device<bbc_1mhzbus_slot_device> m_1mhzbus;
|
||||||
|
optional_device<bbc_modem_slot_device> m_modem;
|
||||||
optional_device<bbc_userport_slot_device> m_userport;
|
optional_device<bbc_userport_slot_device> m_userport;
|
||||||
optional_device<bbc_internal_slot_device> m_internal;
|
optional_device<bbc_internal_slot_device> m_internal;
|
||||||
optional_device<bbc_exp_slot_device> m_exp;
|
optional_device<bbc_exp_slot_device> m_exp;
|
||||||
|
Loading…
Reference in New Issue
Block a user