Fix some interrupt issues

This commit is contained in:
InvisibleUp 2020-07-20 21:03:08 -04:00
parent 2b61dcd4f5
commit 6941422033
3 changed files with 13 additions and 17 deletions

View File

@ -1553,8 +1553,6 @@ GLOBALPROC SetInterruptButton(bool v)
}
}
LOCALVAR uint8_t CurIPL = 0;
GLOBALPROC VIAorSCCinterruptChngNtfy(void)
{
uint8_t NewIPL;
@ -1579,10 +1577,8 @@ GLOBALPROC VIAorSCCinterruptChngNtfy(void)
| (SCCInterruptRequest << 1)
| (InterruptButton << 2);
}
if (NewIPL != CurIPL) {
CurIPL = NewIPL;
m68k_set_irq(NewIPL);
}
m68k_set_irq(NewIPL);
}
GLOBALFUNC bool AddrSpac_Init(void)

View File

@ -110,7 +110,7 @@ GLOBALPROC DoKybd_ReceiveCommand(void)
} else {
uint8_t in = VIA_ShiftOutData_Ext(VIA1);
fprintf(stderr, "KybdStateRecievedCommand\n");
//fprintf(stderr, "KybdStateRecievedCommand\n");
KybdState = kKybdStateRecievedCommand;
switch (in) {
@ -152,7 +152,7 @@ GLOBALPROC DoKybd_ReceiveEndCommand(void)
"KybdState != kKybdStateRecievingEndCommand");
} else {
KybdState = kKybdStateIdle;
fprintf(stderr, "KybdStateIdle\n");
//fprintf(stderr, "KybdStateIdle\n");
#ifdef _VIA_Debug
fprintf(stderr, "enter DoKybd_ReceiveEndCommand\n");
#endif
@ -168,11 +168,11 @@ GLOBALPROC DoKybd_ReceiveEndCommand(void)
GLOBALPROC Kybd_DataLineChngNtfy(void)
{
fprintf(stderr, "Kybd_DataLineChngNtfy (%d)\n", Kybd_CheckDataReady());
//fprintf(stderr, "Kybd_DataLineChngNtfy (%d)\n", Kybd_CheckDataReady());
switch (KybdState) {
case kKybdStateIdle:
if (Kybd_CheckDataReady() == false) {
fprintf(stderr, "KybdStateRecievingCommand\n");
//fprintf(stderr, "KybdStateRecievingCommand\n");
KybdState = kKybdStateRecievingCommand;
#ifdef _VIA_Debug
fprintf(stderr, "posting kICT_Kybd_ReceiveCommand\n");
@ -188,7 +188,7 @@ GLOBALPROC Kybd_DataLineChngNtfy(void)
case kKybdStateRecievedCommand:
if (Kybd_CheckDataReady() == true) {
KybdState = kKybdStateRecievingEndCommand;
fprintf(stderr, "KybdStateRecievingEndCommand\n");
//fprintf(stderr, "KybdStateRecievingEndCommand\n");
#ifdef _VIA_Debug
fprintf(stderr,
"posting kICT_Kybd_ReceiveEndCommand\n");

View File

@ -302,9 +302,9 @@ void VIA_Write(uint8_t id, VIA_Register_t reg, uint8_t data, bool runISR)
fprintf(stderr, "Set PB to "BIN_PAT"\n", TO_BIN(data));
}*/
//fprintf(stderr, "VIA%d Write %d <- %d\n", id+1, reg, data);
if (reg == rSR) {
/*if (reg == rSR) {
fprintf(stderr, "vSR: %d, %d, %d\n", true, ((via->vACR & 0x1C) >> 2), data);
}
}*/
switch(reg) {
case rIRB: via->vBufB = data; break;
@ -402,9 +402,9 @@ uint8_t VIA_Read(uint8_t id, VIA_Register_t reg, bool runISR)
assert(reg < rINVALID);
VIA_State_t *via = &VIA_State[id];
if (reg == rSR) {
/*if (reg == rSR) {
fprintf(stderr, "vSR: %d, %d, %d\n", false, ((via->vACR & 0x1C) >> 2), via->vSR);
}
}*/
if (runISR) {
if (reg == rIRA || reg == rORA) {
@ -530,7 +530,7 @@ void VIA_ShiftInData_Ext(uint8_t id, uint8_t v)
assert(id < VIA_MAXNUM);
VIA_State_t *via = &VIA_State[id];
uint8_t ShiftMode = (via->vACR & 0x1C) >> 2;
fprintf(stderr, "vSR: %d, %d, %d (ext)\n", true, ShiftMode, v);
//fprintf(stderr, "vSR: %d, %d, %d (ext)\n", true, ShiftMode, v);
assert ((ShiftMode & 0b100) == 0b000);
@ -548,7 +548,7 @@ uint8_t VIA_ShiftOutData_Ext(uint8_t id)
VIA_State_t *via = &VIA_State[id];
uint8_t ShiftMode = (via->vACR & 0x1C) >> 2;
fprintf(stderr, "vSR: %d, %d, %d (ext)\n", false, ShiftMode, VIA_State[id].vSR);
//fprintf(stderr, "vSR: %d, %d, %d (ext)\n", false, ShiftMode, VIA_State[id].vSR);
assert(((ShiftMode & 0b100) == 0b100) || (ShiftMode == 0));
VIA_RaiseInterrupt(id, 2, true);