#include <unistd.h>
#include "Gayle.h"
+#include "a314/a314.h"
#include "ide.h"
#include "m68k.h"
#include "main.h"
}
}
+#if A314_ENABLED
+ int err = a314_init();
+ if (err < 0) {
+ printf("Unable to initialize A314 emulation\n");
+ return -1;
+ }
+#endif
+
sched_setscheduler(0, SCHED_FIFO, &priority);
mlockall(MCL_CURRENT); // lock in memory to keep us from paging out
usleep(1);
*/
+#if A314_ENABLED
+ a314_process_events();
+#endif
+
if (GET_GPIO(1) == 0) {
srdata = read_reg();
m68k_set_irq((srdata >> 13) & 0xff);
}
}
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ return a314_read_memory_8(address - A314_COM_AREA_BASE);
+ }
+#endif
+
address &= 0xFFFFFF;
// if (address < 0xffffff) {
return read8((uint32_t)address);
}
}
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ return a314_read_memory_16(address - A314_COM_AREA_BASE);
+ }
+#endif
+
// if (address < 0xffffff) {
address &= 0xFFFFFF;
return (unsigned int)read16((uint32_t)address);
}
}
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ return a314_read_memory_32(address - A314_COM_AREA_BASE);
+ }
+#endif
+
// if (address < 0xffffff) {
address &= 0xFFFFFF;
uint16_t a = read16(address);
return;
}
}
+
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ a314_write_memory_8(address - A314_COM_AREA_BASE, value);
+ return;
+ }
+#endif
+
/*
if (address == 0xbfe001) {
ovl = (value & (1 << 0));
}
}
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ a314_write_memory_16(address - A314_COM_AREA_BASE, value);
+ return;
+ }
+#endif
+
// if (address < 0xffffff) {
address &= 0xFFFFFF;
write16((uint32_t)address, value);
}
}
+#if A314_ENABLED
+ if (address >= A314_COM_AREA_BASE && address < A314_COM_AREA_BASE + A314_COM_AREA_SIZE) {
+ a314_write_memory_32(address - A314_COM_AREA_BASE, value);
+ return;
+ }
+#endif
+
// if (address < 0xffffff) {
address &= 0xFFFFFF;
write16(address, value >> 16);