-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PDP11: RP11: Implement delayed CS_DONE for "initiation" commands (SEE…
…K/HOME) Running earlier XXDP tests revealed that a technique of concurrent command initiation and continued housekeeping for the command completion was used in the old code. For example, code could initiate a SEEK command for a drive, and knowing that CS_DONE (and thus, an interrupt) is coming in about 16us, it would then go ahead and clear a flag, which registers that the interrupt has occurred (expected to be set to 1 by the ISR). If CS_DONE is set by the implementation at the function initiation immediately, that would mean that the interrupt could be triggered before the next instruction, and the flag would be set by the ISR right away. The main code, however, would proceed with the the flag clear as the follwing instruction, thus, never detecting the interrupt. Since this technique was in existence, it is better to introduce a delay for setting CS_DONE in the "fast" initiation commands like SEEK and HOME, to accomodate the software that was relying on it. So far, however, no issues were encountered in testing (except one), where this delay mattered, but it's hard to tell if it would not be needed at all. All I/O commands always delay CS_DONE already because they were never supposed to be immediate. Since the time for CS_DONE in initiation commands was documented at 16us, the introduced delay is set to 10 instructions, which usually took more than that to execute. But the interrupt flag clear case would be covered, as well as the counted waits, which used some 25+-iteration tight loops for "drive ready", before flagging a time-out (so the delay cannot longer, either). It also looks like more modern code never used any such tricks, so for it, it should not matter if CS_DONE was delayed or not.
- Loading branch information
Showing
1 changed file
with
52 additions
and
17 deletions.
There are no files selected for viewing
This file contains 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