Somewhat working Timer0Interrupt

This commit is contained in:
Darkress
2023-06-18 19:13:37 +02:00
parent 101c6ec464
commit 60b288a762
7 changed files with 48 additions and 7 deletions

View File

@@ -43,9 +43,15 @@ public class Timer
{
int timerRegister = Memory.getRegister(0x01);
timerRegister = (timerRegister + 1) % 256;
if(timerRegister == 0) //check for timer Overflow --> interrupt
if(timerRegister == 0 && !((Memory.getRegister(0x0B) & 0x04) == 0x04)) //check for timer Overflow --> interrupt
{
System.out.println("Timer Overflow");
Memory.setRegister(0x0B, Memory.getRegister(0x0B) | 0x04); //set T0IF
if(Interrupt.checkTimerInterruptConditions())
{
Stack.push(ProgramCounter.getPc());
ProgramCounter.setProgramCounter(0x04); // Interrupt Vector
}
}
Memory.setTimer(timerRegister);
}