#include "misc.h"
#include "psxcounters.h"
+#include "psxevents.h"
#include "sio.h"
#include <sys/stat.h>
char Mcd1Data[MCD_SIZE], Mcd2Data[MCD_SIZE];
char McdDisable[2];
-#define SIO_INT(eCycle) { \
- psxRegs.interrupt |= (1 << PSXINT_SIO); \
- psxRegs.intCycle[PSXINT_SIO].cycle = eCycle; \
- psxRegs.intCycle[PSXINT_SIO].sCycle = psxRegs.cycle; \
- new_dyna_set_event(PSXINT_SIO, eCycle); \
-}
-
// clk cycle byte
// 4us * 8bits = (PSXCLK / 1000000) * 32; (linuzappz)
// TODO: add SioModePrescaler and BaudReg
if (more_data) {
bufcount = parp + 1;
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
}
}
else padst = 0;
if (more_data) {
bufcount = parp + 1;
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
}
return;
}
switch (mcdst) {
case 1:
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
if (rdwr) { parp++; return; }
parp = 1;
switch (value) {
}
return;
case 2: // address H
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
adrH = value;
*buf = 0;
parp = 0;
mcdst = 3;
return;
case 3: // address L
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
adrL = value;
*buf = adrH;
parp = 0;
mcdst = 4;
return;
case 4:
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
parp = 0;
switch (rdwr) {
case 1: // read
if (rdwr == 2) {
if (parp < 128) buf[parp + 1] = value;
}
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
return;
}
bufcount = 1;
parp = 0;
padst = 1;
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
return;
case 0x81: // start memcard
if (CtrlReg & 0x2000)
bufcount = 3;
mcdst = 1;
rdwr = 0;
- SIO_INT(SIO_CYCLES);
+ set_event(PSXINT_SIO, SIO_CYCLES);
return;
default:
no_device: