From ba09a6aba9c60f851c30bd50d263a52fa3d8080b Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sat, 24 Sep 2016 16:36:25 -0700 Subject: [PATCH] Refactor Disk ][ API to improve tracing conformance with AppleWin - Binary stability change/fix : an 0xEB -> 0xFF in the sync bytes of blank.nib.gz --- disks/blank.nib.gz | Bin 12844 -> 12839 bytes src/disk.c | 154 ++++++++++++++++++++++++++----------------- src/test/testdisk.c | 8 +-- src/test/testtrace.c | 31 +++++---- 4 files changed, 113 insertions(+), 80 deletions(-) diff --git a/disks/blank.nib.gz b/disks/blank.nib.gz index 06fefc48eaa2b9ff909d19ce40e81ad03fa0aa66..3360a910a3ce35d1635f1e296234d129d96ee330 100644 GIT binary patch delta 9870 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 diff --git a/src/disk.c b/src/disk.c index 34f66f79..5ee62b9f 100644 --- a/src/disk.c +++ b/src/disk.c @@ -488,12 +488,11 @@ static inline void animate_disk_track_sector(void) { // ---------------------------------------------------------------------------- // Emulator hooks -GLUE_C_READ(disk_read_write_byte) -{ - uint8_t value = 0xFF; // U5 needs this set to "Journey Onward" +static void _disk_readWriteByte(void) { do { if (disk6.disk[disk6.drive].fd < 0) { ////ERRLOG_THROTTLE("OOPS, attempt to read byte from NULL image in drive (%d)", disk6.drive+1); + disk6.disk_byte = 0xFF; break; } @@ -505,6 +504,7 @@ GLUE_C_READ(disk_read_write_byte) size_t track_width = load_track_data(disk6.drive); if (track_width != disk6.disk[disk6.drive].track_width) { ////ERRLOG_THROTTLE("OOPS, problem loading track data"); + disk6.disk_byte = 0xFF; break; } disk6.disk[disk6.drive].track_valid = true; @@ -515,13 +515,11 @@ GLUE_C_READ(disk_read_write_byte) track_idx += disk6.disk[disk6.drive].run_byte; if (disk6.ddrw) { if (disk6.disk[disk6.drive].is_protected) { - value = 0x00; break; // Do not write if diskette is write protected } if (disk6.disk_byte < 0x96) { ////ERRLOG_THROTTLE("OOPS, attempting to write a non-nibblized byte"); - value = 0x00; break; } @@ -535,20 +533,20 @@ GLUE_C_READ(disk_read_write_byte) disk6.disk[disk6.drive].track_dirty = true; } else { - if (disk6.motor_off) { // ??? + if (disk6.motor_off) { // !!! FIXME TODO ... introduce a proper spin-down, cribbing from AppleWin if (disk6.motor_off > 99) { ////ERRLOG_THROTTLE("OOPS, potential disk motor issue"); - value = 0x00; + disk6.disk_byte = 0xFF; break; } else { disk6.motor_off++; } } - value = disk6.disk[disk6.drive].whole_image[track_idx]; + disk6.disk_byte = disk6.disk[disk6.drive].whole_image[track_idx]; #if DISK_TRACING if (test_read_fp) { - fprintf(test_read_fp, "%02X", value); + fprintf(test_read_fp, "%02X", disk6.disk_byte); } #endif } @@ -574,12 +572,9 @@ GLUE_C_READ(disk_read_write_byte) } } #endif - - return value; } -GLUE_C_READ(disk_read_phase) -{ +static void _disk6_phaseChange(uint16_t ea) { ea &= 0xFF; int phase = (ea>>1)&3; int phase_bit = (1 << phase); @@ -643,57 +638,104 @@ GLUE_C_READ(disk_read_phase) animate_disk_track_sector(); } - - return ea == 0xE0 ? 0xFF : floating_bus_hibit(1); } -GLUE_C_READ(disk_read_motor_off) -{ +static void _disk6_motorControl(uint16_t ea) { clock_gettime(CLOCK_MONOTONIC, &disk6.motor_time); - disk6.motor_off = 1; - return floating_bus_hibit(1); + int turnOn = (ea & 0x1); + disk6.motor_off = turnOn ? 0 : 1; } -GLUE_C_READ(disk_read_motor_on) -{ - clock_gettime(CLOCK_MONOTONIC, &disk6.motor_time); - disk6.motor_off = 0; - return floating_bus_hibit(1); +static void _disk6_driveSelect(uint16_t ea) { + int driveB = (ea & 0x1); + disk6.drive = driveB ? 1 : 0; } -GLUE_C_READ(disk_read_select_a) -{ - disk6.drive = 0; - return floating_bus(); +static void _disk_readLatch(void) { + if (!disk6.motor_off && !disk6.ddrw) { + // UNIMPLEMENTED : phase 1 on forces write protect in the Disk II drive (UTA2E page 9-7) + if (disk6.disk[disk6.drive].is_protected) { + disk6.disk_byte |= 0x80; + } else { + disk6.disk_byte &= 0x7F; + } + } } -GLUE_C_READ(disk_read_select_b) -{ - disk6.drive = 1; - return floating_bus(); +static void _disk_modeSelect(uint16_t ea) { + disk6.ddrw = (ea & 0x1); } -GLUE_C_READ(disk_read_latch) +GLUE_C_READ(disk6_ioRead) { - return disk6.drive; + uint8_t sw = ea & 0xf; + if (sw <= 0x7) { // C0E0 - C0E7 + _disk6_phaseChange(ea); + } else { + switch (sw) { + case 0x8: // C0E8 + case 0x9: // C0E9 + _disk6_motorControl(ea); + break; + case 0xA: // C0EA + case 0xB: // C0EB + _disk6_driveSelect(ea); + break; + case 0xC: // C0EC + _disk_readWriteByte(); + break; + case 0xD: // C0ED + _disk_readLatch(); + break; + case 0xE: // C0EE + case 0xF: // C0EF + _disk_modeSelect(ea); + break; + default: + assert(false && "all cases should be handled"); + break; + } + } + + // Even addresses returns the latch (UTA2E Table 9.1) + return (ea & 1) ? floating_bus() : disk6.disk_byte; } -GLUE_C_READ(disk_read_prepare_in) +GLUE_C_WRITE(disk6_ioWrite) { - disk6.ddrw = 0; - return floating_bus_hibit(disk6.disk[disk6.drive].is_protected); -} + uint8_t sw = ea & 0xf; + if (sw < 0x7) { // C0E0 - C0E7 + _disk6_phaseChange(ea); + } else { + switch (sw) { + case 0x8: // C0E8 + case 0x9: // C0E9 + _disk6_motorControl(ea); + break; + case 0xA: // C0EA + case 0xB: // C0EB + _disk6_driveSelect(ea); + break; + case 0xC: // C0EC + _disk_readWriteByte(); + break; + case 0xD: // C0ED + // _disk_readLatch(); -- do not call on write + break; + case 0xE: // C0EE + case 0xF: // C0EF + _disk_modeSelect(ea); + break; + default: + assert(false && "all cases should be handled"); + break; + } + } -GLUE_C_READ(disk_read_prepare_out) -{ - disk6.ddrw = 1; - return floating_bus_hibit(1); -} - -GLUE_C_WRITE(disk_write_latch) -{ - disk6.disk_byte = b; - //return b; + // NOTE : any address writes the latch via sequencer LD command (74LS323 datasheet) + if (disk6.ddrw) { + disk6.disk_byte = b; + } } // ---------------------------------------------------------------------------- @@ -708,24 +750,12 @@ void disk6_init(void) { // disk softswitches // 0xC0Xi : X = slot 0x6 + 0x8 == 0xE - cpu65_vmem_r[0xC0E0] = cpu65_vmem_r[0xC0E2] = cpu65_vmem_r[0xC0E4] = cpu65_vmem_r[0xC0E6] = disk_read_phase; - cpu65_vmem_r[0xC0E1] = cpu65_vmem_r[0xC0E3] = cpu65_vmem_r[0xC0E5] = cpu65_vmem_r[0xC0E7] = disk_read_phase; - - cpu65_vmem_r[0xC0E8] = disk_read_motor_off; - cpu65_vmem_r[0xC0E9] = disk_read_motor_on; - cpu65_vmem_r[0xC0EA] = disk_read_select_a; - cpu65_vmem_r[0xC0EB] = disk_read_select_b; - cpu65_vmem_r[0xC0EC] = disk_read_write_byte; - cpu65_vmem_r[0xC0ED] = disk_read_latch; - cpu65_vmem_r[0xC0EE] = disk_read_prepare_in; - cpu65_vmem_r[0xC0EF] = disk_read_prepare_out; for (unsigned int i = 0xC0E0; i < 0xC0F0; i++) { - cpu65_vmem_w[i] = cpu65_vmem_r[i]; + cpu65_vmem_r[i] = disk6_ioRead; + cpu65_vmem_w[i] = disk6_ioWrite; } - cpu65_vmem_w[0xC0ED] = disk_write_latch; - stepper_phases = 0; disk6.disk[0].phase = disk6.disk[1].phase = 0; diff --git a/src/test/testdisk.c b/src/test/testdisk.c index c1f73812..f8c936ed 100644 --- a/src/test/testdisk.c +++ b/src/test/testdisk.c @@ -92,7 +92,7 @@ TEST test_boot_disk_bytes() { } #define EXPECTED_DISK_TRACE_NIB_FILE_SIZE 147368 -#define EXPECTED_DISK_TRACE_NIB_SHA "DE92EABF6C9747353E9C8A367706D70E520CC2C1" +#define EXPECTED_DISK_TRACE_NIB_SHA "1716FE7E79068D85F4EEF3CFEB28EAE8D512E592" TEST test_boot_disk_bytes_nib() { test_setup_boot_disk(BLANK_NIB, 0); srandom(0); @@ -424,7 +424,7 @@ TEST test_disk_bytes_savehello_dsk() { #define EXPECTED_DISKWRITE_TRACE_NIB_FILE_SIZE 2409 #define EXPECTED_DISKWRITE_TRACE_NIB_SHA "332EA76D8BCE45ACA6F805B978E6A3327386ABD6" -#define EXPECTED_BSAVE_NIB_SHA "94193718A6B610AE31B5ABE7058416B321968CA1" +#define EXPECTED_BSAVE_NIB_SHA "D894560D1061008FFA9F0BC08B163AC7086A7C0E" TEST test_disk_bytes_savehello_nib() { test_setup_boot_disk(BLANK_NIB, 0); BOOT_TO_DOS(); @@ -723,7 +723,7 @@ TEST test_outofspace_dsk() { PASS(); } -#define EXPECTED_OOS_NIB_SHA "8B91A71F6D52E1151D9DB4DB2E2B4B9C2FB5393C" +#define EXPECTED_OOS_NIB_SHA "D1C404E55811C47CF105D08D536EBBEEC7AA7F51" TEST test_outofspace_nib() { test_setup_boot_disk(BLANK_NIB, 0); BOOT_TO_DOS(); @@ -1307,7 +1307,7 @@ TEST test_data_stability_dsk() { } #define EXPECTED_STABILITY_NIB_FILE_SIZE 232960 -#define EXPECTED_STABILITY_NIB_SHA "94193718A6B610AE31B5ABE7058416B321968CA1" +#define EXPECTED_STABILITY_NIB_SHA "D894560D1061008FFA9F0BC08B163AC7086A7C0E" TEST test_data_stability_nib() { diff --git a/src/test/testtrace.c b/src/test/testtrace.c index 2ac90d45..2b892a99 100644 --- a/src/test/testtrace.c +++ b/src/test/testtrace.c @@ -124,8 +124,8 @@ TEST test_boot_sound() { // Mockingboard tracing #define NSCT_DSK "NSCT.dsk.gz" -#define NSCT_TRACE_SHA "35C58FEEB70E76FC31CEB55DB4C830B471B48AE3" // WARNING unstable if tests changed before this ... -#define NSCT_SAMPS_SHA "C48AFC2ABFECC98CECB8A5B63E2261181195E1B2" +#define NSCT_TRACE_SHA "FA2FE78A273405E2B129E46FD13F1CB0C56F8D53" +#define NSCT_SAMPS_SHA "DF9686D4835B0E55480BE25CB0A065C85A6963DE" #define NSCT_TRACE_TARGET_SIZ (512 * 65536) // 2^25 #define NSCT_SAMPS_TARGET_SIZ (2048 * 65536) // 2^27 TEST test_mockingboard_1() { @@ -169,6 +169,10 @@ TEST test_mockingboard_1() { uint8_t md[SHA_DIGEST_LENGTH]; char mdstr0[(SHA_DIGEST_LENGTH*2)+1]; + mb_traceEnd(); + truncate(mbTraceFile, NSCT_TRACE_TARGET_SIZ); + truncate(mbSampsFile, NSCT_SAMPS_TARGET_SIZ); + // verify trace file do { unsigned char *buf = MALLOC(NSCT_TRACE_TARGET_SIZ); @@ -196,7 +200,6 @@ TEST test_mockingboard_1() { break; } while (1); c_debugger_set_timeout(0); - mb_traceEnd(); unlink(mbTraceFile); FREE(mbTraceFile); @@ -211,11 +214,11 @@ TEST test_mockingboard_1() { // ---------------------------------------------------------------------------- // CPU tracing -// This test is majorly abusive ... it creates an ~800MB file in $HOME +// This test is majorly abusive ... it creates an ~900MB file in $HOME // ... but if it's correct, you're fairly assured the cpu/vm is working =) #if ABUSIVE_TESTS -#define EXPECTED_CPU_TRACE_FILE_SIZE 889495849 -#define EXPECTED_CPU_TRACE_SHA "5D16B61156B82960E668A8FA2C5DB931471524FE" +#define EXPECTED_CPU_TRACE_FILE_SIZE 889495699 +#define EXPECTED_CPU_TRACE_SHA "ADFF915FF3B8F15428DD89580DBE21CDF71B7E39" TEST test_boot_disk_cputrace() { const char *homedir = HOMEDIR; char *output = NULL; @@ -259,8 +262,8 @@ TEST test_boot_disk_cputrace() { } #endif -#define EXPECTED_CPUTRACE_HELLO_FILE_SIZE 118170553 -#define EXPECTED_CPUTRACE_HELLO_SHA "3BE4CFC3CFDBFED83FAF29EB0C8A004D20964461" +#define EXPECTED_CPUTRACE_HELLO_FILE_SIZE 118170437 +#define EXPECTED_CPUTRACE_HELLO_SHA "D5BF7650E51404F3358C9C4CBBEBAA191E53AD72" TEST test_cputrace_hello_dsk() { test_setup_boot_disk(BLANK_DSK, 0); @@ -310,7 +313,7 @@ TEST test_cputrace_hello_dsk() { } #define EXPECTED_CPUTRACE_HELLO_NIB_FILE_SIZE 14153921 -#define EXPECTED_CPUTRACE_HELLO_NIB_SHA "AC3787B7AE7422DD88AA414989B059F13BBF1674" +#define EXPECTED_CPUTRACE_HELLO_NIB_SHA "B09F85206E964487378C5B62EA26626A6E8159F1" TEST test_cputrace_hello_nib() { test_setup_boot_disk(BLANK_NIB, 0); @@ -412,8 +415,8 @@ TEST test_cputrace_hello_po() { // ---------------------------------------------------------------------------- // VM tracing -#define EXPECTED_VM_TRACE_FILE_SIZE 2832136 -#define EXPECTED_VM_TRACE_SHA "E39658183FF87974D8538B38B772A193C6C3276C" +#define EXPECTED_VM_TRACE_FILE_SIZE 2383449 +#define EXPECTED_VM_TRACE_SHA "0B387CBF4342CC24E0B9D2DA37AF517FD75DF467" TEST test_boot_disk_vmtrace() { const char *homedir = HOMEDIR; char *disk = NULL; @@ -458,8 +461,8 @@ TEST test_boot_disk_vmtrace() { PASS(); } -#define EXPECTED_VM_TRACE_NIB_FILE_SIZE 2931400 -#define EXPECTED_VM_TRACE_NIB_SHA "5ED6270A7A9CC523D9BAB07E08B74394C3386A32" +#define EXPECTED_VM_TRACE_NIB_FILE_SIZE 2470474 +#define EXPECTED_VM_TRACE_NIB_SHA "0256D57E561FE301588B1FC081F04D20AA870789" TEST test_boot_disk_vmtrace_nib() { test_setup_boot_disk(BLANK_NIB, 0); @@ -507,7 +510,7 @@ TEST test_boot_disk_vmtrace_nib() { } #define EXPECTED_VM_TRACE_PO_FILE_SIZE EXPECTED_VM_TRACE_FILE_SIZE -#define EXPECTED_VM_TRACE_PO_SHA "EDBE060984FC1BAA30C2633B791AF49BA89112AE" +#define EXPECTED_VM_TRACE_PO_SHA "3AE332028B37DE1DD0F967C095800E28D5DC6DB7" TEST test_boot_disk_vmtrace_po() { test_setup_boot_disk(BLANK_PO, 0);