First post, by superfury
When a floppy disk interrupt occurs, is there a difference between the Sense Interrupt command and the result phase of commands?
Normally, I'd assume that the result phase is going to become active at that point for commands that have one triggered by an interrupt(e.g. Read/Read ID/Write/Verify etc.).
And of course the commands with interrupts without result phase use Sense Interrupt instead to report it's result?
Would that be correct behaviour?
And writing to the Data register clears the IRQ(while keeping tabs on it for the Sense Interrupt command)? As well as a reset(which also clears the IRQ and Sense Interrupt being valid)?
http://www.isdaman.com/alsos/hardware/fdc/floppy.htm is a bit confusing on that matter:
Check Interrupt Status (x8h)
image of Check Interrupt Status Command
This command is used to check status infromation about the state of the controller in the result phase when the controller has returned an interrupt.
The interrupt signal is reset by this command, which also determines the source of the interrupt via status register ST0. If the command is issued with no interrupts pending, a value of 80h is returned in ST0, corresponding to the message invalid command .
Interrupts are issued in the following cases:
At the beginning of the result phase of the commands:
read sector
read deleted sector
write sector
write deleted sector
read track
format track
read sector ID
verify
After completion of the following commands without a result phase:
calibrate drive
seek
seek relative
For data exchange between main memory and controller when interrupt-driven data exchange
is active and the controller is not using DMA.
Or does that mean that an interrupt is thrown for those commands, you then read the result from the controller, then after that issue a Sense Interrupt command to clear the IRQ?
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io