X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2Fcd%2FSek.c;h=24844d8cdf4c014c6c76ed40401fb740bc1545fd;hb=2aa27095f2dbf5b38950fcb1f856d5ffc6a70361;hp=dc714e84eb00e64677be2e1d2b1610ae6dda35b9;hpb=03e4f2a349247334666c87abe3a908df72d23051;p=picodrive.git diff --git a/Pico/cd/Sek.c b/Pico/cd/Sek.c index dc714e8..24844d8 100644 --- a/Pico/cd/Sek.c +++ b/Pico/cd/Sek.c @@ -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,13 +79,21 @@ 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 -PICO_INTERNAL int SekInitS68k() +PICO_INTERNAL void SekInitS68k(void) { #ifdef EMU_C68K // CycloneInit(); @@ -109,15 +121,14 @@ PICO_INTERNAL int SekInitS68k() memset(&PicoCpuFS68k, 0, sizeof(PicoCpuFS68k)); fm68k_init(); PicoCpuFS68k.iack_handler = SekIntAckFS68k; + PicoCpuFS68k.sr = 0x2704; // Z flag g_m68kcontext = oldcontext; } #endif - - return 0; } // Reset the 68000: -PICO_INTERNAL int SekResetS68k() +PICO_INTERNAL int SekResetS68k(void) { if (Pico.rom==NULL) return 1; @@ -161,6 +172,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