// For commercial use, separate licencing terms must be obtained.\r
\r
\r
-#define __debug_io\r
+//#define __debug_io\r
\r
#include "PicoInt.h"\r
\r
\r
#ifndef EMU_CORE_DEBUG\r
// sram\r
- if(a >= SRam.start && a <= SRam.end && (Pico.m.sram_reg&5)) {\r
+ if (a >= SRam.start && a <= SRam.end && (Pico.m.sram_reg&5)) {\r
d = SRAMRead(a);\r
elprintf(EL_SRAMIO, "sram r8 [%06x] %02x @ %06x", a, d, SekPc);\r
goto end;\r
dprintf("r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);\r
#endif\r
#ifdef EMU_CORE_DEBUG\r
- if(a>=Pico.romsize/*&&(ppop&0x3f)!=0x3a&&(ppop&0x3f)!=0x3b*/) {\r
+ if (a>=Pico.romsize) {\r
lastread_a = a;\r
lastread_d[lrp_cyc++&15] = (u8)d;\r
}\r
\r
#ifndef EMU_CORE_DEBUG\r
// sram\r
- if(a >= SRam.start && a <= SRam.end && (Pico.m.sram_reg&5)) {\r
+ if (a >= SRam.start && a <= SRam.end && (Pico.m.sram_reg&5)) {\r
d = SRAMRead(a);\r
d |= d<<8;\r
elprintf(EL_SRAMIO, "sram r16 [%06x] %04x @ %06x", a, d, SekPc);\r
dprintf("r16: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
#endif\r
#ifdef EMU_CORE_DEBUG\r
- if(a>=Pico.romsize/*&&(ppop&0x3f)!=0x3a&&(ppop&0x3f)!=0x3b*/) {\r
+ if (a>=Pico.romsize) {\r
lastread_a = a;\r
lastread_d[lrp_cyc++&15] = d;\r
}\r
dprintf("r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
#endif\r
#ifdef EMU_CORE_DEBUG\r
- if(a>=Pico.romsize/*&&(ppop&0x3f)!=0x3a&&(ppop&0x3f)!=0x3b*/) {\r
+ if (a>=Pico.romsize) {\r
lastread_a = a;\r
lastread_d[lrp_cyc++&15] = d;\r
}\r
unsigned int m68k_read_pcrelative_CD32(unsigned int a);\r
\r
// these are allowed to access RAM\r
-static unsigned int m68k_read_8 (unsigned int a, int do_fake) {\r
+static unsigned int m68k_read_8 (unsigned int a, int do_fake)\r
+{\r
a&=0xffffff;\r
- if(PicoMCD&1) return m68k_read_pcrelative_CD8(a);\r
- if(a<Pico.romsize) return *(u8 *)(Pico.rom+(a^1)); // Rom\r
+ if(a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k) return *(u8 *)(Pico.rom+(a^1)); // Rom\r
#ifdef EMU_CORE_DEBUG\r
if(do_fake&&((ppop&0x3f)==0x3a||(ppop&0x3f)==0x3b)) return lastread_d[lrp_mus++&15];\r
#endif\r
+ if(PicoMCD&1) return m68k_read_pcrelative_CD8(a);\r
if((a&0xe00000)==0xe00000) return *(u8 *)(Pico.ram+((a^1)&0xffff)); // Ram\r
return 0;\r
}\r
-static unsigned int m68k_read_16(unsigned int a, int do_fake) {\r
+static unsigned int m68k_read_16(unsigned int a, int do_fake)\r
+{\r
a&=0xffffff;\r
- if(PicoMCD&1) return m68k_read_pcrelative_CD16(a);\r
- if(a<Pico.romsize) return *(u16 *)(Pico.rom+(a&~1)); // Rom\r
+ if(a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k) return *(u16 *)(Pico.rom+(a&~1)); // Rom\r
#ifdef EMU_CORE_DEBUG\r
if(do_fake&&((ppop&0x3f)==0x3a||(ppop&0x3f)==0x3b)) return lastread_d[lrp_mus++&15];\r
#endif\r
+ if(PicoMCD&1) return m68k_read_pcrelative_CD16(a);\r
if((a&0xe00000)==0xe00000) return *(u16 *)(Pico.ram+(a&0xfffe)); // Ram\r
return 0;\r
}\r
-static unsigned int m68k_read_32(unsigned int a, int do_fake) {\r
+static unsigned int m68k_read_32(unsigned int a, int do_fake)\r
+{\r
a&=0xffffff;\r
- if(PicoMCD&1) return m68k_read_pcrelative_CD32(a);\r
- if(a<Pico.romsize) { u16 *pm=(u16 *)(Pico.rom+(a&~1)); return (pm[0]<<16)|pm[1]; }\r
+ if(a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k) { u16 *pm=(u16 *)(Pico.rom+(a&~1)); return (pm[0]<<16)|pm[1]; }\r
#ifdef EMU_CORE_DEBUG\r
if(do_fake&&((ppop&0x3f)==0x3a||(ppop&0x3f)==0x3b)) return lastread_d[lrp_mus++&15];\r
#endif\r
+ if(PicoMCD&1) return m68k_read_pcrelative_CD32(a);\r
if((a&0xe00000)==0xe00000) { u16 *pm=(u16 *)(Pico.ram+(a&0xfffe)); return (pm[0]<<16)|pm[1]; } // Ram\r
return 0;\r
}\r
unsigned int m68k_read_memory_8(unsigned int a)\r
{\r
u8 d;\r
- if(a<Pico.romsize) d = *(u8 *) (Pico.rom+(a^1));\r
+ if (a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k)\r
+ d = *(u8 *) (Pico.rom+(a^1));\r
else d = (u8) lastread_d[lrp_mus++&15];\r
#ifdef __debug_io\r
dprintf("r8_mu : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
unsigned int m68k_read_memory_16(unsigned int a)\r
{\r
u16 d;\r
- if(a<Pico.romsize) d = *(u16 *)(Pico.rom+(a&~1));\r
+ if (a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k)\r
+ d = *(u16 *)(Pico.rom+(a&~1));\r
else d = (u16) lastread_d[lrp_mus++&15];\r
#ifdef __debug_io\r
dprintf("r16_mu: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
unsigned int m68k_read_memory_32(unsigned int a)\r
{\r
u32 d;\r
- if(a<Pico.romsize) {u16 *pm=(u16 *)(Pico.rom+(a&~1));d=(pm[0]<<16)|pm[1];}\r
+ if (a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k)\r
+ { u16 *pm=(u16 *)(Pico.rom+(a&~1));d=(pm[0]<<16)|pm[1]; }\r
+ else if (a <= 0x78) d = m68k_read_32(a, 0);\r
else d = lastread_d[lrp_mus++&15];\r
#ifdef __debug_io\r
dprintf("r32_mu: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r