X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2FSek.c;h=47370dae921361b282014a926b5cfe7d3799202a;hb=fa22af4cafc6a87a3d9da07f377fc93e6a3bf55d;hp=6005f599a31749bdf4819d59280a8e64b818753f;hpb=3aa1e148a28da9b4e10e824984f7b3a4908b1ace;p=picodrive.git diff --git a/Pico/cd/Sek.c b/Pico/cd/Sek.c index 6005f59..47370da 100644 --- a/Pico/cd/Sek.c +++ b/Pico/cd/Sek.c @@ -1,4 +1,4 @@ -// (c) Copyright 2006 notaz, All rights reserved. +// (c) Copyright 2007 notaz, All rights reserved. #include "../PicoInt.h" @@ -40,14 +40,14 @@ static int SekIntAckS68k(int level) { int level_new = new_irq_level(level); - dprintf("s68kACK %i -> %i", level, level_new); + elprintf(EL_INTS, "s68kACK %i -> %i", level, level_new); PicoCpuCS68k.irq = level_new; return CYCLONE_INT_ACK_AUTOVECTOR; } static void SekResetAckS68k(void) { - dprintf("s68k: Reset encountered @ %06x", SekPcS68k); + elprintf(EL_ANOMALY, "s68k: Reset encountered @ %06x", SekPcS68k); } static int SekUnrecognizedOpcodeS68k(void) @@ -55,7 +55,7 @@ static int SekUnrecognizedOpcodeS68k(void) unsigned int pc, op; pc = SekPcS68k; op = PicoCpuCS68k.read16(pc); - dprintf("Unrecognized Opcode %04x @ %06x", op, pc); + elprintf(EL_ANOMALY, "Unrecognized Opcode %04x @ %06x", op, pc); //exit(1); return 0; } @@ -64,9 +64,13 @@ static int SekUnrecognizedOpcodeS68k(void) #ifdef EMU_M68K static int SekIntAckMS68k(int level) { +#ifndef EMU_CORE_DEBUG int level_new = new_irq_level(level); - dprintf("s68kACK %i -> %i", level, level_new); + elprintf(EL_INTS, "s68kACK %i -> %i", level, level_new); CPU_INT_LEVEL = level_new << 8; +#else + CPU_INT_LEVEL = 0; +#endif return M68K_INT_ACK_AUTOVECTOR; } #endif @@ -75,8 +79,16 @@ static int SekIntAckMS68k(int level) static void SekIntAckFS68k(unsigned level) { int level_new = new_irq_level(level); - dprintf("s68kACK %i -> %i", level, level_new); + elprintf(EL_INTS, "s68kACK %i -> %i", level, level_new); +#ifndef EMU_CORE_DEBUG PicoCpuFS68k.interrupts[0] = level_new; +#else + { + extern int dbg_irq_level_sub; + dbg_irq_level_sub = level_new; + PicoCpuFS68k.interrupts[0] = 0; + } +#endif } #endif @@ -107,8 +119,9 @@ PICO_INTERNAL int SekInitS68k() void *oldcontext = g_m68kcontext; g_m68kcontext = &PicoCpuFS68k; memset(&PicoCpuFS68k, 0, sizeof(PicoCpuFS68k)); - m68k_init(); + fm68k_init(); PicoCpuFS68k.iack_handler = SekIntAckFS68k; + PicoCpuFS68k.sr = 0x2704; // Z flag g_m68kcontext = oldcontext; } #endif @@ -146,7 +159,7 @@ PICO_INTERNAL int SekResetS68k() { void *oldcontext = g_m68kcontext; g_m68kcontext = &PicoCpuFS68k; - m68k_reset(); + fm68k_reset(); g_m68kcontext = oldcontext; } #endif @@ -161,6 +174,13 @@ PICO_INTERNAL int SekInterruptS68k(int irq) irqs = Pico_mcd->m.s68k_pend_ints >> 1; while ((irqs >>= 1)) real_irq++; +#ifdef EMU_CORE_DEBUG + { + extern int dbg_irq_level_sub; + dbg_irq_level_sub=real_irq; + return 0; + } +#endif #ifdef EMU_C68K PicoCpuCS68k.irq=real_irq; #endif