diff options
-rw-r--r-- | scripts/genie.lua | 15 | ||||
-rw-r--r-- | scripts/src/3rdparty.lua | 1 | ||||
-rw-r--r-- | scripts/src/lib.lua | 2 | ||||
-rw-r--r-- | src/lib/formats/bbc_dsk.c | 53 | ||||
-rw-r--r-- | src/lib/formats/bbc_dsk.h | 33 | ||||
-rw-r--r-- | src/mess/drivers/bbc.c | 62 | ||||
-rw-r--r-- | src/mess/includes/bbc.h | 4 | ||||
-rw-r--r-- | src/mess/machine/bbc.c | 98 |
8 files changed, 73 insertions, 195 deletions
diff --git a/scripts/genie.lua b/scripts/genie.lua index 10eed679dfb..7a0f2128fe5 100644 --- a/scripts/genie.lua +++ b/scripts/genie.lua @@ -728,9 +728,23 @@ if _OPTIONS["OPTIMIZE"] then buildoptions { "-flto", } +-- buildoptions { +-- "-ffat-lto-objects", +-- } +-- buildoptions { +-- "-flto-partition=1to1", +-- } linkoptions { "-flto", } +-- linkoptions { +-- "-flto-partition=1to1", +-- } +-- linkoptions { +-- "-ffat-lto-objects", +-- } + + end end @@ -864,6 +878,7 @@ end if (version >= 40800) then -- array bounds checking seems to be buggy in 4.8.1 (try it on video/stvvdp1.c and video/model1.c without -Wno-array-bounds) buildoptions { + "-Wno-unused-variable", "-Wno-array-bounds" } end diff --git a/scripts/src/3rdparty.lua b/scripts/src/3rdparty.lua index aad89112883..e744db9b79b 100644 --- a/scripts/src/3rdparty.lua +++ b/scripts/src/3rdparty.lua @@ -621,7 +621,6 @@ project "portaudio" "-Wno-missing-braces", "-Wno-unused-but-set-variable", "-Wno-maybe-uninitialized", - "-Wno-unused-variable", "-Wno-unused-value", "-Wno-unused-function", } diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua index a4bca8d6c50..54540f0f630 100644 --- a/scripts/src/lib.lua +++ b/scripts/src/lib.lua @@ -158,8 +158,6 @@ project "formats" MAME_DIR .. "src/lib/formats/atarist_dsk.h", MAME_DIR .. "src/lib/formats/atom_tap.c", MAME_DIR .. "src/lib/formats/atom_tap.h", - MAME_DIR .. "src/lib/formats/bbc_dsk.c", - MAME_DIR .. "src/lib/formats/bbc_dsk.h", MAME_DIR .. "src/lib/formats/bw2_dsk.c", MAME_DIR .. "src/lib/formats/bw2_dsk.h", MAME_DIR .. "src/lib/formats/bw12_dsk.c", diff --git a/src/lib/formats/bbc_dsk.c b/src/lib/formats/bbc_dsk.c deleted file mode 100644 index dfa21213e20..00000000000 --- a/src/lib/formats/bbc_dsk.c +++ /dev/null @@ -1,53 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Dirk Best -/*************************************************************************** - - BBC Micro - - Disk image format - -***************************************************************************/ - -#include "bbc_dsk.h" - -bbc_format::bbc_format() : wd177x_format(formats) -{ -} - -const char *bbc_format::name() const -{ - return "bbc"; -} - -const char *bbc_format::description() const -{ - return "BBC Micro disk image"; -} - -const char *bbc_format::extensions() const -{ - return "bbc,img,ssd,dsd"; -} - -const bbc_format::format bbc_format::formats[] = -{ - { // 100k single sided single density - floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM, - 4000, 10, 40, 1, 256, {}, 0, {}, 16, 11, 19 - }, - { // 200k double sided single density - floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM, - 4000, 10, 40, 2, 256, {}, 0, {}, 16, 11, 19 - }, - { // 200k single sided double density - floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM, - 4000, 10, 80, 1, 256, {}, 0, {}, 16, 11, 19 - }, - { // 400k double sided double density - floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM, - 4000, 10, 80, 2, 256, {}, 0, {}, 16, 11, 19 - }, - {} -}; - -const floppy_format_type FLOPPY_BBC_FORMAT = &floppy_image_format_creator<bbc_format>; diff --git a/src/lib/formats/bbc_dsk.h b/src/lib/formats/bbc_dsk.h deleted file mode 100644 index e2520781a15..00000000000 --- a/src/lib/formats/bbc_dsk.h +++ /dev/null @@ -1,33 +0,0 @@ -// license:GPL-2.0+ -// copyright-holders:Dirk Best -/*************************************************************************** - - BBC Micro - - Disk image format - -***************************************************************************/ - -#pragma once - -#ifndef __BBC_DSK_H__ -#define __BBC_DSK_H__ - -#include "wd177x_dsk.h" - -class bbc_format : public wd177x_format -{ -public: - bbc_format(); - - virtual const char *name() const; - virtual const char *description() const; - virtual const char *extensions() const; - -private: - static const format formats[]; -}; - -extern const floppy_format_type FLOPPY_BBC_FORMAT; - -#endif // __BBC_DSK_H__ diff --git a/src/mess/drivers/bbc.c b/src/mess/drivers/bbc.c index de7f17dee44..ca639730143 100644 --- a/src/mess/drivers/bbc.c +++ b/src/mess/drivers/bbc.c @@ -57,7 +57,6 @@ /* Devices */ #include "imagedev/flopdrv.h" -#include "formats/bbc_dsk.h" #include "formats/basicdsk.h" #include "imagedev/cassette.h" #include "formats/uef_cas.h" @@ -610,19 +609,6 @@ static const floppy_interface bbc_floppy_interface = "floppy_5_25" }; -FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats ) - FLOPPY_BBC_FORMAT -FLOPPY_FORMATS_END - -static SLOT_INTERFACE_START( bbc_floppies ) - SLOT_INTERFACE("sssd", FLOPPY_525_SSSD) - SLOT_INTERFACE("sd", FLOPPY_525_SD) - SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD) - SLOT_INTERFACE("dd", FLOPPY_525_DD) - SLOT_INTERFACE("ssqd", FLOPPY_525_SSQD) - SLOT_INTERFACE("qd", FLOPPY_525_QD) -SLOT_INTERFACE_END - WRITE_LINE_MEMBER(bbc_state::econet_clk_w) { m_adlc->rxc_w(state); @@ -774,14 +760,12 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca ) MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt)) MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1) - MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) - - MCFG_WD1770x_ADD("wd177x", XTAL_16MHz / 2) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) + MCFG_DEVICE_ADD("wd177x", WD1770, 0) + MCFG_WD17XX_DEFAULT_DRIVE2_TAGS + MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) + MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) - MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) + MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) /* software lists */ MCFG_DEVICE_REMOVE("cass_ls_a") @@ -838,14 +822,12 @@ static MACHINE_CONFIG_DERIVED( bbcb_us, bbca ) MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt)) MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1) - MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) + MCFG_DEVICE_ADD("wd177x", WD1770, 0) + MCFG_WD17XX_DEFAULT_DRIVE2_TAGS + MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) + MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) - MCFG_WD1770x_ADD("wd177x", XTAL_16MHz / 2) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) - - MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) + MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) /* software lists */ MCFG_DEVICE_REMOVE("cass_ls_a") @@ -870,8 +852,6 @@ static MACHINE_CONFIG_DERIVED( bbcbp, bbcb ) /* fdc */ MCFG_DEVICE_REMOVE("i8271") - MCFG_DEVICE_REMOVE(FLOPPY_0) - MCFG_DEVICE_REMOVE(FLOPPY_1) MACHINE_CONFIG_END @@ -1001,12 +981,12 @@ static MACHINE_CONFIG_START( bbcm, bbc_state ) MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w)) /* fdc */ - MCFG_WD1770x_ADD("wd177x", XTAL_16MHz / 2) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) + MCFG_DEVICE_ADD("wd177x", WD1770, 0) + MCFG_WD17XX_DEFAULT_DRIVE2_TAGS + MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) + MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) - MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) + MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface) /* econet */ MCFG_DEVICE_ADD("mc6854", MC6854, 0) @@ -1088,14 +1068,10 @@ static MACHINE_CONFIG_DERIVED( bbcmc, bbcm ) /* fdc */ MCFG_DEVICE_REMOVE("wd177x") - -// MCFG_WD1772x_ADD("wd177x", XTAL_16MHz / 2) - MCFG_WD1770x_ADD("wd177x", XTAL_16MHz / 2) - MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) - MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) - - MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats) + MCFG_DEVICE_ADD("wd177x", WD1772, 0) + MCFG_WD17XX_DEFAULT_DRIVE2_TAGS + MCFG_WD17XX_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w)) + MCFG_WD17XX_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w)) /* software lists */ MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m") diff --git a/src/mess/includes/bbc.h b/src/mess/includes/bbc.h index 11bd1c13eb1..98e1c9b5a6c 100644 --- a/src/mess/includes/bbc.h +++ b/src/mess/includes/bbc.h @@ -20,7 +20,7 @@ #include "machine/mc6854.h" #include "machine/ram.h" #include "machine/i8271.h" -#include "machine/wd_fdc.h" +#include "machine/wd17xx.h" #include "machine/upd7002.h" #include "video/mc6845.h" #include "video/saa5050.h" @@ -80,8 +80,6 @@ public: m_palette(*this, "palette") { } - DECLARE_FLOPPY_FORMATS(floppy_formats); - DECLARE_WRITE8_MEMBER(bbc_page_selecta_w); DECLARE_WRITE8_MEMBER(bbc_memorya1_w); DECLARE_WRITE8_MEMBER(bbc_page_selectb_w); diff --git a/src/mess/machine/bbc.c b/src/mess/machine/bbc.c index ef73ee4700a..efc9da1102e 100644 --- a/src/mess/machine/bbc.c +++ b/src/mess/machine/bbc.c @@ -17,7 +17,7 @@ #include "cpu/m6502/m6502.h" #include "sound/tms5220.h" #include "machine/6522via.h" -#include "machine/wd_fdc.h" +#include "machine/wd17xx.h" #include "imagedev/flopdrv.h" #include "includes/bbc.h" #include "machine/mc146818.h" @@ -1606,28 +1606,20 @@ WRITE_LINE_MEMBER(bbc_state::bbc_wd177x_drq_w) WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); - floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); - floppy_image_device *floppy = NULL; - + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); m_drive_control = data; - // bit 0, 1: drive select - if (BIT(data, 0)) floppy = floppy0; - if (BIT(data, 1)) floppy = floppy1; - - fdc->set_floppy(floppy); + /* set drive */ + if ((data>>0) & 0x01) fdc->set_drive(0); + if ((data>>1) & 0x01) fdc->set_drive(1); - // bit 2: side select - if (floppy) - floppy->ss_w(BIT(data, 2)); + /* set side */ + fdc->set_side((data>>2) & 0x01); - // bit 3: density + /* set density */ fdc->dden_w(BIT(data, 3)); - // bit 4: interrupt enable - m_1770_IntEnabled = !BIT(data, 4); + m_1770_IntEnabled=(((data>>4) & 0x01)==0); } @@ -1635,7 +1627,7 @@ WRITE8_MEMBER(bbc_state::bbc_wd177x_status_w) READ8_MEMBER(bbc_state::bbc_wd1770_read) { int retval=0xff; - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); switch (offset) { case 4: @@ -1653,22 +1645,22 @@ READ8_MEMBER(bbc_state::bbc_wd1770_read) default: break; } - //logerror("wd177x read: $%02X $%02X\n", offset,retval); + logerror("wd177x read: $%02X $%02X\n", offset,retval); return retval; } WRITE8_MEMBER(bbc_state::bbc_wd1770_write) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - //logerror("wd177x write: $%02X $%02X\n", offset,data); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); + logerror("wd177x write: $%02X $%02X\n", offset,data); switch (offset) { case 0: bbc_wd177x_status_w(space, 0, data); break; case 4: - fdc->cmd_w(space, 0, data); + fdc->command_w(space, 0, data); break; case 5: fdc->track_w(space, 0, data); @@ -1723,34 +1715,26 @@ AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read , bbc_opus_write ) WRITE8_MEMBER(bbc_state::bbc_opus_status_w) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); - floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); - floppy_image_device *floppy = NULL; - + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); m_drive_control = data; - // bit 1, 2: drive select - if (BIT(data, 1)) floppy = floppy0; - if (BIT(data, 2)) floppy = floppy1; - - fdc->set_floppy(floppy); + /* set drive */ + if ((data>>1) & 0x01) fdc->set_drive(0); + if ((data>>2) & 0x01) fdc->set_drive(1); - // bit 0: side select - if (floppy) - floppy->ss_w(BIT(data, 0)); + /* set side */ + fdc->set_side((data>>0) & 0x01); - // bit 5: density + /* set density */ fdc->dden_w(BIT(data, 5)); - // bit 4: interrupt enable - m_1770_IntEnabled = BIT(data, 4); + m_1770_IntEnabled=(data>>4) & 0x01; } READ8_MEMBER(bbc_state::bbc_opus_read) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - //logerror("wd177x read: $%02X\n", offset); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); + logerror("wd177x read: $%02X\n", offset); if (m_DFSType==6) { @@ -1778,8 +1762,8 @@ READ8_MEMBER(bbc_state::bbc_opus_read) WRITE8_MEMBER(bbc_state::bbc_opus_write) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - //logerror("wd177x write: $%02X $%02X\n", offset,data); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); + logerror("wd177x write: $%02X $%02X\n", offset,data); if (m_DFSType==6) { @@ -1788,7 +1772,7 @@ WRITE8_MEMBER(bbc_state::bbc_opus_write) switch (offset) { case 0xf8: - fdc->cmd_w(space, 0, data); + fdc->command_w(space, 0, data); break; case 0xf9: fdc->track_w(space, 0, data); @@ -1826,7 +1810,7 @@ BBC MASTER DISC SUPPORT READ8_MEMBER(bbc_state::bbcm_wd1770_read) { int retval=0xff; - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); switch (offset) { case 0: @@ -1850,12 +1834,12 @@ READ8_MEMBER(bbc_state::bbcm_wd1770_read) WRITE8_MEMBER(bbc_state::bbcm_wd1770_write) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); //logerror("wd177x write: $%02X $%02X\n", offset,data); switch (offset) { case 0: - fdc->cmd_w(space, 0, data); + fdc->command_w(space, 0, data); break; case 1: fdc->track_w(space, 0, data); @@ -1879,28 +1863,22 @@ READ8_MEMBER(bbc_state::bbcm_wd1770l_read) WRITE8_MEMBER(bbc_state::bbcm_wd1770l_write) { - wd1770_t *fdc = machine().device<wd1770_t>("wd177x"); - floppy_image_device *floppy0 = machine().device<floppy_connector>("wd177x:0")->get_device(); - floppy_image_device *floppy1 = machine().device<floppy_connector>("wd177x:1")->get_device(); - floppy_image_device *floppy = NULL; - + wd1770_device *fdc = machine().device<wd1770_device>("wd177x"); m_drive_control = data; - // bit 0, 1: drive select - if (BIT(data, 0)) floppy = floppy0; - if (BIT(data, 1)) floppy = floppy1; + /* set drive */ + if ((data>>0) & 0x01) fdc->set_drive(0); + if ((data>>1) & 0x01) fdc->set_drive(1); - fdc->set_floppy(floppy); + /* set side */ + fdc->set_side((data>>4) & 0x01); - // bit 4: side select - if (floppy) - floppy->ss_w(BIT(data, 4)); - - // bit 5: density + /* set density */ fdc->dden_w(BIT(data, 5)); // m_1770_IntEnabled=(((data>>4) & 0x01)==0); m_1770_IntEnabled=1; + } |