+/* we call this sort of function for emitting a readable message */
+typedef void (dcpu16_msg_cb_t)(unsigned int, char *, ...);
+
+/* we may emit any of these types of messages */
+enum dcpu16_msg_type {
+ DCPU16_MSG_ERROR = 0,
+ DCPU16_MSG_INFO,
+ DCPU16_MSG_DEBUG
+};
+
+/* update the default message handler */
+dcpu16_msg_cb_t *dcpu16_msg_set_default(dcpu16_msg_cb_t *);
+
+/* hardware devices may want to call this directly, without a core context */
+extern dcpu16_msg_cb_t *dcpu16_msg_;
+