From 781cc60d8c88ff24abc4ebc279e5ef1e5519f3d4 Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sat, 17 Sep 2016 12:24:47 -0700 Subject: [PATCH] Assert CPU paused when switching disk images --- src/disk.c | 8 ++++++++ src/misc.c | 2 -- src/timing.c | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/disk.c b/src/disk.c index efea8370..34f66f79 100644 --- a/src/disk.c +++ b/src/disk.c @@ -740,6 +740,10 @@ void disk6_init(void) { const char *disk6_eject(int drive) { +#if !TESTING + assert(cpu_isPaused() && "CPU must be paused for disk ejection"); +#endif + const char *err = NULL; if (disk6.disk[drive].fd > 0) { @@ -799,6 +803,10 @@ const char *disk6_eject(int drive) { const char *disk6_insert(int drive, const char * const raw_file_name, int readonly) { +#if !TESTING + assert(cpu_isPaused() && "CPU must be paused for disk insertion"); +#endif + disk6_eject(drive); disk6.disk[drive].file_name = STRDUP(raw_file_name); diff --git a/src/misc.c b/src/misc.c index 245569f3..7af9e0b6 100644 --- a/src/misc.c +++ b/src/misc.c @@ -298,8 +298,6 @@ void emulator_start(void) { void emulator_shutdown(void) { emulatorShuttingDown = true; - disk6_eject(0); - disk6_eject(1); video_shutdown(); prefs_shutdown(); timing_stopCPU(); diff --git a/src/timing.c b/src/timing.c index c6239638..eafe89ea 100644 --- a/src/timing.c +++ b/src/timing.c @@ -509,6 +509,9 @@ static void *cpu_thread(void *dummyptr) { cpu_thread_id = 0; cpu_pause(); + disk6_eject(0); + disk6_eject(1); + return NULL; }