-static dcpu16_hw_signal_t clock_reset_;
-static dcpu16_hw_signal_t clock_cycle_;
-static dcpu16_hw_signal_t clock_hwi_;
-static struct dcpu16_hw hw_ = {
- .name_ = "Generic Clock (compatible)",
- .id_l = 0xb402,
- .id_h = 0x12d0,
- .ver = 0x0001,
- .mfg_l = 0x0000,
- .mfg_h = 0x0000,
- .hwi = clock_hwi_,
- .cycle = clock_cycle_,
- .reset = clock_reset_,
- .data = (struct clock_ *)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 */