]> git.sesse.net Git - pistorm/commitdiff
Merge branch 'main' of https://github.com/captain-amygdala/pistorm into main
authorClaude <claude.schwarz@gmail.com>
Tue, 24 Nov 2020 18:38:31 +0000 (18:38 +0000)
committerClaude <claude.schwarz@gmail.com>
Tue, 24 Nov 2020 18:38:31 +0000 (18:38 +0000)
1  2 
emulator.c

diff --cc emulator.c
index f91347893ba05e8f602619b94cdef10f30a8d311,9b3bb7f125fd5ed75cb9f5fbe1f3bac2c38f2e65..5b3232db6f98de5c71fee462a013b57ccbbe38a4
@@@ -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) {
      }
    }
  
-   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) {
      }
    }
  
-   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) {
      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;