Index: cpu/m68kconf.h
===================================================================
--- cpu/m68kconf.h	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
+++ cpu/m68kconf.h	(revision 9674f1a09654c5e51d66186a214b74713437e772)
@@ -65,5 +65,5 @@
 
 /* Turn ON if you want to use the following M68K variants */
-#define M68K_EMULATE_010            OPT_ON
+#define M68K_EMULATE_010            OPT_OFF
 #define M68K_EMULATE_EC020          OPT_OFF
 #define M68K_EMULATE_020            OPT_OFF
@@ -132,5 +132,5 @@
  * instruction.
  */
-#define M68K_INSTRUCTION_HOOK       OPT_OFF
+#define M68K_INSTRUCTION_HOOK       OPT_ON
 #define M68K_INSTRUCTION_CALLBACK() your_instruction_hook_function()
 
Index: emu/cpu.c
===================================================================
--- emu/cpu.c	(revision 4c71d39d7a49a544bcfc00821d3634af9b073eca)
+++ emu/cpu.c	(revision 9674f1a09654c5e51d66186a214b74713437e772)
@@ -262,6 +262,6 @@
 	if (addr <= APP_START - 2) {
 		return
-				((uint32_t)ram_data[addr - 0] << 8) |
-				((uint32_t)ram_data[addr - 1] << 0);
+				((uint32_t)ram_data[addr + 0] << 8) |
+				((uint32_t)ram_data[addr + 1] << 0);
 	}
 
@@ -277,5 +277,4 @@
 			addr += ROM_START;
 		}
-
 		else if (addr == 4) {
 			addr += ROM_START;
@@ -439,4 +438,161 @@
 }
 
+static void inst_cb(void)
+{
+	uint32_t pc = m68k_get_reg(NULL, M68K_REG_PC);
+	uint32_t op = m68k_read_memory_16(pc);
+
+	if (op == 0x4e4d) {
+		uint32_t sp = m68k_get_reg(NULL, M68K_REG_SP);
+		uint32_t fun = m68k_read_memory_16(sp);
+
+		switch (fun) {
+		case 1:
+			ver2("BIOS B_RDAV %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 2:
+			ver2("BIOS B_GETC %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 3:
+			ver2("BIOS B_PUTC %u %u",
+					m68k_read_memory_16(sp + 2),
+					m68k_read_memory_16(sp + 4));
+			break;
+
+		case 4:
+			ver2("BIOS B_RDWR %u 0x%08x %u %u %u",
+					m68k_read_memory_16(sp + 2),
+					m68k_read_memory_32(sp + 4),
+					m68k_read_memory_16(sp + 8),
+					m68k_read_memory_16(sp + 10),
+					m68k_read_memory_16(sp + 12));
+			break;
+
+		case 5:
+			ver2("BIOS B_SETV %u 0x%08x",
+					m68k_read_memory_16(sp + 2),
+					m68k_read_memory_32(sp + 4));
+			break;
+
+		case 7:
+			ver2("BIOS B_GBPB %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 8:
+			ver2("BIOS B_THRE %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 9:
+			ver2("BIOS B_MCHG %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 10:
+			ver2("BIOS B_DMAP");
+			break;
+
+		default:
+			fail("invalid function: BIOS %d", fun);
+		}
+	}
+	else if (op == 0x4e4e) {
+		uint32_t sp = m68k_get_reg(NULL, M68K_REG_SP);
+		uint32_t fun = m68k_read_memory_16(sp);
+
+		switch (fun) {
+		case 0:
+			ver2("XBIOS X_PIOREC %u", m68k_read_memory_16(sp + 2));
+			break;
+
+		case 1:
+			ver2("XBIOS X_SETPRT %u 0x%02x 0x%02x 0x%02x 0x%02x",
+					m68k_read_memory_16(sp + 2),
+					m68k_read_memory_16(sp + 4),
+					m68k_read_memory_16(sp + 6),
+					m68k_read_memory_16(sp + 8),
+					m68k_read_memory_16(sp + 10));
+			break;
+
+		case 2:
+			ver2("XBIOS X_FLOPRD 0x%08x 0x%08x %u %u %u %u %u",
+					m68k_read_memory_32(sp + 2),
+					m68k_read_memory_32(sp + 6),
+					m68k_read_memory_16(sp + 10),
+					m68k_read_memory_16(sp + 12),
+					m68k_read_memory_16(sp + 14),
+					m68k_read_memory_16(sp + 16),
+					m68k_read_memory_16(sp + 18));
+			break;
+
+		case 3:
+			ver2("XBIOS X_FLOPWR 0x%08x 0x%08x %u %u %u %u %u",
+					m68k_read_memory_32(sp + 2),
+					m68k_read_memory_32(sp + 6),
+					m68k_read_memory_16(sp + 10),
+					m68k_read_memory_16(sp + 12),
+					m68k_read_memory_16(sp + 14),
+					m68k_read_memory_16(sp + 16),
+					m68k_read_memory_16(sp + 18));
+			break;
+
+		case 4:
+			ver2("XBIOS X_FORMAT 0x%08x 0x%08x %u %u %u %u %u 0x%08x %u",
+					m68k_read_memory_32(sp + 2),
+					m68k_read_memory_32(sp + 6),
+					m68k_read_memory_16(sp + 10),
+					m68k_read_memory_16(sp + 12),
+					m68k_read_memory_16(sp + 14),
+					m68k_read_memory_16(sp + 16),
+					m68k_read_memory_16(sp + 18),
+					m68k_read_memory_32(sp + 20),
+					m68k_read_memory_16(sp + 24));
+			break;
+
+		case 5:
+			ver2("XBIOS X_VERIFY 0x%08x 0x%08x %u %u %u %u %u",
+					m68k_read_memory_32(sp + 2),
+					m68k_read_memory_32(sp + 6),
+					m68k_read_memory_16(sp + 10),
+					m68k_read_memory_16(sp + 12),
+					m68k_read_memory_16(sp + 14),
+					m68k_read_memory_16(sp + 16),
+					m68k_read_memory_16(sp + 18));
+			break;
+
+		case 6:
+			ver2("XBIOS X_PRBOOT 0x%08x %u %u %u",
+					m68k_read_memory_32(sp + 2),
+					m68k_read_memory_16(sp + 6),
+					m68k_read_memory_16(sp + 8),
+					m68k_read_memory_16(sp + 10));
+			break;
+
+		case 7:
+			ver2("XBIOS X_RANDOM");
+			break;
+
+		case 8:
+			ver2("XBIOS X_ANALOG");
+			break;
+
+		case 9:
+			ver2("XBIOS X_CLRAFI");
+			break;
+
+		case 10:
+			ver2("XBIOS X_APICHK");
+			break;
+
+		case 11:
+			ver2("XBIOS X_MTDEFS ");
+			break;
+
+		default:
+			fail("invalid function: XBIOS %d", fun);
+		}
+	}
+}
+
 void cpu_loop(const char *bios)
 {
@@ -447,4 +603,5 @@
 	m68k_init();
 	m68k_set_cpu_type(M68K_CPU_TYPE_68000);
+	m68k_set_instr_hook_callback(inst_cb);
 	m68k_pulse_reset();
 
