mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-06-26 15:29:41 +00:00
Optimize disk6 track switch read/write and improve tracing conformance with AppleWin
- No need to read/write if only changed to a "half track" - Fixes one small glitch in boot disk tracing
This commit is contained in:
parent
c4e3dccc38
commit
4bdabcaa9a
23
src/disk.c
23
src/disk.c
|
@ -613,20 +613,25 @@ static void _disk6_phaseChange(uint16_t ea) {
|
|||
}
|
||||
|
||||
if (direction) {
|
||||
if (disk6.disk[disk6.drive].track_dirty) {
|
||||
save_track_data(disk6.drive);
|
||||
}
|
||||
disk6.disk[disk6.drive].track_valid = false;
|
||||
disk6.disk[disk6.drive].phase += direction;
|
||||
int next_phase = cur_phase + direction;
|
||||
|
||||
if (disk6.disk[disk6.drive].phase<0) {
|
||||
disk6.disk[disk6.drive].phase=0;
|
||||
if (next_phase < 0) {
|
||||
next_phase = 0;
|
||||
}
|
||||
|
||||
if (disk6.disk[disk6.drive].phase>69) { // AppleWin uses 79 (extra tracks/phases)?
|
||||
disk6.disk[disk6.drive].phase=69;
|
||||
if (next_phase > 69) { // AppleWin uses 79 (extra tracks/phases)?
|
||||
next_phase = 69;
|
||||
}
|
||||
|
||||
if ((cur_phase >> 1) != (next_phase >> 1)) {
|
||||
if (disk6.disk[disk6.drive].track_dirty) {
|
||||
save_track_data(disk6.drive);
|
||||
}
|
||||
disk6.disk[disk6.drive].track_valid = false;
|
||||
}
|
||||
|
||||
disk6.disk[disk6.drive].phase = next_phase;
|
||||
|
||||
#if DISK_TRACING
|
||||
if (test_read_fp) {
|
||||
fprintf(test_read_fp, "NEW TRK:%d\n", (disk6.disk[disk6.drive].phase>>1));
|
||||
|
|
|
@ -40,11 +40,11 @@ static void testdisk_teardown(void *arg) {
|
|||
// Disk TESTS ...
|
||||
|
||||
#if CONFORMANT_TRACKS
|
||||
#define EXPECTED_DISK_TRACE_FILE_SIZE 141350
|
||||
#define EXPECTED_DISK_TRACE_SHA "471EB3D01917B1C6EF9F13C5C7BC1ACE4E74C851"
|
||||
#define EXPECTED_DISK_TRACE_FILE_SIZE 141348
|
||||
#define EXPECTED_DISK_TRACE_SHA "8E2415BB7F0A113BFE048FFE0C076AD4B377D22E"
|
||||
#else
|
||||
#define EXPECTED_DISK_TRACE_FILE_SIZE 134292
|
||||
#define EXPECTED_DISK_TRACE_SHA "19C10B594055D88862A35A45301B2E37A2E7E9F4"
|
||||
#define EXPECTED_DISK_TRACE_FILE_SIZE 134290
|
||||
#define EXPECTED_DISK_TRACE_SHA "FA47CC59F0CC7E5B1E938FD54A3BD8DB6C930593"
|
||||
#endif
|
||||
TEST test_boot_disk_bytes() {
|
||||
srandom(0);
|
||||
|
@ -91,8 +91,8 @@ TEST test_boot_disk_bytes() {
|
|||
PASS();
|
||||
}
|
||||
|
||||
#define EXPECTED_DISK_TRACE_NIB_FILE_SIZE 147368
|
||||
#define EXPECTED_DISK_TRACE_NIB_SHA "1716FE7E79068D85F4EEF3CFEB28EAE8D512E592"
|
||||
#define EXPECTED_DISK_TRACE_NIB_FILE_SIZE 147366
|
||||
#define EXPECTED_DISK_TRACE_NIB_SHA "CE61D709A344778AB8A8DACED5A38D0D40F1E645"
|
||||
TEST test_boot_disk_bytes_nib() {
|
||||
test_setup_boot_disk(BLANK_NIB, 0);
|
||||
srandom(0);
|
||||
|
@ -140,11 +140,11 @@ TEST test_boot_disk_bytes_nib() {
|
|||
}
|
||||
|
||||
#if CONFORMANT_TRACKS
|
||||
#define EXPECTED_DISK_TRACE_PO_FILE_SIZE 141350
|
||||
#define EXPECTED_DISK_TRACE_PO_SHA "6C2170D3AA82F87DD34E177309808199BDCCB018"
|
||||
#define EXPECTED_DISK_TRACE_PO_FILE_SIZE 141348
|
||||
#define EXPECTED_DISK_TRACE_PO_SHA "41C382A0A508F9A7935532ECFB7A1B6D53956A8D"
|
||||
#else
|
||||
#define EXPECTED_DISK_TRACE_PO_FILE_SIZE 134292
|
||||
#define EXPECTED_DISK_TRACE_PO_SHA "9A6DDCB421B369A4BB7ACC5E40D24B0F38F98711"
|
||||
#define EXPECTED_DISK_TRACE_PO_FILE_SIZE 134290
|
||||
#define EXPECTED_DISK_TRACE_PO_SHA "E85D7B357B02942772F46332953E59CAB67D85CD"
|
||||
#endif
|
||||
TEST test_boot_disk_bytes_po() {
|
||||
test_setup_boot_disk(BLANK_PO, 0);
|
||||
|
@ -325,10 +325,10 @@ TEST test_savehello_po() {
|
|||
|
||||
#if CONFORMANT_TRACKS
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_FILE_SIZE 85915
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_SHA "727162AD8C2C475BDFE1DEEDAE068215C50A28D1"
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_SHA "05A9043B09605546F2BCFD31CB2E48C779227D95"
|
||||
#else
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_FILE_SIZE 85916
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_SHA "A8956DFE0E6CDFB5A2A838971FB9CAB9DC0913BB"
|
||||
# define EXPECTED_DISKWRITE_TRACE_DSK_SHA "06E446C69C4C3522BDEF146B56B0414CA945A588"
|
||||
#endif
|
||||
#define EXPECTED_BSAVE_DSK_SHA "4DC3AEB266692EB5F8C757F36963F8CCC8056AE4"
|
||||
TEST test_disk_bytes_savehello_dsk() {
|
||||
|
@ -627,10 +627,10 @@ TEST test_disk_bytes_savehello_po() {
|
|||
#define EXPECTED_OOS_DSK_SHA "D5C5A3FFB43F3C55E1C9E4ABD8580322415E9CE0"
|
||||
#if CONFORMANT_TRACKS
|
||||
# define EXPECTED_OOS_DSK_TRACE_FILE_SIZE 4386397
|
||||
# define EXPECTED_OOS_DSK_TRACE_SHA "2451ED08296637220614B1DE2C5AE11AB97ED173"
|
||||
# define EXPECTED_OOS_DSK_TRACE_SHA "FF60D99539047B76B0B441C5907F0FBE3D0B2FCE"
|
||||
#else
|
||||
# define EXPECTED_OOS_DSK_TRACE_FILE_SIZE 4386354
|
||||
# define EXPECTED_OOS_DSK_TRACE_SHA "FB1BFF7D1535D30810EED9FD1D98CC054FB6FB1A"
|
||||
# define EXPECTED_OOS_DSK_TRACE_SHA "1304191D985B3D3E528FB462D2CF3677584CD2C3"
|
||||
#endif
|
||||
TEST test_outofspace_dsk() {
|
||||
test_setup_boot_disk(BLANK_DSK, 0);
|
||||
|
|
Loading…
Reference in New Issue
Block a user