summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/wd_fdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/wd_fdc.cpp')
-rw-r--r--src/devices/machine/wd_fdc.cpp320
1 files changed, 163 insertions, 157 deletions
diff --git a/src/devices/machine/wd_fdc.cpp b/src/devices/machine/wd_fdc.cpp
index f64c1117ed4..f629fdc08bd 100644
--- a/src/devices/machine/wd_fdc.cpp
+++ b/src/devices/machine/wd_fdc.cpp
@@ -5,29 +5,35 @@
#include "debugger.h"
-const device_type FD1771 = device_creator<fd1771_t>;
-const device_type FD1781 = device_creator<fd1781_t>;
-const device_type FD1791 = device_creator<fd1791_t>;
-const device_type FD1792 = device_creator<fd1792_t>;
-const device_type FD1793 = device_creator<fd1793_t>;
-const device_type KR1818VG93 = device_creator<kr1818vg93_t>;
-const device_type FD1794 = device_creator<fd1794_t>;
-const device_type FD1795 = device_creator<fd1795_t>;
-const device_type FD1797 = device_creator<fd1797_t>;
-const device_type MB8866 = device_creator<mb8866_t>;
-const device_type MB8876 = device_creator<mb8876_t>;
-const device_type MB8877 = device_creator<mb8877_t>;
-const device_type FD1761 = device_creator<fd1761_t>;
-const device_type FD1763 = device_creator<fd1763_t>;
-const device_type FD1765 = device_creator<fd1765_t>;
-const device_type FD1767 = device_creator<fd1767_t>;
-const device_type WD2791 = device_creator<wd2791_t>;
-const device_type WD2793 = device_creator<wd2793_t>;
-const device_type WD2795 = device_creator<wd2795_t>;
-const device_type WD2797 = device_creator<wd2797_t>;
-const device_type WD1770 = device_creator<wd1770_t>;
-const device_type WD1772 = device_creator<wd1772_t>;
-const device_type WD1773 = device_creator<wd1773_t>;
+DEFINE_DEVICE_TYPE(FD1771, fd1771_device, "fd1771", "FD1771 FDC")
+
+DEFINE_DEVICE_TYPE(FD1781, fd1781_device, "fd1781", "FD1781 FDC")
+
+DEFINE_DEVICE_TYPE(FD1791, fd1791_device, "fd1791", "FD1791 FDC")
+DEFINE_DEVICE_TYPE(FD1792, fd1792_device, "fd1792", "FD1792 FDC")
+DEFINE_DEVICE_TYPE(FD1793, fd1793_device, "fd1793", "FD1793 FDC")
+DEFINE_DEVICE_TYPE(KR1818VG93, kr1818vg93_device, "kr1818vg93", "KR1818VG93 FDC")
+DEFINE_DEVICE_TYPE(FD1794, fd1794_device, "fd1794", "FD1794 FDC")
+DEFINE_DEVICE_TYPE(FD1795, fd1795_device, "fd1795", "FD1795 FDC")
+DEFINE_DEVICE_TYPE(FD1797, fd1797_device, "fd1797", "FD1797 FDC")
+
+DEFINE_DEVICE_TYPE(MB8866, mb8866_device, "mb8866", "Fujitsu MB8866 FDC")
+DEFINE_DEVICE_TYPE(MB8876, mb8876_device, "mb8876", "Fujitsu MB8876 FDC")
+DEFINE_DEVICE_TYPE(MB8877, mb8877_device, "mb8877", "Fujitsu MB8877 FDC")
+
+DEFINE_DEVICE_TYPE(FD1761, fd1761_device, "fd1761", "FD1761 FDC")
+DEFINE_DEVICE_TYPE(FD1763, fd1763_device, "fd1763", "FD1763 FDC")
+DEFINE_DEVICE_TYPE(FD1765, fd1765_device, "fd1765", "FD1765 FDC")
+DEFINE_DEVICE_TYPE(FD1767, fd1767_device, "fd1767", "FD1767 FDC")
+
+DEFINE_DEVICE_TYPE(WD2791, wd2791_device, "wd2791", "Western Digital WD2791 FDC")
+DEFINE_DEVICE_TYPE(WD2793, wd2793_device, "wd2793", "Western Digital WD2793 FDC")
+DEFINE_DEVICE_TYPE(WD2795, wd2795_device, "wd2795", "Western Digital WD2795 FDC")
+DEFINE_DEVICE_TYPE(WD2797, wd2797_device, "wd2797", "Western Digital WD2797 FDC")
+
+DEFINE_DEVICE_TYPE(WD1770, wd1770_device, "wd1770", "Western Digital WD1770 FDC")
+DEFINE_DEVICE_TYPE(WD1772, wd1772_device, "wd1772", "Western Digital WD1772 FDC")
+DEFINE_DEVICE_TYPE(WD1773, wd1773_device, "wd1773", "Western Digital WD1773 FDC")
/*
Debugging flags. Set to 0 or 1.
@@ -66,8 +72,8 @@ const device_type WD1773 = device_creator<wd1773_t>;
// Show state machine
#define TRACE_STATE 0
-wd_fdc_t::wd_fdc_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+wd_fdc_device_base::wd_fdc_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ device_t(mconfig, type, tag, owner, clock),
intrq_cb(*this),
drq_cb(*this),
hld_cb(*this),
@@ -78,17 +84,17 @@ wd_fdc_t::wd_fdc_t(const machine_config &mconfig, device_type type, const char *
disable_motor_control = false;
}
-void wd_fdc_t::set_force_ready(bool _force_ready)
+void wd_fdc_device_base::set_force_ready(bool _force_ready)
{
force_ready = _force_ready;
}
-void wd_fdc_t::set_disable_motor_control(bool _disable_motor_control)
+void wd_fdc_device_base::set_disable_motor_control(bool _disable_motor_control)
{
disable_motor_control = _disable_motor_control;
}
-void wd_fdc_t::device_start()
+void wd_fdc_device_base::device_start()
{
intrq_cb.resolve();
drq_cb.resolve();
@@ -123,12 +129,12 @@ void wd_fdc_t::device_start()
save_item(NAME(last_dir));
}
-void wd_fdc_t::device_reset()
+void wd_fdc_device_base::device_reset()
{
soft_reset();
}
-void wd_fdc_t::soft_reset()
+void wd_fdc_device_base::soft_reset()
{
command = 0x00;
main_state = IDLE;
@@ -166,7 +172,7 @@ void wd_fdc_t::soft_reset()
t_gen->adjust(attotime::zero);
}
-void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
+void wd_fdc_device_base::set_floppy(floppy_image_device *_floppy)
{
if(floppy == _floppy)
return;
@@ -186,15 +192,15 @@ void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
if(floppy) {
if(motor_control && !disable_motor_control)
floppy->mon_w(status & S_MON ? 0 : 1);
- floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&wd_fdc_t::index_callback, this));
- floppy->setup_ready_cb(floppy_image_device::ready_cb(&wd_fdc_t::ready_callback, this));
+ floppy->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&wd_fdc_device_base::index_callback, this));
+ floppy->setup_ready_cb(floppy_image_device::ready_cb(&wd_fdc_device_base::ready_callback, this));
}
if(prev_ready != next_ready)
ready_callback(floppy, next_ready);
}
-void wd_fdc_t::dden_w(bool _dden)
+void wd_fdc_device_base::dden_w(bool _dden)
{
if(disable_mfm) {
logerror("Error, this chip does not have a dden line\n");
@@ -207,7 +213,7 @@ void wd_fdc_t::dden_w(bool _dden)
}
}
-std::string wd_fdc_t::tts(const attotime &t)
+std::string wd_fdc_device_base::tts(const attotime &t)
{
char buf[256];
int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
@@ -215,12 +221,12 @@ std::string wd_fdc_t::tts(const attotime &t)
return buf;
}
-std::string wd_fdc_t::ttsn()
+std::string wd_fdc_device_base::ttsn()
{
return tts(machine().time());
}
-void wd_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void wd_fdc_device_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
if (TRACE_EVENT) logerror("Event fired for timer %s\n", (id==TM_GEN)? "TM_GEN" : (id==TM_CMD)? "TM_CMD" : (id==TM_TRACK)? "TM_TRACK" : "TM_SECTOR");
live_sync();
@@ -235,7 +241,7 @@ void wd_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, voi
general_continue();
}
-void wd_fdc_t::command_end()
+void wd_fdc_device_base::command_end()
{
main_state = sub_state = IDLE;
motor_timeout = 0;
@@ -248,7 +254,7 @@ void wd_fdc_t::command_end()
}
}
-void wd_fdc_t::seek_start(int state)
+void wd_fdc_device_base::seek_start(int state)
{
if (TRACE_COMMAND) logerror("cmd: seek %d %x (track=%d)\n", state, data, track);
main_state = state;
@@ -265,7 +271,7 @@ void wd_fdc_t::seek_start(int state)
seek_continue();
}
-void wd_fdc_t::seek_continue()
+void wd_fdc_device_base::seek_continue()
{
for(;;) {
switch(sub_state) {
@@ -411,7 +417,7 @@ void wd_fdc_t::seek_continue()
}
}
-bool wd_fdc_t::sector_matches() const
+bool wd_fdc_device_base::sector_matches() const
{
if(TRACE_MATCH)
logerror("matching read T=%02x H=%02x S=%02x L=%02x - searched T=%02x S=%02x\n",
@@ -428,12 +434,12 @@ bool wd_fdc_t::sector_matches() const
return !(cur_live.idbuf[1] & 1);
}
-bool wd_fdc_t::is_ready()
+bool wd_fdc_device_base::is_ready()
{
return !ready_hooked || force_ready || (floppy && !floppy->ready_r());
}
-void wd_fdc_t::read_sector_start()
+void wd_fdc_device_base::read_sector_start()
{
if (TRACE_COMMAND) logerror("cmd: read sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector);
if(!is_ready()) {
@@ -451,7 +457,7 @@ void wd_fdc_t::read_sector_start()
read_sector_continue();
}
-void wd_fdc_t::read_sector_continue()
+void wd_fdc_device_base::read_sector_continue()
{
for(;;) {
switch(sub_state) {
@@ -533,7 +539,7 @@ void wd_fdc_t::read_sector_continue()
}
}
-void wd_fdc_t::read_track_start()
+void wd_fdc_device_base::read_track_start()
{
if (TRACE_COMMAND) logerror("cmd: read track (c=%02x) t=%d\n", command, track);
@@ -552,7 +558,7 @@ void wd_fdc_t::read_track_start()
read_track_continue();
}
-void wd_fdc_t::read_track_continue()
+void wd_fdc_device_base::read_track_continue()
{
for(;;) {
switch(sub_state) {
@@ -612,7 +618,7 @@ void wd_fdc_t::read_track_continue()
}
}
-void wd_fdc_t::read_id_start()
+void wd_fdc_device_base::read_id_start()
{
if (TRACE_COMMAND) logerror("cmd: read id (c=%02x)\n", command);
if(!is_ready()) {
@@ -630,7 +636,7 @@ void wd_fdc_t::read_id_start()
read_id_continue();
}
-void wd_fdc_t::read_id_continue()
+void wd_fdc_device_base::read_id_continue()
{
for(;;) {
switch(sub_state) {
@@ -687,7 +693,7 @@ void wd_fdc_t::read_id_continue()
}
}
-void wd_fdc_t::write_track_start()
+void wd_fdc_device_base::write_track_start()
{
if (TRACE_COMMAND) logerror("cmd: write track (c=%02x) t=%d\n", command, track);
@@ -711,7 +717,7 @@ void wd_fdc_t::write_track_start()
write_track_continue();
}
-void wd_fdc_t::write_track_continue()
+void wd_fdc_device_base::write_track_continue()
{
for(;;) {
switch(sub_state) {
@@ -798,7 +804,7 @@ void wd_fdc_t::write_track_continue()
}
-void wd_fdc_t::write_sector_start()
+void wd_fdc_device_base::write_sector_start()
{
if (TRACE_COMMAND) logerror("cmd: write sector%s (c=%02x) t=%d, s=%d\n", command & 0x10 ? " multiple" : "", command, track, sector);
@@ -817,7 +823,7 @@ void wd_fdc_t::write_sector_start()
write_sector_continue();
}
-void wd_fdc_t::write_sector_continue()
+void wd_fdc_device_base::write_sector_continue()
{
for(;;) {
switch(sub_state) {
@@ -896,7 +902,7 @@ void wd_fdc_t::write_sector_continue()
}
}
-void wd_fdc_t::interrupt_start()
+void wd_fdc_device_base::interrupt_start()
{
if (TRACE_COMMAND) logerror("cmd: forced interrupt (c=%02x)\n", command);
@@ -938,7 +944,7 @@ void wd_fdc_t::interrupt_start()
}
}
-void wd_fdc_t::general_continue()
+void wd_fdc_device_base::general_continue()
{
if(cur_live.state != IDLE) {
live_run();
@@ -973,7 +979,7 @@ void wd_fdc_t::general_continue()
}
}
-void wd_fdc_t::do_generic()
+void wd_fdc_device_base::do_generic()
{
switch(sub_state) {
case IDLE:
@@ -1009,7 +1015,7 @@ void wd_fdc_t::do_generic()
}
}
-void wd_fdc_t::do_cmd_w()
+void wd_fdc_device_base::do_cmd_w()
{
// Only available command when busy is interrupt
if(main_state != IDLE && (cmd_buffer & 0xf0) != 0xd0) {
@@ -1065,7 +1071,7 @@ void wd_fdc_t::do_cmd_w()
}
}
-void wd_fdc_t::cmd_w(uint8_t val)
+void wd_fdc_device_base::cmd_w(uint8_t val)
{
if (TRACE_COMP) logerror("Initiating command %02x\n", val);
if (inverted_bus) val ^= 0xff;
@@ -1095,7 +1101,7 @@ void wd_fdc_t::cmd_w(uint8_t val)
}
}
-uint8_t wd_fdc_t::status_r()
+uint8_t wd_fdc_device_base::status_r()
{
if(intrq && !(intrq_cond & I_IMM)) {
intrq = false;
@@ -1138,13 +1144,13 @@ uint8_t wd_fdc_t::status_r()
return val;
}
-void wd_fdc_t::do_track_w()
+void wd_fdc_device_base::do_track_w()
{
track = track_buffer;
track_buffer = -1;
}
-void wd_fdc_t::track_w(uint8_t val)
+void wd_fdc_device_base::track_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1156,7 +1162,7 @@ void wd_fdc_t::track_w(uint8_t val)
delay_cycles(t_track, dden ? delay_register_commit*2 : delay_register_commit);
}
-uint8_t wd_fdc_t::track_r()
+uint8_t wd_fdc_device_base::track_r()
{
uint8_t val = track;
if (inverted_bus) val ^= 0xff;
@@ -1164,13 +1170,13 @@ uint8_t wd_fdc_t::track_r()
return val;
}
-void wd_fdc_t::do_sector_w()
+void wd_fdc_device_base::do_sector_w()
{
sector = sector_buffer;
sector_buffer = -1;
}
-void wd_fdc_t::sector_w(uint8_t val)
+void wd_fdc_device_base::sector_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1188,7 +1194,7 @@ void wd_fdc_t::sector_w(uint8_t val)
delay_cycles(t_sector, dden ? delay_register_commit*2 : delay_register_commit);
}
-uint8_t wd_fdc_t::sector_r()
+uint8_t wd_fdc_device_base::sector_r()
{
uint8_t val = sector;
if (inverted_bus) val ^= 0xff;
@@ -1196,7 +1202,7 @@ uint8_t wd_fdc_t::sector_r()
return val;
}
-void wd_fdc_t::data_w(uint8_t val)
+void wd_fdc_device_base::data_w(uint8_t val)
{
if (inverted_bus) val ^= 0xff;
@@ -1204,7 +1210,7 @@ void wd_fdc_t::data_w(uint8_t val)
drop_drq();
}
-uint8_t wd_fdc_t::data_r()
+uint8_t wd_fdc_device_base::data_r()
{
drop_drq();
@@ -1214,7 +1220,7 @@ uint8_t wd_fdc_t::data_r()
return val;
}
-void wd_fdc_t::gen_w(int reg, uint8_t val)
+void wd_fdc_device_base::gen_w(int reg, uint8_t val)
{
switch(reg) {
case 0: cmd_w(val); break;
@@ -1224,7 +1230,7 @@ void wd_fdc_t::gen_w(int reg, uint8_t val)
}
}
-uint8_t wd_fdc_t::gen_r(int reg)
+uint8_t wd_fdc_device_base::gen_r(int reg)
{
switch(reg) {
case 0: return status_r();
@@ -1235,12 +1241,12 @@ uint8_t wd_fdc_t::gen_r(int reg)
return 0xff;
}
-void wd_fdc_t::delay_cycles(emu_timer *tm, int cycles)
+void wd_fdc_device_base::delay_cycles(emu_timer *tm, int cycles)
{
tm->adjust(clocks_to_attotime(cycles*clock_ratio));
}
-void wd_fdc_t::spinup()
+void wd_fdc_device_base::spinup()
{
if(command & 0x08)
sub_state = SPINUP_DONE;
@@ -1254,7 +1260,7 @@ void wd_fdc_t::spinup()
floppy->mon_w(0);
}
-void wd_fdc_t::ready_callback(floppy_image_device *floppy, int state)
+void wd_fdc_device_base::ready_callback(floppy_image_device *floppy, int state)
{
// why is this even possible?
if (!floppy)
@@ -1271,7 +1277,7 @@ void wd_fdc_t::ready_callback(floppy_image_device *floppy, int state)
}
}
-void wd_fdc_t::index_callback(floppy_image_device *floppy, int state)
+void wd_fdc_device_base::index_callback(floppy_image_device *floppy, int state)
{
live_sync();
@@ -1362,32 +1368,32 @@ void wd_fdc_t::index_callback(floppy_image_device *floppy, int state)
general_continue();
}
-bool wd_fdc_t::intrq_r()
+bool wd_fdc_device_base::intrq_r()
{
return intrq;
}
-bool wd_fdc_t::drq_r()
+bool wd_fdc_device_base::drq_r()
{
return drq;
}
-bool wd_fdc_t::hld_r()
+bool wd_fdc_device_base::hld_r()
{
return hld;
}
-void wd_fdc_t::hlt_w(bool state)
+void wd_fdc_device_base::hlt_w(bool state)
{
hlt = state;
}
-bool wd_fdc_t::enp_r()
+bool wd_fdc_device_base::enp_r()
{
return enp;
}
-void wd_fdc_t::live_start(int state)
+void wd_fdc_device_base::live_start(int state)
{
cur_live.tm = machine().time();
cur_live.state = state;
@@ -1411,26 +1417,26 @@ void wd_fdc_t::live_start(int state)
live_run();
}
-void wd_fdc_t::checkpoint()
+void wd_fdc_device_base::checkpoint()
{
pll_commit(floppy, cur_live.tm);
checkpoint_live = cur_live;
pll_save_checkpoint();
}
-void wd_fdc_t::rollback()
+void wd_fdc_device_base::rollback()
{
cur_live = checkpoint_live;
pll_retrieve_checkpoint();
}
-void wd_fdc_t::live_delay(int state)
+void wd_fdc_device_base::live_delay(int state)
{
cur_live.next_state = state;
t_gen->adjust(cur_live.tm - machine().time());
}
-void wd_fdc_t::live_sync()
+void wd_fdc_device_base::live_sync()
{
if(!cur_live.tm.is_never()) {
if(cur_live.tm > machine().time()) {
@@ -1455,7 +1461,7 @@ void wd_fdc_t::live_sync()
}
}
-void wd_fdc_t::live_abort()
+void wd_fdc_device_base::live_abort()
{
if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
rollback();
@@ -1468,7 +1474,7 @@ void wd_fdc_t::live_abort()
cur_live.next_state = -1;
}
-bool wd_fdc_t::read_one_bit(const attotime &limit)
+bool wd_fdc_device_base::read_one_bit(const attotime &limit)
{
int bit = pll_get_next_bit(cur_live.tm, floppy, limit);
if(bit < 0)
@@ -1486,7 +1492,7 @@ bool wd_fdc_t::read_one_bit(const attotime &limit)
return false;
}
-bool wd_fdc_t::write_one_bit(const attotime &limit)
+bool wd_fdc_device_base::write_one_bit(const attotime &limit)
{
bool bit = cur_live.shift_reg & 0x8000;
if(pll_write_next_bit(bit, cur_live.tm, floppy, limit))
@@ -1502,14 +1508,14 @@ bool wd_fdc_t::write_one_bit(const attotime &limit)
return false;
}
-void wd_fdc_t::live_write_raw(uint16_t raw)
+void wd_fdc_device_base::live_write_raw(uint16_t raw)
{
if (TRACE_WRITE) logerror("write raw %04x, CRC=%04x\n", raw, cur_live.crc);
cur_live.shift_reg = raw;
cur_live.data_bit_context = raw & 1;
}
-void wd_fdc_t::live_write_mfm(uint8_t mfm)
+void wd_fdc_device_base::live_write_mfm(uint8_t mfm)
{
bool context = cur_live.data_bit_context;
uint16_t raw = 0;
@@ -1527,7 +1533,7 @@ void wd_fdc_t::live_write_mfm(uint8_t mfm)
}
-void wd_fdc_t::live_write_fm(uint8_t fm)
+void wd_fdc_device_base::live_write_fm(uint8_t fm)
{
uint16_t raw = 0xaaaa;
for(int i=0; i<8; i++)
@@ -1539,7 +1545,7 @@ void wd_fdc_t::live_write_fm(uint8_t fm)
if (TRACE_WRITE) logerror("live_write_fm byte=%02x, raw=%04x, CRC=%04x\n", fm, raw, cur_live.crc);
}
-void wd_fdc_t::live_run(attotime limit)
+void wd_fdc_device_base::live_run(attotime limit)
{
if(cur_live.state == IDLE || cur_live.next_state != -1)
return;
@@ -2101,7 +2107,7 @@ void wd_fdc_t::live_run(attotime limit)
}
}
-void wd_fdc_t::set_drq()
+void wd_fdc_device_base::set_drq()
{
if(drq) {
status |= S_LOST;
@@ -2115,7 +2121,7 @@ void wd_fdc_t::set_drq()
}
}
-void wd_fdc_t::drop_drq()
+void wd_fdc_device_base::drop_drq()
{
if(drq) {
drq = false;
@@ -2130,23 +2136,23 @@ void wd_fdc_t::drop_drq()
}
}
-int wd_fdc_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd_fdc_device_base::calc_sector_size(uint8_t size, uint8_t command) const
{
return 128 << (size & 3);
}
-int wd_fdc_t::settle_time() const
+int wd_fdc_device_base::settle_time() const
{
return 60000;
}
-wd_fdc_analog_t::wd_fdc_analog_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- wd_fdc_t(mconfig, type, name, tag, owner, clock, shortname, source)
+wd_fdc_analog_device_base::wd_fdc_analog_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ wd_fdc_device_base(mconfig, type, tag, owner, clock)
{
clock_ratio = 1;
}
-void wd_fdc_analog_t::pll_reset(bool fm, bool enmf, const attotime &when)
+void wd_fdc_analog_device_base::pll_reset(bool fm, bool enmf, const attotime &when)
{
int clocks = 2;
@@ -2157,50 +2163,50 @@ void wd_fdc_analog_t::pll_reset(bool fm, bool enmf, const attotime &when)
cur_pll.set_clock(clocks_to_attotime(clocks));
}
-void wd_fdc_analog_t::pll_start_writing(const attotime &tm)
+void wd_fdc_analog_device_base::pll_start_writing(const attotime &tm)
{
cur_pll.start_writing(tm);
}
-void wd_fdc_analog_t::pll_commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_analog_device_base::pll_commit(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.commit(floppy, tm);
}
-void wd_fdc_analog_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_analog_device_base::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.stop_writing(floppy, tm);
}
-void wd_fdc_analog_t::pll_save_checkpoint()
+void wd_fdc_analog_device_base::pll_save_checkpoint()
{
checkpoint_pll = cur_pll;
}
-void wd_fdc_analog_t::pll_retrieve_checkpoint()
+void wd_fdc_analog_device_base::pll_retrieve_checkpoint()
{
cur_pll = checkpoint_pll;
}
-int wd_fdc_analog_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_analog_device_base::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.get_next_bit(tm, floppy, limit);
}
-bool wd_fdc_analog_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_analog_device_base::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.write_next_bit(bit, tm, floppy, limit);
}
-wd_fdc_digital_t::wd_fdc_digital_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source) :
- wd_fdc_t(mconfig, type, name, tag, owner, clock, shortname, source)
+wd_fdc_digital_device_base::wd_fdc_digital_device_base(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
+ wd_fdc_device_base(mconfig, type, tag, owner, clock)
{
clock_ratio = 4;
}
-const int wd_fdc_digital_t::wd_digital_step_times[4] = { 12000, 24000, 40000, 60000 };
+constexpr int wd_fdc_digital_device_base::wd_digital_step_times[4];
-void wd_fdc_digital_t::pll_reset(bool fm, bool enmf, const attotime &when)
+void wd_fdc_digital_device_base::pll_reset(bool fm, bool enmf, const attotime &when)
{
int clocks = 1;
@@ -2211,48 +2217,48 @@ void wd_fdc_digital_t::pll_reset(bool fm, bool enmf, const attotime &when)
cur_pll.set_clock(clocks_to_attotime(clocks));
}
-void wd_fdc_digital_t::pll_start_writing(const attotime &tm)
+void wd_fdc_digital_device_base::pll_start_writing(const attotime &tm)
{
cur_pll.start_writing(tm);
}
-void wd_fdc_digital_t::pll_commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::pll_commit(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.commit(floppy, tm);
}
-void wd_fdc_digital_t::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::pll_stop_writing(floppy_image_device *floppy, const attotime &tm)
{
cur_pll.stop_writing(floppy, tm);
}
-int wd_fdc_digital_t::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_digital_device_base::pll_get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.get_next_bit(tm, floppy, limit);
}
-bool wd_fdc_digital_t::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_digital_device_base::pll_write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
return cur_pll.write_next_bit(bit, tm, floppy, limit);
}
-void wd_fdc_digital_t::pll_save_checkpoint()
+void wd_fdc_digital_device_base::pll_save_checkpoint()
{
checkpoint_pll = cur_pll;
}
-void wd_fdc_digital_t::pll_retrieve_checkpoint()
+void wd_fdc_digital_device_base::pll_retrieve_checkpoint()
{
cur_pll = checkpoint_pll;
}
-void wd_fdc_digital_t::digital_pll_t::set_clock(const attotime &period)
+void wd_fdc_digital_device_base::digital_pll_t::set_clock(const attotime &period)
{
for(int i=0; i<42; i++)
delays[i] = period*(i+1);
}
-void wd_fdc_digital_t::digital_pll_t::reset(const attotime &when)
+void wd_fdc_digital_device_base::digital_pll_t::reset(const attotime &when)
{
counter = 0;
increment = 128;
@@ -2268,7 +2274,7 @@ void wd_fdc_digital_t::digital_pll_t::reset(const attotime &when)
write_start_time = attotime::never;
}
-int wd_fdc_digital_t::digital_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
+int wd_fdc_digital_device_base::digital_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
attotime when = floppy ? floppy->get_next_transition(ctime) : attotime::never;
@@ -2348,19 +2354,19 @@ int wd_fdc_digital_t::digital_pll_t::get_next_bit(attotime &tm, floppy_image_dev
return bit;
}
-void wd_fdc_digital_t::digital_pll_t::start_writing(const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::start_writing(const attotime &tm)
{
write_start_time = tm;
write_position = 0;
}
-void wd_fdc_digital_t::digital_pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::stop_writing(floppy_image_device *floppy, const attotime &tm)
{
commit(floppy, tm);
write_start_time = attotime::never;
}
-bool wd_fdc_digital_t::digital_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
+bool wd_fdc_digital_device_base::digital_pll_t::write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit)
{
if(write_start_time.is_never()) {
write_start_time = ctime;
@@ -2390,7 +2396,7 @@ bool wd_fdc_digital_t::digital_pll_t::write_next_bit(bool bit, attotime &tm, flo
return false;
}
-void wd_fdc_digital_t::digital_pll_t::commit(floppy_image_device *floppy, const attotime &tm)
+void wd_fdc_digital_device_base::digital_pll_t::commit(floppy_image_device *floppy, const attotime &tm)
{
if(write_start_time.is_never() || tm == write_start_time)
return;
@@ -2401,9 +2407,9 @@ void wd_fdc_digital_t::digital_pll_t::commit(floppy_image_device *floppy, const
write_position = 0;
}
-fd1771_t::fd1771_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1771, "FD1771", tag, owner, clock, "fd1771", __FILE__)
+fd1771_device::fd1771_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1771, tag, owner, clock)
{
- const static int fd1771_step_times[4] = { 12000, 12000, 20000, 40000 };
+ constexpr static int fd1771_step_times[4] = { 12000, 12000, 20000, 40000 };
step_times = fd1771_step_times;
delay_register_commit = 16;
@@ -2418,7 +2424,7 @@ fd1771_t::fd1771_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1771_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1771_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2426,9 +2432,9 @@ int fd1771_t::calc_sector_size(uint8_t size, uint8_t command) const
return size ? size << 4 : 4096;
}
-fd1781_t::fd1781_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1781, "FD1781", tag, owner, clock, "fd1781", __FILE__)
+fd1781_device::fd1781_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1781, tag, owner, clock)
{
- const static int fd1781_step_times[4] = { 6000, 12000, 20000, 40000 };
+ constexpr static int fd1781_step_times[4] = { 6000, 12000, 20000, 40000 };
step_times = fd1781_step_times;
delay_register_commit = 16;
@@ -2443,7 +2449,7 @@ fd1781_t::fd1781_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1781_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1781_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2451,10 +2457,10 @@ int fd1781_t::calc_sector_size(uint8_t size, uint8_t command) const
return size ? size << 4 : 4096;
}
-const int wd_fdc_t::fd179x_step_times[4] = { 6000, 12000, 20000, 30000 };
-const int wd_fdc_t::fd176x_step_times[4] = { 12000, 24000, 40000, 60000 };
+constexpr int wd_fdc_device_base::fd179x_step_times[4];
+constexpr int wd_fdc_device_base::fd176x_step_times[4];
-fd1791_t::fd1791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1791, "FD1791", tag, owner, clock, "fd1791", __FILE__)
+fd1791_device::fd1791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1791, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2470,7 +2476,7 @@ fd1791_t::fd1791_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1792, "FD1792", tag, owner, clock, "fd1792", __FILE__)
+fd1792_device::fd1792_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1792, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2486,7 +2492,7 @@ fd1792_t::fd1792_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1793, "FD1793", tag, owner, clock, "fd1793", __FILE__)
+fd1793_device::fd1793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1793, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2502,7 +2508,7 @@ fd1793_t::fd1793_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-kr1818vg93_t::kr1818vg93_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, KR1818VG93, "KR1818VG93", tag, owner, clock, "kr1818vg93", __FILE__)
+kr1818vg93_device::kr1818vg93_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, KR1818VG93, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2518,7 +2524,7 @@ kr1818vg93_t::kr1818vg93_t(const machine_config &mconfig, const char *tag, devic
nonsticky_immint = true;
}
-fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1794, "FD1794", tag, owner, clock, "fd1794", __FILE__)
+fd1794_device::fd1794_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1794, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2534,7 +2540,7 @@ fd1794_t::fd1794_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1795, "FD1795", tag, owner, clock, "fd1795", __FILE__)
+fd1795_device::fd1795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1795, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2550,7 +2556,7 @@ fd1795_t::fd1795_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1795_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1795_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2558,7 +2564,7 @@ int fd1795_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-fd1797_t::fd1797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1797, "FD1797", tag, owner, clock, "fd1797", __FILE__)
+fd1797_device::fd1797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1797, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2574,7 +2580,7 @@ fd1797_t::fd1797_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1797_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1797_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2582,7 +2588,7 @@ int fd1797_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-mb8866_t::mb8866_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8866, "MB8866", tag, owner, clock, "mb8866", __FILE__)
+mb8866_device::mb8866_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8866, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2598,7 +2604,7 @@ mb8866_t::mb8866_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8876, "MB8876", tag, owner, clock, "mb8876", __FILE__)
+mb8876_device::mb8876_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8876, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2614,7 +2620,7 @@ mb8876_t::mb8876_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, MB8877, "MB8877", tag, owner, clock, "mb8877", __FILE__)
+mb8877_device::mb8877_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, MB8877, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 4;
@@ -2630,7 +2636,7 @@ mb8877_t::mb8877_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1761, "FD1761", tag, owner, clock, "fd1761", __FILE__)
+fd1761_device::fd1761_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1761, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2646,7 +2652,7 @@ fd1761_t::fd1761_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1763, "FD1763", tag, owner, clock, "fd1763", __FILE__)
+fd1763_device::fd1763_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1763, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2662,7 +2668,7 @@ fd1763_t::fd1763_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1765, "FD1765", tag, owner, clock, "fd1765", __FILE__)
+fd1765_device::fd1765_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1765, tag, owner, clock)
{
step_times = fd176x_step_times;
delay_register_commit = 16;
@@ -2678,7 +2684,7 @@ fd1765_t::fd1765_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1765_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1765_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2686,7 +2692,7 @@ int fd1765_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-fd1767_t::fd1767_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, FD1767, "FD1767", tag, owner, clock, "fd1767", __FILE__)
+fd1767_device::fd1767_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, FD1767, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2702,7 +2708,7 @@ fd1767_t::fd1767_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int fd1767_t::calc_sector_size(uint8_t size, uint8_t command) const
+int fd1767_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2710,7 +2716,7 @@ int fd1767_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd2791_t::wd2791_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2791, "WD2791", tag, owner, clock, "wd2791", __FILE__)
+wd2791_device::wd2791_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2791, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2726,7 +2732,7 @@ wd2791_t::wd2791_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2793, "WD2793", tag, owner, clock, "wd2793", __FILE__)
+wd2793_device::wd2793_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2793, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2742,7 +2748,7 @@ wd2793_t::wd2793_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2795, "WD2795", tag, owner, clock, "wd2795", __FILE__)
+wd2795_device::wd2795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2795, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2758,7 +2764,7 @@ wd2795_t::wd2795_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd2795_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd2795_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2766,7 +2772,7 @@ int wd2795_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd2797_t::wd2797_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_t(mconfig, WD2797, "WD2797", tag, owner, clock, "wd2797", __FILE__)
+wd2797_device::wd2797_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_analog_device_base(mconfig, WD2797, tag, owner, clock)
{
step_times = fd179x_step_times;
delay_register_commit = 16;
@@ -2782,7 +2788,7 @@ wd2797_t::wd2797_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd2797_t::calc_sector_size(uint8_t size, uint8_t command) const
+int wd2797_device::calc_sector_size(uint8_t size, uint8_t command) const
{
if(command & 0x08)
return 128 << (size & 3);
@@ -2790,7 +2796,7 @@ int wd2797_t::calc_sector_size(uint8_t size, uint8_t command) const
return 128 << ((size + 1) & 3);
}
-wd1770_t::wd1770_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1770, "WD1770", tag, owner, clock, "wd1770", __FILE__)
+wd1770_device::wd1770_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1770, tag, owner, clock)
{
step_times = wd_digital_step_times;
delay_register_commit = 32;
@@ -2806,7 +2812,7 @@ wd1770_t::wd1770_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1772, "WD1772", tag, owner, clock, "wd1772", __FILE__)
+wd1772_device::wd1772_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1772, tag, owner, clock)
{
const static int wd1772_step_times[4] = { 12000, 24000, 4000, 6000 };
@@ -2824,12 +2830,12 @@ wd1772_t::wd1772_t(const machine_config &mconfig, const char *tag, device_t *own
nonsticky_immint = false;
}
-int wd1772_t::settle_time() const
+int wd1772_device::settle_time() const
{
return 30000;
}
-wd1773_t::wd1773_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_t(mconfig, WD1773, "WD1773", tag, owner, clock, "wd1773", __FILE__)
+wd1773_device::wd1773_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : wd_fdc_digital_device_base(mconfig, WD1773, tag, owner, clock)
{
step_times = wd_digital_step_times;
delay_register_commit = 32;