summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms34010/tms34010.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms34010/tms34010.h')
-rw-r--r--src/devices/cpu/tms34010/tms34010.h210
1 files changed, 103 insertions, 107 deletions
diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index a4efa7b14da..32b445629a9 100644
--- a/src/devices/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
@@ -9,10 +9,10 @@
***************************************************************************/
-#pragma once
+#ifndef MAME_CPU_TMS34010_TMS34010_H
+#define MAME_CPU_TMS34010_TMS34010_H
-#ifndef __TMS34010_H__
-#define __TMS34010_H__
+#pragma once
/* register indexes for get_reg and set_reg */
@@ -95,77 +95,6 @@ enum
REG_REFCNT
};
-enum
-{
- REG020_VESYNC,
- REG020_HESYNC,
- REG020_VEBLNK,
- REG020_HEBLNK,
- REG020_VSBLNK,
- REG020_HSBLNK,
- REG020_VTOTAL,
- REG020_HTOTAL,
- REG020_DPYCTL, /* matches 010 */
- REG020_DPYSTRT, /* matches 010 */
- REG020_DPYINT, /* matches 010 */
- REG020_CONTROL, /* matches 010 */
- REG020_HSTDATA, /* matches 010 */
- REG020_HSTADRL, /* matches 010 */
- REG020_HSTADRH, /* matches 010 */
- REG020_HSTCTLL, /* matches 010 */
-
- REG020_HSTCTLH, /* matches 010 */
- REG020_INTENB, /* matches 010 */
- REG020_INTPEND, /* matches 010 */
- REG020_CONVSP, /* matches 010 */
- REG020_CONVDP, /* matches 010 */
- REG020_PSIZE, /* matches 010 */
- REG020_PMASKL,
- REG020_PMASKH,
- REG020_CONVMP,
- REG020_CONTROL2,
- REG020_CONFIG,
- REG020_DPYTAP, /* matches 010 */
- REG020_VCOUNT,
- REG020_HCOUNT,
- REG020_DPYADR, /* matches 010 */
- REG020_REFADR,
-
- REG020_DPYSTL,
- REG020_DPYSTH,
- REG020_DPYNXL,
- REG020_DPYNXH,
- REG020_DINCL,
- REG020_DINCH,
- REG020_RES0,
- REG020_HESERR,
- REG020_RES1,
- REG020_RES2,
- REG020_RES3,
- REG020_RES4,
- REG020_SCOUNT,
- REG020_BSFLTST,
- REG020_DPYMSK,
- REG020_RES5,
-
- REG020_SETVCNT,
- REG020_SETHCNT,
- REG020_BSFLTDL,
- REG020_BSFLTDH,
- REG020_RES6,
- REG020_RES7,
- REG020_RES8,
- REG020_RES9,
- REG020_IHOST1L,
- REG020_IHOST1H,
- REG020_IHOST2L,
- REG020_IHOST2H,
- REG020_IHOST3L,
- REG020_IHOST3H,
- REG020_IHOST4L,
- REG020_IHOST4H
-};
-
/* Interrupts that are generated by the processor internally */
#define TMS34010_INT1 0x0002 /* External Interrupt 1 */
#define TMS34010_INT2 0x0004 /* External Interrupt 2 */
@@ -174,18 +103,6 @@ enum
#define TMS34010_WV 0x0800 /* Window Violation Interrupt */
-/* Configuration structure */
-struct tms34010_display_params
-{
- uint16_t vcount; /* most recent VCOUNT */
- uint16_t veblnk, vsblnk; /* start/end of VBLANK */
- uint16_t heblnk, hsblnk; /* start/end of HBLANK */
- uint16_t rowaddr, coladdr; /* row/column addresses */
- uint8_t yoffset; /* y offset from addresses */
- uint8_t enabled; /* video enabled */
-};
-
-
#define MCFG_TMS340X0_HALT_ON_RESET(_value) \
tms340x0_device::set_halt_on_reset(*device, _value);
@@ -195,59 +112,64 @@ struct tms34010_display_params
#define MCFG_TMS340X0_PIXELS_PER_CLOCK(_value) \
tms340x0_device::set_pixels_per_clock(*device, _value);
-typedef device_delegate<void (screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)> scanline_ind16_cb_delegate;
-
-#define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms34010_display_params *params)
+#define TMS340X0_SCANLINE_IND16_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_ind16 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_IND16_CB(_class, _method) \
- tms340x0_device::set_scanline_ind16_callback(*device, scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-
+ tms340x0_device::set_scanline_ind16_callback(*device, tms340x0_device::scanline_ind16_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-typedef device_delegate<void (screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)> scanline_rgb32_cb_delegate;
-#define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms34010_display_params *params)
+#define TMS340X0_SCANLINE_RGB32_CB_MEMBER(_name) void _name(screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const tms340x0_device::display_params *params)
#define MCFG_TMS340X0_SCANLINE_RGB32_CB(_class, _method) \
- tms340x0_device::set_scanline_rgb32_callback(*device, scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ tms340x0_device::set_scanline_rgb32_callback(*device, tms340x0_device::scanline_rgb32_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
#define MCFG_TMS340X0_OUTPUT_INT_CB(_devcb) \
devcb = &tms340x0_device::set_output_int_callback(*device, DEVCB_##_devcb);
-typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate;
-
#define TMS340X0_TO_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_TO_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_to_shiftreg_callback(*device, to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-
+ tms340x0_device::set_to_shiftreg_callback(*device, tms340x0_device::to_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
-typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate;
#define TMS340X0_FROM_SHIFTREG_CB_MEMBER(_name) void _name(address_space &space, offs_t address, uint16_t *shiftreg)
#define MCFG_TMS340X0_FROM_SHIFTREG_CB(_class, _method) \
- tms340x0_device::set_from_shiftreg_callback(*device, from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
+ tms340x0_device::set_from_shiftreg_callback(*device, tms340x0_device::from_shiftreg_cb_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
class tms340x0_device : public cpu_device,
public device_video_interface
{
public:
- // construction/destruction
- tms340x0_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname);
+ // Configuration structure
+ struct display_params
+ {
+ uint16_t vcount; /* most recent VCOUNT */
+ uint16_t veblnk, vsblnk; /* start/end of VBLANK */
+ uint16_t heblnk, hsblnk; /* start/end of HBLANK */
+ uint16_t rowaddr, coladdr; /* row/column addresses */
+ uint8_t yoffset; /* y offset from addresses */
+ uint8_t enabled; /* video enabled */
+ };
+
+ typedef device_delegate<void (screen_device &screen, bitmap_ind16 &bitmap, int scanline, const display_params *params)> scanline_ind16_cb_delegate;
+ typedef device_delegate<void (screen_device &screen, bitmap_rgb32 &bitmap, int scanline, const display_params *params)> scanline_rgb32_cb_delegate;
+ typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> to_shiftreg_cb_delegate;
+ typedef device_delegate<void (address_space &space, offs_t address, uint16_t *shiftreg)> from_shiftreg_cb_delegate;
static void set_halt_on_reset(device_t &device, bool halt_on_reset) { downcast<tms340x0_device &>(device).m_halt_on_reset = halt_on_reset; }
static void set_pixel_clock(device_t &device, uint32_t pixclock) { downcast<tms340x0_device &>(device).m_pixclock = pixclock; }
static void set_pixels_per_clock(device_t &device, int pixperclock) { downcast<tms340x0_device &>(device).m_pixperclock = pixperclock; }
static void set_scanline_ind16_callback(device_t &device, scanline_ind16_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_ind16_cb = callback; }
static void set_scanline_rgb32_callback(device_t &device, scanline_rgb32_cb_delegate callback) { downcast<tms340x0_device &>(device).m_scanline_rgb32_cb = callback; }
- template<class _Object> static devcb_base &set_output_int_callback(device_t &device, _Object object) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(object); }
+ template <class Object> static devcb_base &set_output_int_callback(device_t &device, Object &&cb) { return downcast<tms340x0_device &>(device).m_output_int_cb.set_callback(std::forward<Object>(cb)); }
static void set_to_shiftreg_callback(device_t &device, to_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_to_shiftreg_cb = callback; }
static void set_from_shiftreg_callback(device_t &device, from_shiftreg_cb_delegate callback) { downcast<tms340x0_device &>(device).m_from_shiftreg_cb = callback; }
- void get_display_params(tms34010_display_params *params);
+ void get_display_params(display_params *params);
void tms34010_state_postload();
uint32_t tms340x0_ind16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@@ -263,6 +185,80 @@ public:
TIMER_CALLBACK_MEMBER(scanline_callback);
protected:
+ enum
+ {
+ REG020_VESYNC,
+ REG020_HESYNC,
+ REG020_VEBLNK,
+ REG020_HEBLNK,
+ REG020_VSBLNK,
+ REG020_HSBLNK,
+ REG020_VTOTAL,
+ REG020_HTOTAL,
+ REG020_DPYCTL, /* matches 010 */
+ REG020_DPYSTRT, /* matches 010 */
+ REG020_DPYINT, /* matches 010 */
+ REG020_CONTROL, /* matches 010 */
+ REG020_HSTDATA, /* matches 010 */
+ REG020_HSTADRL, /* matches 010 */
+ REG020_HSTADRH, /* matches 010 */
+ REG020_HSTCTLL, /* matches 010 */
+
+ REG020_HSTCTLH, /* matches 010 */
+ REG020_INTENB, /* matches 010 */
+ REG020_INTPEND, /* matches 010 */
+ REG020_CONVSP, /* matches 010 */
+ REG020_CONVDP, /* matches 010 */
+ REG020_PSIZE, /* matches 010 */
+ REG020_PMASKL,
+ REG020_PMASKH,
+ REG020_CONVMP,
+ REG020_CONTROL2,
+ REG020_CONFIG,
+ REG020_DPYTAP, /* matches 010 */
+ REG020_VCOUNT,
+ REG020_HCOUNT,
+ REG020_DPYADR, /* matches 010 */
+ REG020_REFADR,
+
+ REG020_DPYSTL,
+ REG020_DPYSTH,
+ REG020_DPYNXL,
+ REG020_DPYNXH,
+ REG020_DINCL,
+ REG020_DINCH,
+ REG020_RES0,
+ REG020_HESERR,
+ REG020_RES1,
+ REG020_RES2,
+ REG020_RES3,
+ REG020_RES4,
+ REG020_SCOUNT,
+ REG020_BSFLTST,
+ REG020_DPYMSK,
+ REG020_RES5,
+
+ REG020_SETVCNT,
+ REG020_SETHCNT,
+ REG020_BSFLTDL,
+ REG020_BSFLTDH,
+ REG020_RES6,
+ REG020_RES7,
+ REG020_RES8,
+ REG020_RES9,
+ REG020_IHOST1L,
+ REG020_IHOST1H,
+ REG020_IHOST2L,
+ REG020_IHOST2H,
+ REG020_IHOST3L,
+ REG020_IHOST3H,
+ REG020_IHOST4L,
+ REG020_IHOST4H
+ };
+
+ // construction/destruction
+ tms340x0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
@@ -1032,7 +1028,7 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
-extern const device_type TMS34010;
+DECLARE_DEVICE_TYPE(TMS34010, tms34010_device)
class tms34020_device : public tms340x0_device
{
@@ -1049,7 +1045,7 @@ protected:
virtual offs_t disasm_disassemble(std::ostream &stream, offs_t pc, const uint8_t *oprom, const uint8_t *opram, uint32_t options) override;
};
-extern const device_type TMS34020;
+DECLARE_DEVICE_TYPE(TMS34020, tms34020_device)
@@ -1067,4 +1063,4 @@ extern const device_type TMS34020;
CPU_DISASSEMBLE( tms34010 );
CPU_DISASSEMBLE( tms34020 );
-#endif /* __TMS34010_H__ */
+#endif // MAME_CPU_TMS34010_TMS34010_H