mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-06-26 00:29:27 +00:00
Bugfix : flush disk buffer data on initialize
- Fixes disk image corruption issue that was manifesting in testing - Out-of-space test(s) now results in a disk image with a correct length byte of 0x20 for the final "JUNK7" file in the disk image's VTOC
This commit is contained in:
parent
7a2f919175
commit
41ae0266e2
10
src/disk.c
10
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));
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user