summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/oricext/microdisc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/oricext/microdisc.h')
-rw-r--r--src/devices/bus/oricext/microdisc.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/devices/bus/oricext/microdisc.h b/src/devices/bus/oricext/microdisc.h
new file mode 100644
index 00000000000..bf790c4af52
--- /dev/null
+++ b/src/devices/bus/oricext/microdisc.h
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert
+#ifndef __MICRODISC_H__
+#define __MICRODISC_H__
+
+#include "oricext.h"
+#include "imagedev/floppy.h"
+#include "machine/wd_fdc.h"
+
+extern const device_type MICRODISC;
+
+class microdisc_device : public oricext_device
+{
+public:
+ microdisc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual ~microdisc_device();
+
+ DECLARE_FLOPPY_FORMATS(floppy_formats);
+ DECLARE_ADDRESS_MAP(map, 8);
+ DECLARE_WRITE8_MEMBER(port_314_w);
+ DECLARE_READ8_MEMBER(port_314_r);
+ DECLARE_READ8_MEMBER(port_318_r);
+
+ DECLARE_WRITE_LINE_MEMBER(fdc_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(fdc_drq_w);
+ DECLARE_WRITE_LINE_MEMBER(fdc_hld_w);
+
+protected:
+ enum {
+ P_IRQEN = 0x01,
+ P_ROMDIS = 0x02,
+ P_DDS = 0x04,
+ P_DDEN = 0x08,
+ P_SS = 0x10,
+ P_DRIVE = 0x60,
+ P_EPROM = 0x80
+ };
+
+ required_device<fd1793_t> fdc;
+
+ UINT8 *microdisc_rom;
+ floppy_image_device *floppies[4];
+ UINT8 port_314;
+ bool intrq_state, drq_state, hld_state;
+
+ virtual void device_start();
+ virtual void device_reset();
+ const rom_entry *device_rom_region() const;
+ machine_config_constructor device_mconfig_additions() const;
+
+ void remap();
+};
+
+#endif