summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ti99x/990_dk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ti99x/990_dk.h')
-rw-r--r--src/devices/bus/ti99x/990_dk.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/devices/bus/ti99x/990_dk.h b/src/devices/bus/ti99x/990_dk.h
new file mode 100644
index 00000000000..2f83660ae75
--- /dev/null
+++ b/src/devices/bus/ti99x/990_dk.h
@@ -0,0 +1,74 @@
+// license:GPL-2.0+
+// copyright-holders:Raphael Nabet
+/*
+ 990_dk.h: include file for 990_dk.c
+*/
+
+#ifndef __990_DK__
+#define __990_DK__
+
+extern const device_type FD800;
+
+#define MAX_FLOPPIES 4
+
+class fd800_legacy_device : public device_t
+{
+public:
+ fd800_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ DECLARE_READ8_MEMBER( cru_r );
+ DECLARE_WRITE8_MEMBER( cru_w );
+ template<class _Object> static devcb_base &static_set_int_callback(device_t &device, _Object object)
+ {
+ return downcast<fd800_legacy_device &>(device).m_int_line.set_callback(object);
+ }
+
+private:
+ void device_start(void);
+ void device_reset(void);
+ void set_interrupt_line();
+
+ int read_id(int unit, int head, int *cylinder_id, int *sector_id);
+ int find_sector(int unit, int head, int sector, int *data_id);
+ int do_seek(int unit, int cylinder, int head);
+ int do_restore(int unit);
+ void do_read(void);
+ void do_write(void);
+ void do_cmd(void);
+
+ UINT16 m_recv_buf;
+ UINT16 m_stat_reg;
+ UINT16 m_xmit_buf;
+ UINT16 m_cmd_reg;
+
+ int m_interrupt_f_f;
+ devcb_write_line m_int_line;
+
+ enum buf_mode_t {
+ bm_off, bm_read, bm_write
+ };
+
+ UINT8 m_buf[128];
+ int m_buf_pos;
+ buf_mode_t m_buf_mode;
+ int m_unit;
+// int m_head;
+ int m_sector;
+ /*int m_non_seq_mode;*/
+// int m_ddam;
+
+ struct
+ {
+ // legacy_floppy_image_device *img;
+ int phys_cylinder;
+ int log_cylinder[2];
+ int seclen;
+ } m_drv[MAX_FLOPPIES];
+};
+
+// LEGACY_FLOPPY_OPTIONS_EXTERN(fd800);
+
+#define MCFG_FD800_INT_HANDLER( _intcallb ) \
+ devcb = &fd800_legacy_device::static_set_int_callback( *device, DEVCB_##_intcallb );
+
+#endif