diff --git a/src/events.c b/src/events.c index e52ef85..dab5e5f 100644 --- a/src/events.c +++ b/src/events.c @@ -9,6 +9,7 @@ extern uint8_t showHelp; extern uint8_t displayMmap; extern uint8_t documentReload; +extern char *reloadExecute; extern uint32_t renderMemory[]; extern int openFile(); @@ -27,8 +28,8 @@ void pollEvents(){ while (SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: - printf("Exited.\n"); exit(0); + break; case SDL_KEYDOWN: switch (event.key.keysym.scancode){ @@ -49,8 +50,16 @@ void pollEvents(){ break; case SDL_SCANCODE_F5: /* CPU Reset */ + if (reloadExecute[0]) { + if (system(reloadExecute)){ + printf("Shell command failed!\n"); + goto skip; + } + } if (documentReload) openFile(); resetSystem(); + + skip: break; case SDL_SCANCODE_F6: /* Scale -- */ diff --git a/src/main.c b/src/main.c index 3f84ccd..7e0ee6f 100644 --- a/src/main.c +++ b/src/main.c @@ -40,6 +40,7 @@ unsigned long tickTrigger = 0; char debugString[512]; char snapshotFile[32]; +char *reloadExecute; char *inputFile; int openFile(){ @@ -78,6 +79,7 @@ void fetchArgs(int argc, char *argv[]){ //else if (!strcmp(argv[i], "--snapshot")) snapshotFile = &argv[i]; else if (!strcmp(argv[i], "--fps")) FPS = atoi(argv[++i]); else if (!strcmp(argv[i], "--enable-reload")) documentReload = 1; + else if (!strcmp(argv[i], "--reload-execute")) reloadExecute = argv[++i]; else { inputFile = argv[i]; if (openFile()){