extern unsigned int ppop;\r
#endif\r
\r
+#ifdef IO_STATS\r
+void log_io(unsigned int addr, int bits, int rw);\r
+#else\r
+#define log_io(...)\r
+#endif\r
+\r
#if defined(EMU_C68K) || defined(EMU_A68K)\r
static __inline int PicoMemBase(u32 pc)\r
{\r
#endif\r
\r
if (a<Pico.romsize) { d = *(u8 *)(Pico.rom+(a^1)); goto end; } // Rom\r
+ log_io(a, 8, 0);\r
if ((a&0xff4000)==0xa00000) { d=z80Read8(a); goto end; } // Z80 Ram\r
\r
d=OtherRead16(a&~1, 8); if ((a&1)==0) d>>=8;\r
#endif\r
\r
if (a<Pico.romsize) { d = *(u16 *)(Pico.rom+a); goto end; } // Rom\r
+ log_io(a, 16, 0);\r
\r
d = OtherRead16(a, 16);\r
\r
}\r
\r
if (a<Pico.romsize) { u16 *pm=(u16 *)(Pico.rom+a); d = (pm[0]<<16)|pm[1]; goto end; } // Rom\r
+ log_io(a, 32, 0);\r
\r
d = (OtherRead16(a, 32)<<16)|OtherRead16(a+2, 32);\r
\r
// dprintf("w8 : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
\r
if ((a&0xe00000)==0xe00000) { *(u8 *)(Pico.ram+((a^1)&0xffff))=d; return; } // Ram\r
+ log_io(a, 8, 1);\r
\r
a&=0xffffff;\r
OtherWrite8(a,d,8);\r
// dprintf("w16: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
\r
if ((a&0xe00000)==0xe00000) { *(u16 *)(Pico.ram+(a&0xfffe))=d; return; } // Ram\r
+ log_io(a, 16, 1);\r
\r
a&=0xfffffe;\r
OtherWrite16(a,d);\r
pm[0]=(u16)(d>>16); pm[1]=(u16)d;\r
return;\r
}\r
+ log_io(a, 32, 1);\r
\r
a&=0xfffffe;\r
OtherWrite16(a, (u16)(d>>16));\r