mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
bbc.cpp: No need for both wd1770 and wd1772 devices. (nw)
This commit is contained in:
parent
e9eddb73bc
commit
09b7e5c791
@ -180,7 +180,7 @@ void bbcbp_state::bbcbp_mem(address_map &map)
|
||||
map(0x8000, 0xbfff).rw(FUNC(bbc_state::bbcbp_paged_r), FUNC(bbc_state::bbcbp_paged_w)); // 8000-bfff Paged ROM/RAM
|
||||
map(0xfe30, 0xfe3f).w(FUNC(bbc_state::bbcbp_romsel_w)); // W: fe30-fe3f 84LS161 Paged ROM selector
|
||||
map(0xfe80, 0xfe83).w(FUNC(bbc_state::bbcbp_drive_control_w)); // fe80-fe83 1770 FDC Drive control register
|
||||
map(0xfe84, 0xfe9f).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); // fe84-fe9f 1770 FDC Floppy disc controller
|
||||
map(0xfe84, 0xfe9f).rw(m_wd_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); // fe84-fe9f 1770 FDC Floppy disc controller
|
||||
}
|
||||
|
||||
|
||||
@ -232,7 +232,7 @@ void bbcm_state::bbcm_bankdev(address_map &map)
|
||||
map(0x0218, 0x021f).mirror(0x400).rw(m_upd7002, FUNC(upd7002_device::read), FUNC(upd7002_device::write)); // fe18-fe1f uPD7002 Analogue to digital converter
|
||||
map(0x0220, 0x0223).mirror(0x400).w(FUNC(bbc_state::video_ula_w)); // fe20-fe23 Video ULA Video system chip
|
||||
map(0x0224, 0x0227).mirror(0x400).w(FUNC(bbc_state::bbcm_drive_control_w)); // fe24-fe27 FDC Latch 1770 Control latch
|
||||
map(0x0228, 0x022f).mirror(0x400).rw(m_wd1770, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); // fe28-fe2f 1770 FDC Floppy disc controller
|
||||
map(0x0228, 0x022f).mirror(0x400).rw(m_wd_fdc, FUNC(wd1770_device::read), FUNC(wd1770_device::write)); // fe28-fe2f 1770 FDC Floppy disc controller
|
||||
map(0x0230, 0x0233).mirror(0x400).w(FUNC(bbc_state::bbcm_romsel_w)); // fe30-fe33 ROMSEL ROM Select
|
||||
map(0x0234, 0x0237).mirror(0x400).rw(FUNC(bbc_state::bbcm_acccon_r), FUNC(bbc_state::bbcm_acccon_w)); // fe34-fe37 ACCCON ACCCON select register
|
||||
map(0x0238, 0x023b).mirror(0x400).r(FUNC(bbc_state::bbc_fe_r)); // fe38-fe3b INTOFF
|
||||
@ -301,8 +301,8 @@ void bbcm_state::bbcmc_bankdev(address_map &map)
|
||||
map(0x0208, 0x020f).mirror(0x400).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); // fe08-fe0f 6850 ACIA Serial controller
|
||||
map(0x0210, 0x0217).mirror(0x400).w(FUNC(bbc_state::serial_ula_w)); // fe10-fe17 Serial ULA Serial system chip
|
||||
map(0x0220, 0x0223).mirror(0x400).w(FUNC(bbc_state::video_ula_w)); // fe20-fe23 Video ULA Video system chip
|
||||
map(0x0224, 0x0227).mirror(0x400).w(FUNC(bbc_state::bbcmc_drive_control_w)); // fe24-fe27 FDC Latch 1772 Control latch
|
||||
map(0x0228, 0x022f).mirror(0x400).rw(m_wd1772, FUNC(wd1772_device::read), FUNC(wd1772_device::write)); // fe28-fe2f 1772 FDC Floppy disc controller
|
||||
map(0x0224, 0x0227).mirror(0x400).w(FUNC(bbc_state::bbcm_drive_control_w)); // fe24-fe27 FDC Latch 1772 Control latch
|
||||
map(0x0228, 0x022f).mirror(0x400).rw(m_wd_fdc, FUNC(wd1772_device::read), FUNC(wd1772_device::write)); // fe28-fe2f 1772 FDC Floppy disc controller
|
||||
map(0x0230, 0x0233).mirror(0x400).w(FUNC(bbc_state::bbcm_romsel_w)); // fe30-fe33 ROMSEL ROM Select
|
||||
map(0x0234, 0x0237).mirror(0x400).rw(FUNC(bbc_state::bbcm_acccon_r), FUNC(bbc_state::bbcm_acccon_w)); // fe34-fe37 ACCCON ACCCON select register
|
||||
map(0x0238, 0x023b).mirror(0x400).r(FUNC(bbc_state::bbc_fe_r)); // fe38-fe3b INTOFF
|
||||
@ -335,8 +335,7 @@ INPUT_CHANGED_MEMBER(bbc_state::trigger_reset)
|
||||
if (m_adlc) m_adlc->reset();
|
||||
if (m_rtc) m_rtc->reset();
|
||||
if (m_fdc) m_fdc->reset();
|
||||
if (m_wd1770) m_wd1770->reset();
|
||||
if (m_wd1772) m_wd1772->reset();
|
||||
if (m_wd_fdc) m_wd_fdc->reset();
|
||||
if (m_1mhzbus) m_1mhzbus->reset();
|
||||
if (m_tube) m_tube->reset();
|
||||
if (m_intube) m_intube->reset();
|
||||
@ -1349,14 +1348,14 @@ void bbcbp_state::bbcbp(machine_config &config)
|
||||
m_ram->set_default_size("64K");
|
||||
|
||||
/* fdc */
|
||||
WD1770(config, m_wd1770, 16_MHz_XTAL / 2);
|
||||
m_wd1770->set_force_ready(true);
|
||||
m_wd1770->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd1770->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
WD1770(config, m_wd_fdc, 16_MHz_XTAL / 2);
|
||||
m_wd_fdc->set_force_ready(true);
|
||||
m_wd_fdc->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd_fdc->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
config.device_remove("fdc");
|
||||
|
||||
FLOPPY_CONNECTOR(config, "wd1770:0", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd1770:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:0", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
|
||||
/* remove sockets not present in B+ */
|
||||
config.device_remove("romslot0");
|
||||
@ -1405,7 +1404,7 @@ void bbcbp_state::abc110(machine_config &config)
|
||||
{
|
||||
bbcbp(config);
|
||||
/* fdc */
|
||||
m_wd1770->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
m_wd_fdc->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
|
||||
/* Acorn Z80 co-processor */
|
||||
m_tube->set_default_option("z80");
|
||||
@ -1426,7 +1425,7 @@ void bbcbp_state::acw443(machine_config &config)
|
||||
{
|
||||
bbcbp(config);
|
||||
/* fdc */
|
||||
m_wd1770->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
m_wd_fdc->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
|
||||
/* 32016 co-processor */
|
||||
//m_tube->set_default_option("32016");
|
||||
@ -1448,7 +1447,7 @@ void bbcbp_state::abc310(machine_config &config)
|
||||
{
|
||||
bbcbp(config);
|
||||
/* fdc */
|
||||
m_wd1770->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
m_wd_fdc->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
|
||||
/* Acorn 80286 co-processor */
|
||||
m_tube->set_default_option("80286");
|
||||
@ -1493,7 +1492,7 @@ void bbcbp_state::reutapm(machine_config &config)
|
||||
config.device_remove("cassette");
|
||||
|
||||
/* fdc */
|
||||
config.device_remove("wd1770");
|
||||
config.device_remove("wd_fdc");
|
||||
|
||||
/* software lists */
|
||||
config.device_remove("cass_ls");
|
||||
@ -1524,7 +1523,7 @@ void bbcbp_state::econx25(machine_config &config)
|
||||
m_latch->q_out_cb<2>().set_nop();
|
||||
|
||||
/* fdc */
|
||||
//config.device_remove("wd1770")
|
||||
//config.device_remove("wd_fdc")
|
||||
|
||||
/* Add Econet X25 Gateway co-processor */
|
||||
//m_tube->set_default_option("x25");
|
||||
@ -1654,13 +1653,13 @@ void bbcm_state::bbcm(machine_config &config)
|
||||
m_via6522_1->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<2>));
|
||||
|
||||
/* fdc */
|
||||
WD1770(config, m_wd1770, 16_MHz_XTAL / 2);
|
||||
m_wd1770->set_force_ready(true);
|
||||
m_wd1770->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd1770->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
WD1770(config, m_wd_fdc, 16_MHz_XTAL / 2);
|
||||
m_wd_fdc->set_force_ready(true);
|
||||
m_wd_fdc->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd_fdc->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, "wd1770:0", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd1770:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:0", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:1", bbc_floppies, "525qd", bbc_state::floppy_formats).enable_sound(true);
|
||||
|
||||
/* econet */
|
||||
MC6854(config, m_adlc);
|
||||
@ -1784,7 +1783,7 @@ void bbcm_state::bbcmet(machine_config &config)
|
||||
config.device_remove("via6522_1");
|
||||
|
||||
/* fdc */
|
||||
config.device_remove("wd1770");
|
||||
config.device_remove("wd_fdc");
|
||||
|
||||
/* expansion ports (not fitted) */
|
||||
config.device_remove("analogue");
|
||||
@ -1867,8 +1866,8 @@ void bbcm_state::cfa3000(machine_config &config)
|
||||
bbcm(config);
|
||||
|
||||
/* fdc */
|
||||
m_wd1770->subdevice<floppy_connector>("0")->set_default_option(nullptr);
|
||||
m_wd1770->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
m_wd_fdc->subdevice<floppy_connector>("0")->set_default_option(nullptr);
|
||||
m_wd_fdc->subdevice<floppy_connector>("1")->set_default_option(nullptr);
|
||||
|
||||
/* lk18 and lk19 are set to enable rom, disabling ram */
|
||||
m_rom[0x04]->set_default_option(nullptr);
|
||||
@ -1914,13 +1913,12 @@ void bbcm_state::bbcmc(machine_config &config)
|
||||
config.device_remove("cassette");
|
||||
|
||||
/* fdc */
|
||||
WD1772(config, m_wd1772, 16_MHz_XTAL / 2);
|
||||
m_wd1772->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd1772->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
config.device_remove("wd1770");
|
||||
WD1772(config.replace(), m_wd_fdc, 16_MHz_XTAL / 2);
|
||||
m_wd_fdc->intrq_wr_callback().set(FUNC(bbc_state::fdc_intrq_w));
|
||||
m_wd_fdc->drq_wr_callback().set(FUNC(bbc_state::fdc_drq_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, "wd1772:0", bbc_floppies, "35dd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd1772:1", bbc_floppies, "35dd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:0", bbc_floppies, "35dd", bbc_state::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, "wd_fdc:1", bbc_floppies, "35dd", bbc_state::floppy_formats).enable_sound(true);
|
||||
|
||||
I2C_PCD8572(config, "i2cmem", 0);
|
||||
config.device_remove("rtc");
|
||||
|
@ -91,8 +91,7 @@ public:
|
||||
, m_rtc(*this, "rtc")
|
||||
, m_i2cmem(*this, "i2cmem")
|
||||
, m_fdc(*this, "fdc")
|
||||
, m_wd1770(*this, "wd1770")
|
||||
, m_wd1772(*this, "wd1772")
|
||||
, m_wd_fdc(*this, "wd_fdc")
|
||||
, m_rom(*this, "romslot%u", 0U)
|
||||
, m_cart(*this, "cartslot%u", 1U)
|
||||
, m_region_mos(*this, "mos")
|
||||
@ -143,7 +142,6 @@ public:
|
||||
void bbcmc_paged_w(offs_t offset, uint8_t data);
|
||||
void bbcbp_drive_control_w(uint8_t data);
|
||||
void bbcm_drive_control_w(uint8_t data);
|
||||
void bbcmc_drive_control_w(uint8_t data);
|
||||
void serial_ula_w(uint8_t data);
|
||||
void video_ula_w(offs_t offset, uint8_t data);
|
||||
uint8_t bbc_fe_r() { return 0xfe; };
|
||||
@ -248,8 +246,7 @@ protected:
|
||||
optional_device<mc146818_device> m_rtc;
|
||||
optional_device<i2cmem_device> m_i2cmem;
|
||||
optional_device<bbc_fdc_slot_device> m_fdc;
|
||||
optional_device<wd1770_device> m_wd1770;
|
||||
optional_device<wd1772_device> m_wd1772;
|
||||
optional_device<wd_fdc_digital_device_base> m_wd_fdc;
|
||||
optional_device_array<bbc_romslot_device, 16> m_rom;
|
||||
optional_device_array<bbc_cartslot_device, 2> m_cart;
|
||||
|
||||
|
@ -1326,21 +1326,21 @@ void bbc_state::bbcbp_drive_control_w(uint8_t data)
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0, 1: drive select
|
||||
if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
|
||||
if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
|
||||
m_wd1770->set_floppy(floppy);
|
||||
if (BIT(data, 0)) floppy = m_wd_fdc->subdevice<floppy_connector>("0")->get_device();
|
||||
if (BIT(data, 1)) floppy = m_wd_fdc->subdevice<floppy_connector>("1")->get_device();
|
||||
m_wd_fdc->set_floppy(floppy);
|
||||
|
||||
// bit 2: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 2));
|
||||
|
||||
// bit 3: density
|
||||
m_wd1770->dden_w(BIT(data, 3));
|
||||
m_wd_fdc->dden_w(BIT(data, 3));
|
||||
|
||||
// bit 4: interrupt enable (S5 wire link not fitted)
|
||||
|
||||
// bit 5: reset
|
||||
m_wd1770->mr_w(BIT(data, 5));
|
||||
m_wd_fdc->mr_w(BIT(data, 5));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1362,39 +1362,19 @@ void bbc_state::bbcm_drive_control_w(uint8_t data)
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0, 1, 3: drive select
|
||||
if (BIT(data, 0)) floppy = m_wd1770->subdevice<floppy_connector>("0")->get_device();
|
||||
if (BIT(data, 1)) floppy = m_wd1770->subdevice<floppy_connector>("1")->get_device();
|
||||
m_wd1770->set_floppy(floppy);
|
||||
if (BIT(data, 0)) floppy = m_wd_fdc->subdevice<floppy_connector>("0")->get_device();
|
||||
if (BIT(data, 1)) floppy = m_wd_fdc->subdevice<floppy_connector>("1")->get_device();
|
||||
m_wd_fdc->set_floppy(floppy);
|
||||
|
||||
// bit 4: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 4));
|
||||
|
||||
// bit 5: density
|
||||
m_wd1770->dden_w(BIT(data, 5));
|
||||
m_wd_fdc->dden_w(BIT(data, 5));
|
||||
|
||||
// bit 2: reset
|
||||
m_wd1770->mr_w(BIT(data, 2));
|
||||
}
|
||||
|
||||
void bbc_state::bbcmc_drive_control_w(uint8_t data)
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0, 1, 3: drive select
|
||||
if (BIT(data, 0)) floppy = m_wd1772->subdevice<floppy_connector>("0")->get_device();
|
||||
if (BIT(data, 1)) floppy = m_wd1772->subdevice<floppy_connector>("1")->get_device();
|
||||
m_wd1772->set_floppy(floppy);
|
||||
|
||||
// bit 4: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 4));
|
||||
|
||||
// bit 5: density
|
||||
m_wd1772->dden_w(BIT(data, 5));
|
||||
|
||||
// bit 2: reset
|
||||
m_wd1772->mr_w(BIT(data, 2));
|
||||
m_wd_fdc->mr_w(BIT(data, 2));
|
||||
}
|
||||
|
||||
|
||||
@ -1634,7 +1614,7 @@ void bbc_state::setup_device_roms()
|
||||
/* list all inserted ROMs */
|
||||
for (int i = 15; i >= 0; i--)
|
||||
{
|
||||
osd_printf_info("ROM %X : %s\n", i, get_rom_name(m_region_swr->base() + (i * 0x4000)));
|
||||
osd_printf_verbose("ROM %X : %s\n", i, get_rom_name(m_region_swr->base() + (i * 0x4000)));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user