summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/gaelco3d.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/gaelco3d.h')
-rw-r--r--src/mame/machine/gaelco3d.h73
1 files changed, 36 insertions, 37 deletions
diff --git a/src/mame/machine/gaelco3d.h b/src/mame/machine/gaelco3d.h
index 50e9fafdaed..85ba9283a3e 100644
--- a/src/mame/machine/gaelco3d.h
+++ b/src/mame/machine/gaelco3d.h
@@ -5,6 +5,10 @@
Gaelco 3D serial hardware
***************************************************************************/
+#ifndef MAME_MACHINE_GAELCO3D_H
+#define MAME_MACHINE_GAELCO3D_H
+
+#pragma once
/***************************************************************************
@@ -14,20 +18,6 @@
#define MCFG_GAELCO_SERIAL_IRQ_HANDLER(_devcb) \
devcb = &gaelco_serial_device::set_irq_handler(*device, DEVCB_##_devcb);
-/* external status bits */
-#define GAELCOSER_STATUS_READY 0x01
-#define GAELCOSER_STATUS_RTS 0x02
-
-/* only RTS currently understood ! */
-//#define GAELCOSER_STATUS_DTR 0x04
-
-#define GAELCOSER_EXT_STATUS_MASK 0x03
-
-/* internal bits follow ... */
-#define GAELCOSER_STATUS_IRQ_ENABLE 0x10
-#define GAELCOSER_STATUS_RESET 0x20
-#define GAELCOSER_STATUS_SEND 0x40
-
/***************************************************************************
@@ -36,34 +26,14 @@
/* ----- device interface ----- */
-struct buf_t
-{
- volatile uint8_t data;
- volatile uint8_t stat;
- volatile int cnt;
- volatile int data_cnt;
-};
-
-struct shmem_t
-{
- buf_t buf[2];
-};
-
-struct osd_shared_mem
-{
- char *fn;
- size_t size;
- void *ptr;
- int creator;
-};
-
class gaelco_serial_device : public device_t
{
public:
+ static constexpr unsigned EXT_STATUS_MASK = 0x03;
+
gaelco_serial_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- ~gaelco_serial_device() {}
- template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<gaelco_serial_device &>(device).m_irq_handler.set_callback(object); }
+ template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<gaelco_serial_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
DECLARE_READ8_MEMBER( status_r);
DECLARE_WRITE8_MEMBER( data_w);
@@ -91,6 +61,33 @@ protected:
virtual void device_reset() override;
private:
+ struct buf_t
+ {
+ volatile uint8_t data;
+ volatile uint8_t stat;
+ volatile int cnt;
+ volatile int data_cnt;
+ };
+
+ struct shmem_t
+ {
+ buf_t buf[2];
+ };
+
+ struct osd_shared_mem
+ {
+ char *fn;
+ size_t size;
+ void *ptr;
+ int creator;
+ };
+
+ static osd_shared_mem *osd_sharedmem_alloc(const char *path, int create, size_t size);
+ static void osd_sharedmem_free(osd_shared_mem *os_shmem);
+ static void *osd_sharedmem_ptr(osd_shared_mem *os_shmem);
+
+ static void buf_reset(buf_t *buf);
+
// internal state
devcb_write_line m_irq_handler;
@@ -114,3 +111,5 @@ private:
};
extern const device_type GAELCO_SERIAL;
+
+#endif // MAME_MACHINE_GAELCO3D_H