From: Claude Date: Tue, 24 Nov 2020 18:38:31 +0000 (+0000) Subject: Merge branch 'main' of https://github.com/captain-amygdala/pistorm into main X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=c04428366e7b112f7f8b710cbff5804e07f98159;p=pistorm Merge branch 'main' of https://github.com/captain-amygdala/pistorm into main --- c04428366e7b112f7f8b710cbff5804e07f98159 diff --cc emulator.c index f913478,9b3bb7f..5b3232d --- a/emulator.c +++ b/emulator.c @@@ -137,23 -138,14 +138,23 @@@ void sigint_handler(int sig_num) } void *iplThread(void *args) { - printf("thread!/n"); + printf("IPL thread running/n"); while (42) { + + if (GET_GPIO(1) == 0){ + toggle = 1; + m68k_end_timeslice(); + //printf("thread!/n"); + } else { + toggle = 0; + }; usleep(1); } + } - int main() { + int main(int argc, char *argv[]) { int g; const struct sched_param priority = {99}; @@@ -341,16 -329,17 +349,18 @@@ unsigned int m68k_read_memory_8(unsigne } } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - return readGayleB(address); + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + return readGayleB(address); + } } - if (address < 0xffffff) { + address &=0xFFFFFF; +// if (address < 0xffffff) { return read8((uint32_t)address); - } +// } - return 1; +// return 1; } unsigned int m68k_read_memory_16(unsigned int address) { @@@ -364,16 -353,17 +374,18 @@@ } } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - return readGayle(address); + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + return readGayle(address); + } } - if (address < 0xffffff) { +// if (address < 0xffffff) { + address &=0xFFFFFF; return (unsigned int)read16((uint32_t)address); - } +// } - return 1; +// return 1; } unsigned int m68k_read_memory_32(unsigned int address) { @@@ -387,12 -377,13 +399,14 @@@ } } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - return readGayleL(address); + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + return readGayleL(address); + } } - if (address < 0xffffff) { +// if (address < 0xffffff) { + address &=0xFFFFFF; uint16_t a = read16(address); uint16_t b = read16(address + 2); return (a << 16) | b; @@@ -407,11 -398,13 +421,13 @@@ void m68k_write_memory_8(unsigned int a return; } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - writeGayleB(address, value); - return; + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + writeGayleB(address, value); + return; + } } - +/* if (address == 0xbfe001) { ovl = (value & (1 << 0)); printf("OVL:%x\n", ovl); @@@ -432,17 -424,18 +448,19 @@@ void m68k_write_memory_16(unsigned int return; } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - writeGayle(address, value); - return; + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + writeGayle(address, value); + return; + } } - if (address < 0xffffff) { +// if (address < 0xffffff) { + address &=0xFFFFFF; write16((uint32_t)address, value); return; - } - return; +// } +// return; } void m68k_write_memory_32(unsigned int address, unsigned int value) { @@@ -451,12 -444,13 +469,14 @@@ return; } - if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { - writeGayleL(address, value); + if (gayle_emulation_enabled) { + if (address > GAYLEBASE && address < GAYLEBASE + GAYLESIZE) { + writeGayleL(address, value); + } } - if (address < 0xffffff) { +// if (address < 0xffffff) { + address &=0xFFFFFF; write16(address, value >> 16); write16(address + 2, value); return;