diff --git a/snes/fatfstest/StartupSnes.asm b/snes/fatfstest/StartupSnes.asm index d6f7ceb..58f91d5 100644 --- a/snes/fatfstest/StartupSnes.asm +++ b/snes/fatfstest/StartupSnes.asm @@ -123,6 +123,10 @@ START: stz $420D ; Access cycle designation (slow/fast rom) cli ; Enable interrupts + + ;lda #$81 + ;sta $4200 + rep #$30 longa on longi on diff --git a/snes/fatfstest/main.c b/snes/fatfstest/main.c index 9a1dc78..b7da2af 100644 --- a/snes/fatfstest/main.c +++ b/snes/fatfstest/main.c @@ -40,7 +40,45 @@ DWORD addr,crc_addr; BYTE res; +byte irq_triggered = 0; +byte nmi_triggered = 0; + char rom_name[]= ROM_NAME; + +void handle_irq(void){ + + char message[]="irq\n"; + char* ptr; + ptr = message; + while (*ptr) + *(byte *) 0x3000 = *ptr++; + + irq_triggered = 0; +} + + +void handle_nmi(void){ + + char message[]="nmi\n"; + char* ptr; + ptr = message; + while (*ptr) + *(byte *) 0x3000 = *ptr++; + + irq_triggered = 0; +} + + +void IRQHandler(void) +{ + irq_triggered = 1; +} + +void NMIHandler(void) +{ + nmi_triggered = 1; + +} void initInternalRegisters(void) { @@ -149,6 +187,13 @@ void boot(DWORD addr) printfc("SNES::main: Try to init disk\n"); put_rc(f_mount((BYTE) 0, &fatfs[0])); + while(1){ + if (irq_triggered) + handle_irq(); + if (nmi_triggered) + handle_nmi(); + } + #if 0 printfs(0, "FATFS OPTIXX.ORG "); printfc("SNES::main: Try to get free\n"); @@ -294,12 +339,4 @@ void boot(DWORD addr) while (1); } -void IRQHandler(void) -{ -} -void NMIHandler(void) -{ - - // processEvents(); -}