notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
famec hack, CPU debug in CD mode
[picodrive.git]
/
Pico
/
Memory.c
diff --git
a/Pico/Memory.c
b/Pico/Memory.c
index
26be012
..
ca92e81
100644
(file)
--- a/
Pico/Memory.c
+++ b/
Pico/Memory.c
@@
-7,7
+7,7
@@
// For commercial use, separate licencing terms must be obtained.
\r
\r
\r
// 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
#include "PicoInt.h"
\r
\r
@@
-323,7
+323,7
@@
PICO_INTERNAL_ASM u32 PicoRead8(u32 a)
\r
#ifndef EMU_CORE_DEBUG
\r
// sram
\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
d = SRAMRead(a);
\r
elprintf(EL_SRAMIO, "sram r8 [%06x] %02x @ %06x", a, d, SekPc);
\r
goto end;
\r
@@
-341,7
+341,7
@@
end:
dprintf("r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);
\r
#endif
\r
#ifdef EMU_CORE_DEBUG
\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
lastread_a = a;
\r
lastread_d[lrp_cyc++&15] = (u8)d;
\r
}
\r
@@
-359,7
+359,7
@@
PICO_INTERNAL_ASM u32 PicoRead16(u32 a)
\r
#ifndef EMU_CORE_DEBUG
\r
// sram
\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
d = SRAMRead(a);
\r
d |= d<<8;
\r
elprintf(EL_SRAMIO, "sram r16 [%06x] %04x @ %06x", a, d, SekPc);
\r
@@
-377,7
+377,7
@@
end:
dprintf("r16: %06x, %04x @%06x", a&0xffffff, d, SekPc);
\r
#endif
\r
#ifdef EMU_CORE_DEBUG
\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
lastread_a = a;
\r
lastread_d[lrp_cyc++&15] = d;
\r
}
\r
@@
-411,7
+411,7
@@
end:
dprintf("r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);
\r
#endif
\r
#ifdef EMU_CORE_DEBUG
\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
lastread_a = a;
\r
lastread_d[lrp_cyc++&15] = d;
\r
}
\r
@@
-525,33
+525,36
@@
unsigned int m68k_read_pcrelative_CD16(unsigned int a);
unsigned int m68k_read_pcrelative_CD32(unsigned int a);
\r
\r
// these are allowed to access RAM
\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
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
#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
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
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
#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
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
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
#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
if((a&0xe00000)==0xe00000) { u16 *pm=(u16 *)(Pico.ram+(a&0xfffe)); return (pm[0]<<16)|pm[1]; } // Ram
\r
return 0;
\r
}
\r
@@
-570,7
+573,8
@@
unsigned int m68k_read_disassembler_32(unsigned int a) { return m68k_read_32(a,
unsigned int m68k_read_memory_8(unsigned int a)
\r
{
\r
u8 d;
\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
else d = (u8) lastread_d[lrp_mus++&15];
\r
#ifdef __debug_io
\r
dprintf("r8_mu : %06x, %02x @%06x", a&0xffffff, d, SekPc);
\r
@@
-580,7
+584,8
@@
unsigned int m68k_read_memory_8(unsigned int a)
unsigned int m68k_read_memory_16(unsigned int a)
\r
{
\r
u16 d;
\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
else d = (u16) lastread_d[lrp_mus++&15];
\r
#ifdef __debug_io
\r
dprintf("r16_mu: %06x, %04x @%06x", a&0xffffff, d, SekPc);
\r
@@
-590,7
+595,9
@@
unsigned int m68k_read_memory_16(unsigned int a)
unsigned int m68k_read_memory_32(unsigned int a)
\r
{
\r
u32 d;
\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
else d = lastread_d[lrp_mus++&15];
\r
#ifdef __debug_io
\r
dprintf("r32_mu: %06x, %08x @%06x", a&0xffffff, d, SekPc);
\r