bbc_cumana68k: Remove trampolines and cleanup (nw)

This commit is contained in:
Nigel Barnes 2019-11-16 16:20:21 +00:00
parent bb68893deb
commit 31ce39b9a0
3 changed files with 160 additions and 189 deletions

View File

@ -27,19 +27,17 @@ DEFINE_DEVICE_TYPE(BBC_CUMANA68K, bbc_cumana68k_device, "bbc_cumana68k", "Cumana
void bbc_cumana68k_device::cumana68k_mem(address_map &map) void bbc_cumana68k_device::cumana68k_mem(address_map &map)
{ {
map.unmap_value_high(); map(0x000000, 0x00ffff).mirror(0x70000).rw(FUNC(bbc_cumana68k_device::mem6502_r), FUNC(bbc_cumana68k_device::mem6502_w));
map(0x000000, 0x00ffff).rw(FUNC(bbc_cumana68k_device::dma_r), FUNC(bbc_cumana68k_device::dma_w)); map(0x080000, 0x0fffff).ram();
map(0x010000, 0x0fffff).ram();
} }
//------------------------------------------------- //-------------------------------------------------
// SLOT_INTERFACE( os9_floppies ) // FLOPPY_FORMATS( floppy_formats )
//------------------------------------------------- //-------------------------------------------------
static void os9_floppies(device_slot_interface &device) FLOPPY_FORMATS_MEMBER(bbc_cumana68k_device::floppy_formats)
{ FLOPPY_OS9_FORMAT
device.option_add("525qd", FLOPPY_525_QD); FLOPPY_FORMATS_END
}
//------------------------------------------------- //-------------------------------------------------
// ROM( cumana68k ) // ROM( cumana68k )
@ -59,37 +57,43 @@ void bbc_cumana68k_device::device_add_mconfig(machine_config &config)
/* basic machine hardware */ /* basic machine hardware */
M68008(config, m_m68008, 16_MHz_XTAL / 2); M68008(config, m_m68008, 16_MHz_XTAL / 2);
m_m68008->set_addrmap(AS_PROGRAM, &bbc_cumana68k_device::cumana68k_mem); m_m68008->set_addrmap(AS_PROGRAM, &bbc_cumana68k_device::cumana68k_mem);
//m_m68008->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bbc_cumana68k_device::irq_callback), this));
/* fdc */ /* fdc */
WD2797(config, m_fdc, 16_MHz_XTAL / 16); WD2797(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(m_pia_rtc, FUNC(pia6821_device::cb1_w)); m_fdc->intrq_wr_callback().set(m_pia_rtc, FUNC(pia6821_device::cb1_w));
m_fdc->drq_wr_callback().set(FUNC(bbc_cumana68k_device::drq_w)); m_fdc->drq_wr_callback().set(m_pia_sasi, FUNC(pia6821_device::pb6_w));
m_fdc->drq_wr_callback().append(DEVICE_SELF_OWNER, FUNC(bbc_internal_slot_device::nmi_w));
m_fdc->set_force_ready(true); m_fdc->set_force_ready(true);
FLOPPY_CONNECTOR(config, m_floppy0, os9_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true); FLOPPY_CONNECTOR(config, m_floppy[0], "525qd", FLOPPY_525_QD, true, bbc_cumana68k_device::floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, m_floppy1, os9_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true); FLOPPY_CONNECTOR(config, m_floppy[1], "525qd", FLOPPY_525_QD, true, bbc_cumana68k_device::floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, m_floppy[2], "525qd", FLOPPY_525_QD, false, bbc_cumana68k_device::floppy_formats).enable_sound(true);
FLOPPY_CONNECTOR(config, m_floppy[3], "525qd", FLOPPY_525_QD, false, bbc_cumana68k_device::floppy_formats).enable_sound(true);
/* scsi */ /* sasi */
//MCFG_DEVICE_ADD("sasi", SCSI_PORT, 0) SCSI_PORT(config, m_sasibus);
//MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in") m_sasibus->set_data_input_buffer(m_sasi_data_in);
//MCFG_SCSI_SEL_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_sel)) m_sasibus->sel_handler().set(m_pia_sasi, FUNC(pia6821_device::pb1_w));
//MCFG_SCSI_IO_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_io)) m_sasibus->io_handler().set(m_pia_sasi, FUNC(pia6821_device::pb2_w));
//MCFG_SCSI_BSY_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_bsy)) m_sasibus->bsy_handler().set(m_pia_sasi, FUNC(pia6821_device::pb3_w));
//MCFG_SCSI_CD_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_cd)) m_sasibus->cd_handler().set(m_pia_sasi, FUNC(pia6821_device::pb4_w));
//MCFG_SCSI_MSG_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_msg)) m_sasibus->msg_handler().set(m_pia_sasi, FUNC(pia6821_device::pb5_w));
//MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, bbc_cumana68k_device, write_sasi_req)) m_sasibus->req_handler().set(m_pia_sasi, FUNC(pia6821_device::pb7_w));
//MCFG_SCSI_ACK_HANDLER(WRITELINE("pia_sasi", pia6821_device, ca2_w)) m_sasibus->req_handler().append(m_pia_sasi, FUNC(pia6821_device::ca1_w));
//MCFG_SCSIDEV_ADD("sasi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) m_sasibus->ack_handler().set(m_pia_sasi, FUNC(pia6821_device::ca2_w));
m_sasibus->set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
//MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", "sasi") OUTPUT_LATCH(config, m_sasi_data_out);
//MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0) m_sasibus->set_output_latch(*m_sasi_data_out);
INPUT_BUFFER(config, m_sasi_data_in);
PIA6821(config, m_pia_sasi, 0); PIA6821(config, m_pia_sasi, 0);
m_pia_sasi->readpa_handler().set(FUNC(bbc_cumana68k_device::pia_sasi_pa_r)); m_pia_sasi->readpa_handler().set(m_sasi_data_in, FUNC(input_buffer_device::bus_r));
m_pia_sasi->readpb_handler().set(FUNC(bbc_cumana68k_device::pia_sasi_pb_r)); m_pia_sasi->writepa_handler().set(m_sasi_data_out, FUNC(output_latch_device::bus_w));
m_pia_sasi->readcb1_handler().set(FUNC(bbc_cumana68k_device::pia_sasi_cb1_r)); m_pia_sasi->writepb_handler().set(FUNC(bbc_cumana68k_device::pia_sasi_pb_w));
//m_pia_sasi->cb2_handler().set(m_scsibus, FUNC(scsi_port_device::write_rst)); m_pia_sasi->readcb1_handler().set_constant(1); // tied to +5V
m_pia_sasi->cb2_handler().set(m_sasibus, FUNC(scsi_port_device::write_rst));
m_pia_sasi->irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>)); m_pia_sasi->irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
m_pia_sasi->irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>)); m_pia_sasi->irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<1>));
@ -97,11 +101,13 @@ void bbc_cumana68k_device::device_add_mconfig(machine_config &config)
m_pia_rtc->readpa_handler().set(m_rtc, FUNC(mc146818_device::read)); m_pia_rtc->readpa_handler().set(m_rtc, FUNC(mc146818_device::read));
m_pia_rtc->writepa_handler().set(m_rtc, FUNC(mc146818_device::write)); m_pia_rtc->writepa_handler().set(m_rtc, FUNC(mc146818_device::write));
m_pia_rtc->writepb_handler().set(FUNC(bbc_cumana68k_device::pia_rtc_pb_w)); m_pia_rtc->writepb_handler().set(FUNC(bbc_cumana68k_device::pia_rtc_pb_w));
//m_pia_rtc->cb2_handler().set(m_scsibus, FUNC(scsi_port_device::write_rst)); m_pia_rtc->ca2_handler().set(FUNC(bbc_cumana68k_device::rtc_ce_w));
m_pia_rtc->cb2_handler().set(FUNC(bbc_cumana68k_device::reset68008_w));
m_pia_rtc->irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<2>)); m_pia_rtc->irqa_handler().set(m_irqs, FUNC(input_merger_device::in_w<2>));
m_pia_rtc->irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<3>)); m_pia_rtc->irqb_handler().set(m_irqs, FUNC(input_merger_device::in_w<3>));
INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set(FUNC(bbc_cumana68k_device::intrq_w)); INPUT_MERGER_ANY_HIGH(config, m_irqs).output_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_internal_slot_device::irq_w));
m_irqs->output_handler().append_inputline(m_m68008, M68K_IRQ_2);
/* rtc */ /* rtc */
MC146818(config, m_rtc, 32.768_kHz_XTAL); MC146818(config, m_rtc, 32.768_kHz_XTAL);
@ -131,18 +137,16 @@ const tiny_rom_entry *bbc_cumana68k_device::device_rom_region() const
bbc_cumana68k_device::bbc_cumana68k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) bbc_cumana68k_device::bbc_cumana68k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, BBC_CUMANA68K, tag, owner, clock) : device_t(mconfig, BBC_CUMANA68K, tag, owner, clock)
, device_bbc_internal_interface(mconfig, *this) , device_bbc_internal_interface(mconfig, *this)
, m_maincpu(*this, ":maincpu")
, m_m68008(*this, "m68008") , m_m68008(*this, "m68008")
, m_pia_sasi(*this, "pia_sasi") , m_pia_sasi(*this, "pia_sasi")
, m_pia_rtc(*this, "pia_rtc") , m_pia_rtc(*this, "pia_rtc")
, m_irqs(*this, "irqs") , m_irqs(*this, "irqs")
, m_rtc(*this, "rtc") , m_rtc(*this, "rtc")
, m_fdc(*this, "wd2797") , m_fdc(*this, "wd2797")
, m_floppy0(*this, "wd2797:0") , m_floppy(*this, "wd2797:%u", 0)
, m_floppy1(*this, "wd2797:1") , m_sasibus(*this, "sasibus")
//, m_scsibus(*this, "sasi") , m_sasi_data_out(*this, "sasi_data_out")
//, m_scsi_data_out(*this, "scsi_data_out") , m_sasi_data_in(*this, "sasi_data_in")
//, m_scsi_data_in(*this, "scsi_data_in")
{ {
} }
@ -151,27 +155,28 @@ bbc_cumana68k_device::bbc_cumana68k_device(const machine_config &mconfig, const
//------------------------------------------------- //-------------------------------------------------
void bbc_cumana68k_device::device_start() void bbc_cumana68k_device::device_start()
{
}
//-------------------------------------------------
// device_reset - device-specific reset
//-------------------------------------------------
void bbc_cumana68k_device::device_reset()
{ {
address_space &program = m_maincpu->space(AS_PROGRAM); address_space &program = m_maincpu->space(AS_PROGRAM);
program.install_readwrite_handler(0xfc40, 0xfc43, read8sm_delegate(*m_pia_sasi, FUNC(pia6821_device::read)), write8sm_delegate(*m_pia_sasi, FUNC(pia6821_device::write))); program.install_readwrite_handler(0xfc40, 0xfc43, read8sm_delegate(*m_pia_sasi, FUNC(pia6821_device::read)), write8sm_delegate(*m_pia_sasi, FUNC(pia6821_device::write)));
program.install_readwrite_handler(0xfc44, 0xfc47, read8sm_delegate(*m_pia_rtc, FUNC(pia6821_device::read)), write8sm_delegate(*m_pia_rtc, FUNC(pia6821_device::write))); program.install_readwrite_handler(0xfc44, 0xfc47, read8sm_delegate(*m_pia_rtc, FUNC(pia6821_device::read)), write8sm_delegate(*m_pia_rtc, FUNC(pia6821_device::write)));
program.install_readwrite_handler(0xfc48, 0xfc4b, read8sm_delegate(*m_fdc, FUNC(wd2797_device::read)), write8sm_delegate(*m_fdc, FUNC(wd2797_device::write))); program.install_readwrite_handler(0xfc48, 0xfc4b, read8sm_delegate(*m_fdc, FUNC(wd2797_device::read)), write8sm_delegate(*m_fdc, FUNC(wd2797_device::write)));
program.install_write_handler(0xfc4c, 0xfc4f, write8sm_delegate(*this, FUNC(bbc_cumana68k_device::fsel_w)));
/* register for save states */
save_item(NAME(m_mc146818_as));
save_item(NAME(m_mc146818_ds));
save_item(NAME(m_mc146818_rw));
save_item(NAME(m_masknmi));
} }
//-------------------------------------------------
// device_reset_after_children - reset after child devices
//-------------------------------------------------
void bbc_cumana68k_device::device_reset_after_children() void bbc_cumana68k_device::device_reset_after_children()
{ {
m_bEnabled = false; /* Pull up resistor R12 makes CB2 high when it's configured as an input, so set CB2 as output and high to compensate */
// Pull up resistor R12 makes CB2 high when it's configured as an input, so set CB2 as output and high to compensate
m_pia_rtc->write(0x03, 0x3c); m_pia_rtc->write(0x03, 0x3c);
} }
@ -182,149 +187,118 @@ void bbc_cumana68k_device::device_reset_after_children()
WRITE_LINE_MEMBER(bbc_cumana68k_device::reset68008_w) WRITE_LINE_MEMBER(bbc_cumana68k_device::reset68008_w)
{ {
if (!state) m_bEnabled = true;
m_m68008->set_input_line(INPUT_LINE_HALT, state); m_m68008->set_input_line(INPUT_LINE_HALT, state);
m_m68008->set_input_line(INPUT_LINE_RESET, state); m_m68008->set_input_line(INPUT_LINE_RESET, state);
} }
READ8_MEMBER(bbc_cumana68k_device::dma_r) void bbc_cumana68k_device::fsel_w(offs_t offset, uint8_t data)
{ {
address_space &program = m_maincpu->space(AS_PROGRAM); /* TODO: what does FSEL actually do? seems to affect the floppy FCLK */
//logerror("fsel_w %02x\n", data);
if (m_bEnabled)
{
if (offset < 0x1000)
return program.read_byte(offset + 0x2000);
else if (offset > 0x1fff && offset < 0x3000)
return program.read_byte(offset - 0x2000);
else
return program.read_byte(offset);
}
return 0xff;
} }
WRITE8_MEMBER(bbc_cumana68k_device::dma_w)
READ8_MEMBER(bbc_cumana68k_device::mem6502_r)
{
uint8_t data = 0xff;
address_space &program = m_maincpu->space(AS_PROGRAM);
switch (offset & 0xf000)
{
case 0x0000:
data = program.read_byte(offset | 0x2000);
break;
case 0x2000:
data = program.read_byte(offset & 0x0fff);
break;
default:
data = program.read_byte(offset);
break;
}
return data;
}
WRITE8_MEMBER(bbc_cumana68k_device::mem6502_w)
{ {
address_space &program = m_maincpu->space(AS_PROGRAM); address_space &program = m_maincpu->space(AS_PROGRAM);
if (m_bEnabled) switch (offset & 0xf000)
{ {
if (offset < 0x1000) case 0x0000:
program.write_byte(offset + 0x2000, data); program.write_byte(offset | 0x2000, data);
else if (offset > 0x1fff && offset < 0x3000) break;
program.write_byte(offset - 0x2000, data); case 0x2000:
else program.write_byte(offset & 0x0fff, data);
program.write_byte(offset, data); break;
default:
program.write_byte(offset, data);
break;
}
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::rtc_ce_w)
{
m_mc146818_ce = state;
mc146818_set();
}
void bbc_cumana68k_device::mc146818_set()
{
/* if chip enabled */
if (m_mc146818_ce)
{
/* if data select is set then access the data in the 146818 */
if (m_mc146818_ds)
{
if (m_mc146818_rw)
{
m_pia_rtc->set_a_input(m_rtc->read(1));
}
else
{
m_rtc->write(1, m_pia_rtc->a_output());
}
}
/* if address select is set then set the address in the 146818 */
if (m_mc146818_as)
{
m_rtc->write(0, m_pia_rtc->a_output());
}
} }
} }
WRITE8_MEMBER(bbc_cumana68k_device::pia_rtc_pb_w) WRITE8_MEMBER(bbc_cumana68k_device::pia_rtc_pb_w)
{ {
floppy_image_device *floppy = nullptr; /* bit 0, 1: drive select */
logerror("pia1_pb_w %02x\n", data); floppy_image_device *floppy = m_floppy[data & 0x03]->get_device();
// bit 0, 1: drive select
switch (data & 0x03)
{
case 0: floppy = m_floppy0->get_device(); break;
case 1: floppy = m_floppy1->get_device(); break;
}
m_fdc->set_floppy(floppy); m_fdc->set_floppy(floppy);
// bit 2: motor enable /* bit 2: motor enable */
if (floppy) if (floppy)
floppy->mon_w(BIT(data, 2)); floppy->mon_w(BIT(data, 2));
// bit 3: density /* bit 3: density */
m_fdc->dden_w(BIT(data, 3)); m_fdc->dden_w(BIT(data, 3));
// bit 4: enable precomp /* bit 4: enable precomp */
/* bit 5, 6, 7: rtc */
m_mc146818_as = BIT(data, 5);
m_mc146818_ds = BIT(data, 6);
m_mc146818_rw = BIT(data, 7);
mc146818_set();
} }
WRITE_LINE_MEMBER(bbc_cumana68k_device::intrq_w)
WRITE8_MEMBER(bbc_cumana68k_device::pia_sasi_pb_w)
{ {
//m_m68008->set_input_line_and_vector(M68K_IRQ_2, state ? ASSERT_LINE : CLEAR_LINE, M68K_INT_ACK_AUTOVECTOR); /* bit 0: masknmi */
m_m68008->set_input_line(M68K_IRQ_2, state); m_masknmi = BIT(data, 0);
m_slot->irq_w(state);
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::drq_w)
{
m_pia_sasi_pb &= ~0x40;
m_pia_sasi_pb |= state << 6;
//m_m68008->set_input_line(M68K_IRQ_7, state);
m_slot->nmi_w(!state);
}
IRQ_CALLBACK_MEMBER(bbc_cumana68k_device::irq_callback)
{
//m_m68008->set_input_line(M68K_IRQ_2, CLEAR_LINE);
// see https://github.com/mamedev/mame/commit/e39802db90860d6628c35265f7c78ce3534f5a53
return 0; //M68K_INT_ACK_AUTOVECTOR;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_sel)
{
m_pia_sasi_pb &= ~0x02;
m_pia_sasi_pb |= state << 1;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_io)
{
m_pia_sasi_pb &= ~0x04;
m_pia_sasi_pb |= state << 2;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_bsy)
{
m_pia_sasi_pb &= ~0x08;
m_pia_sasi_pb |= state << 3;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_cd)
{
m_pia_sasi_pb &= ~0x10;
m_pia_sasi_pb |= state << 4;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_msg)
{
m_pia_sasi_pb &= ~0x20;
m_pia_sasi_pb |= state << 5;
}
WRITE_LINE_MEMBER(bbc_cumana68k_device::write_sasi_req)
{
m_pia_sasi_pb &= ~0x40;
m_pia_sasi_pb |= state << 6;
m_pia_sasi->ca1_w(state);
}
READ8_MEMBER(bbc_cumana68k_device::pia_sasi_pa_r)
{
return 0; // m_scsi_data_in->read();
}
WRITE8_MEMBER(bbc_cumana68k_device::pia_sasi_pa_w)
{
//m_scsi_data_out->write(data);
}
READ8_MEMBER(bbc_cumana68k_device::pia_sasi_pb_r)
{
return m_pia_sasi_pb;
}
READ_LINE_MEMBER(bbc_cumana68k_device::pia_sasi_cb1_r)
{
// CB1 is tied to +5V
return 1;
} }

View File

@ -19,6 +19,7 @@
#include "machine/mc146818.h" #include "machine/mc146818.h"
#include "imagedev/floppy.h" #include "imagedev/floppy.h"
#include "machine/wd_fdc.h" #include "machine/wd_fdc.h"
#include "formats/os9_dsk.h"
#include "bus/scsi/scsi.h" #include "bus/scsi/scsi.h"
//************************************************************************** //**************************************************************************
@ -33,25 +34,17 @@ public:
// construction/destruction // construction/destruction
bbc_cumana68k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); bbc_cumana68k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE_LINE_MEMBER(write_sasi_sel);
DECLARE_WRITE_LINE_MEMBER(write_sasi_msg);
DECLARE_WRITE_LINE_MEMBER(write_sasi_bsy);
DECLARE_WRITE_LINE_MEMBER(write_sasi_req);
DECLARE_WRITE_LINE_MEMBER(write_sasi_io);
DECLARE_WRITE_LINE_MEMBER(write_sasi_cd);
DECLARE_READ8_MEMBER(pia_sasi_pa_r);
DECLARE_WRITE8_MEMBER(pia_sasi_pa_w);
DECLARE_READ8_MEMBER(pia_sasi_pb_r);
DECLARE_READ_LINE_MEMBER(pia_sasi_cb1_r);
DECLARE_WRITE8_MEMBER(pia_rtc_pb_w); DECLARE_WRITE8_MEMBER(pia_rtc_pb_w);
DECLARE_WRITE8_MEMBER(pia_sasi_pb_w);
DECLARE_READ8_MEMBER(dma_r); DECLARE_READ8_MEMBER(mem6502_r);
DECLARE_WRITE8_MEMBER(dma_w); DECLARE_WRITE8_MEMBER(mem6502_w);
DECLARE_FLOPPY_FORMATS(floppy_formats);
protected: protected:
// device-level overrides // device-level overrides
virtual void device_start() override; virtual void device_start() override;
virtual void device_reset() override;
virtual void device_reset_after_children() override; virtual void device_reset_after_children() override;
// optional information overrides // optional information overrides
@ -59,28 +52,31 @@ protected:
virtual const tiny_rom_entry *device_rom_region() const override; virtual const tiny_rom_entry *device_rom_region() const override;
private: private:
DECLARE_WRITE_LINE_MEMBER(intrq_w);
DECLARE_WRITE_LINE_MEMBER(drq_w);
DECLARE_WRITE_LINE_MEMBER(reset68008_w); DECLARE_WRITE_LINE_MEMBER(reset68008_w);
IRQ_CALLBACK_MEMBER(irq_callback); DECLARE_WRITE_LINE_MEMBER(rtc_ce_w);
required_device<cpu_device> m_maincpu;
required_device<m68000_base_device> m_m68008; required_device<m68000_base_device> m_m68008;
required_device<pia6821_device> m_pia_sasi; required_device<pia6821_device> m_pia_sasi;
required_device<pia6821_device> m_pia_rtc; required_device<pia6821_device> m_pia_rtc;
required_device<input_merger_device> m_irqs; required_device<input_merger_device> m_irqs;
required_device<mc146818_device> m_rtc; required_device<mc146818_device> m_rtc;
required_device<wd2797_device> m_fdc; required_device<wd2797_device> m_fdc;
required_device<floppy_connector> m_floppy0; required_device_array<floppy_connector, 4> m_floppy;
optional_device<floppy_connector> m_floppy1; required_device<scsi_port_device> m_sasibus;
//required_device<scsi_port_device> m_scsibus; required_device<output_latch_device> m_sasi_data_out;
//required_device<output_latch_device> m_scsi_data_out; required_device<input_buffer_device> m_sasi_data_in;
//required_device<input_buffer_device> m_scsi_data_in;
void cumana68k_mem(address_map &map); void cumana68k_mem(address_map &map);
bool m_bEnabled; void fsel_w(offs_t offset, uint8_t data);
uint8_t m_pia_sasi_pb;
int m_masknmi;
void mc146818_set();
int m_mc146818_as;
int m_mc146818_ds;
int m_mc146818_rw;
int m_mc146818_ce;
}; };

View File

@ -204,6 +204,7 @@ void bbcb_internal_devices(device_slot_interface &device)
void bbcbp_internal_devices(device_slot_interface &device) void bbcbp_internal_devices(device_slot_interface &device)
{ {
device.option_add("atplswp", BBC_ATPLSWP); /* ATPL Sidewise+ ROM expansion */ device.option_add("atplswp", BBC_ATPLSWP); /* ATPL Sidewise+ ROM expansion */
device.option_add("cumana68k", BBC_CUMANA68K); /* Cumana 68008 2nd Processor */
} }
void bbcm_internal_devices(device_slot_interface &device) void bbcm_internal_devices(device_slot_interface &device)