Fixes FDC/FDD recalibration not working correctly with audio profiles#6629
Merged
Merged
Conversation
…hen no audio was selected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes FDC/FDD recalibration not working correctly with audio profiles, even when audio profile was set to "None".
In the previous FDD/FDC implementation it was not taken to account that recalibration should not return immediadely, but let the FDD do the recalibration seek first and after it completes, then next command is allowed. The recalibration sequence follows now same path as the normal seek does where FDD calls the "fdc seek complete" function when seek is finished.
This fixes issue, when e.g. when installed MS-DOS 6.22 and after reboot BIOS displayed floppy disk error (40). The problem was that MS-DOS installation left the FDD to upper part of the tracks and then during the boot, BIOS would try to recalibrate head back to track 0, but the FDC returned the seek "complete" immediadely to the BIOS, even when the FDD had seek timer ongoing. This created a situation where the next FDD POST test seek command was sent from BIOS before the recalibration seek was done and the FDD/FDC were left to "undefined" state and resulted the error status in the BIOS.
This also fixes the issue where recalibration seeks were not played by the fdd audio.
Tested with PCjr, IBM PC 1981, IBM PS/1 and 1995ish AMIBIOS. Used MS-DOS 6.22, OS/2 and Debian Linux 0.9 installation disks. Tested also that Turbo mode still works correclty.
Checklist