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
+ if ((a&0xe700e0)==0xc00000) // VDP\r
+ d=PicoVideoRead(a);\r
+ else d=OtherRead16(a&~1, 8);\r
+ if ((a&1)==0) d>>=8;\r
+\r
\r
-end:\r
#ifdef __debug_io\r
dprintf("r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);\r
#endif\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
+ if ((a&0xe700e0)==0xc00000)\r
+ d = PicoVideoRead(a);\r
+ else d = OtherRead16(a, 16);\r
\r
end:\r
#ifdef __debug_io\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
+ if ((a&0xe700e0)==0xc00000)\r
+ d = (PicoVideoRead(a)<<16)|PicoVideoRead(a+2);\r
+ else d = (OtherRead16(a, 32)<<16)|OtherRead16(a+2, 32);\r
\r
end:\r
#ifdef __debug_io\r
log_io(a, 16, 1);\r
\r
a&=0xfffffe;\r
+ if ((a&0xe700e0)==0xc00000) { PicoVideoWrite(a,(u16)d); return; } // VDP\r
OtherWrite16(a,d);\r
}\r
\r
log_io(a, 32, 1);\r
\r
a&=0xfffffe;\r
+ if ((a&0xe700e0)==0xc00000)\r
+ {\r
+ // VDP:\r
+ PicoVideoWrite(a, (u16)(d>>16));\r
+ PicoVideoWrite(a+2,(u16)d);\r
+ return;\r
+ }\r
+\r
OtherWrite16(a, (u16)(d>>16));\r
OtherWrite16(a+2,(u16)d);\r
}\r
{\r
u8 ret = 0;\r
\r
-#ifndef _USE_DRZ80\r
- if (a<0x4000) return Pico.zram[a&0x1fff];\r
-#endif\r
-\r
if ((a>>13)==2) // 0x4000-0x5fff (Charles MacDonald)\r
{\r
if (PicoOpt&1) ret = (u8) YM2612Read();\r
return ret;\r
}\r
\r
-#ifdef _USE_DRZ80\r
- // should not be needed || dprintf("z80_read RAM");\r
+ // should not be needed, cores should be able to access RAM themselves\r
if (a<0x4000) return Pico.zram[a&0x1fff];\r
-#endif\r
\r
elprintf(EL_ANOMALY, "z80 invalid r8 [%06x] %02x", a, ret);\r
return ret;\r
PICO_INTERNAL_ASM void z80_write(unsigned int a, unsigned char data)\r
#endif\r
{\r
-#ifndef _USE_DRZ80\r
- if (a<0x4000) { Pico.zram[a&0x1fff]=data; return; }\r
-#endif\r
-\r
if ((a>>13)==2) // 0x4000-0x5fff (Charles MacDonald)\r
{\r
if(PicoOpt&1) emustatus|=YM2612Write(a, data) & 1;\r
return;\r
}\r
\r
-#ifdef _USE_DRZ80\r
- // should not be needed, drZ80 knows how to access RAM itself || dprintf("z80_write RAM @ %08x", lr);\r
+ // should not be needed\r
if (a<0x4000) { Pico.zram[a&0x1fff]=data; return; }\r
-#endif\r
\r
elprintf(EL_ANOMALY, "z80 invalid w8 [%06x] %02x", a, data);\r
}\r