Modify ZAP_ALL to skip drives assigned to device-based drivers #147
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.
The
ZAP_ALL
routine, called when the_FLUSH
function call is executed with the "invalidate" flag, deletes all the unit descriptors, the idea being that they will be regenerated on the next drive access.While this works fine for MSX-DOS drives and Nextor drives assigned to drive-based drivers, for device-based drives this means that the drive will undergo an autoassign procedure, which often will result in the drive either getting a different mapping or no mapping at all; this is confusing and probably not what the user wants.
This pull request modifies
ZAP_ALL
so that it skips the deletion of unit descriptors assigned to device-based drivers.Closes #146
How to test
This can be tested by mapping ani drive to a non-default mapping, for example
mapdrv h: 2 1 0
to map partition 2 of device 1 in the primary mapper to drive H: (assuming that the drive is unmapped by default). Then run the following code:Without this fix this results in drive H: getting unmapped, with this fix the drive mapping is unaffected.