+// top-level handlers that cores can use
+// (or alternatively build them into themselves)
+// XXX: unhandled: *16 and *32 might cross the bank boundaries
+typedef u32 (cpu68k_read_f)(u32 a);
+typedef void (cpu68k_write_f)(u32 a, u32 d);
+
+extern u32 m68k_read8(u32 a);
+extern u32 m68k_read16(u32 a);
+extern void m68k_write8(u32 a, u8 d);
+extern void m68k_write16(u32 a, u16 d);
+
+// z80
+#define Z80_MEM_SHIFT 13
+extern uptr z80_read_map [0x10000 >> Z80_MEM_SHIFT];
+extern uptr z80_write_map[0x10000 >> Z80_MEM_SHIFT];
+typedef unsigned char (z80_read_f)(unsigned short a);
+typedef void (z80_write_f)(unsigned int a, unsigned char data);
+