diff --git a/src/disk.c b/src/disk.c index 5177b919..4059c7ac 100644 --- a/src/disk.c +++ b/src/disk.c @@ -461,8 +461,8 @@ static size_t load_track_data(int drive, uint8_t * const out) { #if CONFORMANT_TRACKS if (disk6.disk[drive].track_width != NI2_TRACK_SIZE) { ERRLOG("Invalid dsk image creation..."); + expected = 0; } - expected = 0; #endif } @@ -534,6 +534,7 @@ GLUE_C_READ(disk_read_write_byte) } if (!disk6.disk[disk6.drive].track_valid) { + assert(!disk6.disk[disk6.drive].track_dirty); if (!load_track_data(disk6.drive, disk6.disk[disk6.drive].track_image)) { ERRLOG("OOPS, problem loading track data"); break; @@ -720,6 +721,9 @@ GLUE_C_WRITE(disk_write_latch) void disk6_init(void) { + disk6_flush(0); + disk6_flush(1); + // load Disk II ROM memcpy(apple_ii_64k[0] + 0xC600, slot6_rom, 0x100); @@ -844,8 +848,10 @@ const char *disk6_insert(int drive, const char * const raw_file_name, int readon } void disk6_flush(int drive) { + if (disk6.disk[drive].track_dirty) { - ERRLOG("FLUSING WHEN DIRTY?!"); + LOG("WARNING : flushing previous session for drive (%d)...", drive+1); + save_track_data(disk6.disk[drive].track_image, drive); } TEMP_FAILURE_RETRY(fflush(disk6.disk[drive].fp)); diff --git a/src/test/testdisk.c b/src/test/testdisk.c index b36b6cb1..bdc537f4 100644 --- a/src/test/testdisk.c +++ b/src/test/testdisk.c @@ -628,7 +628,7 @@ TEST test_disk_bytes_savehello_po() { } while (0) #define NOSPACE_SHA1 "2EA4D4B9F1C6797E476CD0FE59970CC243263B16" -#define EXPECTED_OOS_DSK_SHA "7A77D1CFD9F02A84E0FE39B7A39FBD4ABF1EB78E" +#define EXPECTED_OOS_DSK_SHA "D5C5A3FFB43F3C55E1C9E4ABD8580322415E9CE0" TEST test_outofspace_dsk() { test_setup_boot_disk(BLANK_DSK, 0); BOOT_TO_DOS(); @@ -683,7 +683,7 @@ TEST test_outofspace_dsk() { PASS(); } -#define EXPECTED_OOS_NIB_SHA "07CEA71514751338996B8EAC9212E5D77813F66A" +#define EXPECTED_OOS_NIB_SHA "8B91A71F6D52E1151D9DB4DB2E2B4B9C2FB5393C" TEST test_outofspace_nib() { test_setup_boot_disk(BLANK_NIB, 0); BOOT_TO_DOS(); @@ -738,7 +738,7 @@ TEST test_outofspace_nib() { PASS(); } -#define EXPECTED_OOS_PO_SHA "32AF41E922E0186590C651DC501B725EC2C520FE" +#define EXPECTED_OOS_PO_SHA "77F0013B9686A26877FD83ECA7E86E55CA3FFC7E" TEST test_outofspace_po() { test_setup_boot_disk(BLANK_PO, 0); BOOT_TO_DOS(); @@ -797,10 +797,10 @@ TEST test_outofspace_po() { #define JUNK_MEM_END_SHA1 "C09B5F8668F061AACEA5765943BD4D743061F701" #if CONFORMANT_TRACKS # define EXPECTED_BLOAD_TRACE_DSK_FILE_SIZE 1595253 -# define EXPECTED_BLOAD_TRACE_DSK_SHA "8485095E5ED8CEF5D8A177B78A53E3E6A022366D" +# define EXPECTED_BLOAD_TRACE_DSK_SHA "BF8719EE6E4814556957603068C47CC3F78E352C" #else # define EXPECTED_BLOAD_TRACE_DSK_FILE_SIZE 1512000 -# define EXPECTED_BLOAD_TRACE_DSK_SHA "99B23A0DF5FCAE3ECB494F98ADE938D9FBF9D726" +# define EXPECTED_BLOAD_TRACE_DSK_SHA "F5BE62CEFA89B6B09C0F257D34AD4E0868DA0B4C" #endif TEST test_bload_trace_dsk() { @@ -919,7 +919,7 @@ TEST test_bload_trace_dsk() { } #define EXPECTED_BLOAD_TRACE_NIB_FILE_SIZE 1664090 -#define EXPECTED_BLOAD_TRACE_NIB_SHA "09C6C94B3B7E0EFE13A4C74F72A899CE68A9524F" +#define EXPECTED_BLOAD_TRACE_NIB_SHA "7BDB0624888762D1DA2879E8437B316FEE5D39D6" TEST test_bload_trace_nib() { test_setup_boot_disk(BLANK_NIB, 0); @@ -1036,13 +1036,8 @@ TEST test_bload_trace_nib() { PASS(); } -#if CONFORMANT_TRACKS -# define EXPECTED_BLOAD_TRACE_PO_FILE_SIZE 1595253 -# define EXPECTED_BLOAD_TRACE_PO_SHA "8485095E5ED8CEF5D8A177B78A53E3E6A022366D" -#else -# define EXPECTED_BLOAD_TRACE_PO_FILE_SIZE 1512000 -# define EXPECTED_BLOAD_TRACE_PO_SHA "99B23A0DF5FCAE3ECB494F98ADE938D9FBF9D726" -#endif +#define EXPECTED_BLOAD_TRACE_PO_FILE_SIZE EXPECTED_BLOAD_TRACE_DSK_FILE_SIZE +#define EXPECTED_BLOAD_TRACE_PO_SHA EXPECTED_BLOAD_TRACE_DSK_SHA TEST test_bload_trace_po() { test_setup_boot_disk(BLANK_PO, 0);