diff options
author | Maxwell Beck <max@rastertail.net> | 2025-05-29 15:40:22 -0500 |
---|---|---|
committer | Maxwell Beck <max@rastertail.net> | 2025-05-29 15:40:22 -0500 |
commit | 22997d87d03825a9d470f70218b387682ebbb46b (patch) | |
tree | 88e4cfa7229b85eb849245253073bd7f68f4d475 /src/drive.c | |
parent | 3ee6d4b5f90cea5f0959ed0724151551c8fb5029 (diff) |
fix: Use VIA2 PB to determine track bitrates
Diffstat (limited to 'src/drive.c')
-rw-r--r-- | src/drive.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/drive.c b/src/drive.c index 5bc2e3b..e31a964 100644 --- a/src/drive.c +++ b/src/drive.c @@ -9,12 +9,7 @@ const uint8_t SECTORS_PER_TRACK[40] = { 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 }; -const uint8_t BITRATE_PER_TRACK[40] = { - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 68, 68, 68, 68, 68, 68, 68, - 65, 65, 65, 65, 65, 65, - 61 ,61, 61, 61, 61, 61, 61, 61, 61, 61 -}; +const uint8_t BITRATES[4] = { 61, 65, 68, 76 }; const uint8_t GCR_CONV[16] = { 0x0a, 0x0b, 0x12, 0x13, @@ -30,6 +25,7 @@ void drive_init(drive_t *drive) { drive->track = 17; drive->halftrack = 0; + drive->bitrate = 0; drive->image_ptr = 0x16500; drive->sector = 0; drive->byte = 0; @@ -83,7 +79,7 @@ bool drive_advance(drive_t *drive, uint8_t cycles) { void drive_cycle(drive_t *drive) { while (drive->lookahead_idx != ((drive->current_idx - 1) & (DRIVE_LOOKAHEAD - 1))) { uint8_t j = (drive->lookahead_idx + 1) & (DRIVE_LOOKAHEAD - 1); - uint8_t timer_next = drive->timer + BITRATE_PER_TRACK[drive->track]; + uint8_t timer_next = drive->timer + BITRATES[drive->bitrate]; uint16_t prev = drive->unlatched[drive->lookahead_idx]; if (timer_next < drive->timer) { |