summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/imagedev/floppy.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/imagedev/floppy.h')
-rw-r--r--src/devices/imagedev/floppy.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h
index 9f2d494fb7f..5954e72883f 100644
--- a/src/devices/imagedev/floppy.h
+++ b/src/devices/imagedev/floppy.h
@@ -76,6 +76,7 @@ public:
typedef delegate<void (floppy_image_device *, int)> index_pulse_cb;
typedef delegate<void (floppy_image_device *, int)> ready_cb;
typedef delegate<void (floppy_image_device *, int)> wpt_cb;
+ typedef delegate<void (floppy_image_device *, int)> led_cb;
// construction/destruction
virtual ~floppy_image_device();
@@ -109,12 +110,14 @@ public:
void setup_index_pulse_cb(index_pulse_cb cb);
void setup_ready_cb(ready_cb cb);
void setup_wpt_cb(wpt_cb cb);
+ void setup_led_cb(led_cb cb);
std::vector<uint32_t> &get_buffer() { return image->get_buffer(cyl, ss, subcyl); }
int get_cyl() { return cyl; }
void mon_w(int state);
bool ready_r();
+ void set_ready(bool state);
double get_pos();
bool wpt_r() { return wpt; }
@@ -131,6 +134,7 @@ public:
void ss_w(int state) { ss = state; }
void inuse_w(int state) { }
void dskchg_w(int state) { if (dskchg_writable) dskchg = state; }
+ void ds_w(int state) { ds = state; check_led(); }
void index_resync();
attotime time_next_index();
@@ -173,12 +177,15 @@ protected:
bool dskchg_writable;
bool has_trk00_sensor;
+ int drive_index;
+
/* state of input lines */
int dir; /* direction */
int stp; /* step */
int wtg; /* write gate */
int mon; /* motor on */
int ss; /* side select */
+ int ds; /* drive select */
/* state of output lines */
int idx; /* index pulse */
@@ -203,7 +210,9 @@ protected:
index_pulse_cb cur_index_pulse_cb;
ready_cb cur_ready_cb;
wpt_cb cur_wpt_cb;
+ led_cb cur_led_cb;
+ void check_led();
uint32_t find_position(attotime &base, const attotime &when);
int find_index(uint32_t position, const std::vector<uint32_t> &buf);
void write_zone(uint32_t *buf, int &cells, int &index, uint32_t spos, uint32_t epos, uint32_t mg);