summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/upd765.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/upd765.h')
-rw-r--r--src/devices/machine/upd765.h58
1 files changed, 28 insertions, 30 deletions
diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h
index 9c28f4d17d2..5465ea7c10d 100644
--- a/src/devices/machine/upd765.h
+++ b/src/devices/machine/upd765.h
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef MAME_DEVICES_MACHINE_UPD765_H
-#define MAME_DEVICES_MACHINE_UPD765_H
+#ifndef MAME_MACHINE_UPD765_H
+#define MAME_MACHINE_UPD765_H
#pragma once
@@ -61,8 +61,8 @@ public:
protected:
upd765_family_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
TIMER_CALLBACK_MEMBER(update_floppy);
@@ -245,7 +245,7 @@ protected:
int fifo_pos, fifo_expected, command_pos, result_pos, sectors_read;
bool fifo_write;
- uint8_t dor, dsr, msr, fifo[16], command[16], result[16];
+ uint8_t dor, dsr, fifo[16], command[16], result[16];
uint8_t st1, st2, st3;
uint8_t fifocfg;
uint8_t precomp;
@@ -253,6 +253,7 @@ protected:
int sector_size;
int cur_rate;
int selected_drive;
+ u8 drive_busy;
emu_timer *poll_timer;
@@ -349,8 +350,8 @@ protected:
bool read_one_bit(const attotime &limit);
bool write_one_bit(const attotime &limit);
- virtual u8 get_drive_busy() const { return 0; }
- virtual void clr_drive_busy() { }
+ u8 get_drive_busy() const { return drive_busy; }
+ void clr_drive_busy() { drive_busy = 0; }
};
class upd765a_device : public upd765_family_device {
@@ -363,7 +364,7 @@ public:
}
upd765a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class upd765b_device : public upd765_family_device {
@@ -376,7 +377,7 @@ public:
}
upd765b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class i8272a_device : public upd765_family_device {
@@ -388,7 +389,7 @@ public:
}
i8272a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class i82072_device : public upd765_family_device {
@@ -400,10 +401,10 @@ public:
}
i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
protected:
- virtual void device_start() override;
+ virtual void device_start() override ATTR_COLD;
enum motorcfg_mask
{
@@ -418,8 +419,6 @@ protected:
virtual void execute_command(int cmd) override;
virtual void command_end(floppy_info &fi, bool data_completion) override;
virtual void index_callback(floppy_image_device *floppy, int state) override;
- virtual u8 get_drive_busy() const override { return drive_busy; }
- virtual void clr_drive_busy() override { drive_busy = 0; }
void motor_control(int fid, bool start_motor);
@@ -427,7 +426,6 @@ private:
u8 motorcfg;
u8 motor_off_counter;
u8 motor_on_counter;
- u8 drive_busy;
int delayed_command;
};
@@ -441,8 +439,8 @@ public:
protected:
ps2_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- virtual void device_start() override;
- virtual void device_reset() override;
+ virtual void device_start() override ATTR_COLD;
+ virtual void device_reset() override ATTR_COLD;
virtual void soft_reset() override;
virtual int check_command() override;
virtual void execute_command(int cmd) override;
@@ -454,7 +452,7 @@ class smc37c78_device : public ps2_fdc_device {
public:
smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class upd72065_device : public upd765_family_device {
@@ -468,7 +466,7 @@ public:
upd72065_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
virtual void auxcmd_w(uint8_t data);
protected:
@@ -498,21 +496,21 @@ public:
}
n82077aa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class pc_fdc_superio_device : public upd765_family_device {
public:
pc_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class dp8473_device : public upd765_family_device {
public:
dp8473_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
protected:
virtual void soft_reset() override;
@@ -527,7 +525,7 @@ public:
}
pc8477a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class pc8477b_device : public ps2_fdc_device {
@@ -539,7 +537,7 @@ public:
}
pc8477b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
};
class wd37c65c_device : public upd765_family_device {
@@ -556,7 +554,7 @@ public:
void set_clock2(uint32_t clock) { m_clock2 = clock; }
void set_clock2(const XTAL &xtal) { set_clock2(xtal.value()); }
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
virtual uint8_t get_st3(floppy_info &fi) override;
private:
@@ -570,7 +568,7 @@ public:
// configuration helpers
auto input_handler() { return m_input_handler.bind(); }
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
uint8_t input_r();
private:
@@ -581,12 +579,12 @@ class tc8566af_device : public upd765_family_device {
public:
tc8566af_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
void cr1_w(uint8_t data);
protected:
- virtual void device_start() override;
+ virtual void device_start() override ATTR_COLD;
private:
uint8_t m_cr1;
@@ -596,7 +594,7 @@ class hd63266f_device : public upd765_family_device {
public:
hd63266f_device(const machine_config &mconfig, const char *tag, device_t* owner, uint32_t clock);
- virtual void map(address_map &map) override;
+ virtual void map(address_map &map) override ATTR_COLD;
auto inp_rd_callback() { return inp_cb.bind(); } // this is really the ts signal
void rate_w(u8 state) { state ? set_rate(500000) : set_rate(250000); }
@@ -637,4 +635,4 @@ DECLARE_DEVICE_TYPE(MCS3201, mcs3201_device)
DECLARE_DEVICE_TYPE(TC8566AF, tc8566af_device)
DECLARE_DEVICE_TYPE(HD63266F, hd63266f_device)
-#endif // MAME_DEVICES_MACHINE_UPD765_H
+#endif // MAME_MACHINE_UPD765_H