-static dcpu16_hw_signal_t spc2000_reset_;
-static dcpu16_hw_signal_t spc2000_cycle_;
-static dcpu16_hw_signal_t spc2000_hwi_;
-static struct dcpu16_hw hw_ = {
- .name_ = "SPC2000 - Suspension Chamber 2000",
- .id_l = 0x1d9d,
- .id_h = 0x40e4,
- .ver = 0x005e,
- .mfg_l = 0x8b36,
- .mfg_h = 0x1c6c,
- .hwi = spc2000_hwi_,
- .cycle = spc2000_cycle_,
- .reset = spc2000_reset_,
- .data = (struct spc2000_ *)NULL
-};
+#define MSG_(__level__, __vm__, ...) do { ((__vm__) ? ((struct dcpu16 *)(__vm__))->msg_cb_ : dcpu16_msg_)(__level__, __VA_ARGS__); } while (0)
+#define MSG_INFO(__vm__, ...) MSG_(DCPU16_MSG_INFO, __vm__, __VA_ARGS__)
+#define MSG_ERROR(__vm__, ...) MSG_(DCPU16_MSG_ERROR, __vm__, __VA_ARGS__)
+#ifdef DEBUG
+#define MSG_DEBUG(__vm__, ...) MSG_(DCPU16_MSG_DEBUG, __vm__, __VA_ARGS__)
+#else /* DEBUG */
+#define MSG_DEBUG(__vm__, ...) do { } while (0)
+#endif /* DEBUG */