-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KA10: Update DPK device. #187
Conversation
@markpizz, can you please take a look at this? I call |
Background information. This is a DMA device for output. Each line has two words in memory. The first word is a character count going down to -1. The second word is a byte pointer that is incremented for each character output. Input goes to a 16 item FIFO and is interrupt driven. |
|
Thanks! To answer some of your points.
|
|
On the KA10 interrupt scans only occur after a device sets and interrupt request. Clearing a interrupt request does not trigger a scan. The PDP10 has level sensitive interrupts. So once and interrupt is set, it remains set until the device drops it. The PDP10 has to do something to the device to tell it it has serviced it's interrupt. You might check out my DC10 which has a scanner to detect received characters. I rely on lower level buffering in the socket layer to handle long output strings. |
OK, so does me saying: "The interrupt acknowledge logic will only clear the interrupt pending condition if the pending output interrupt queue is empty." cover this case. The PDP10's driver will do something to figure out what interrupt just happened, and I'm calling that code path in dpk_devio() where this needs to be done. The output interrupt queue management needs to be handled there. That queue management should set or leave set DKP_ODONE in dpk_status if there are pending output interrupts for different lines, and update the interrupt line in the dpk_status. |
Without looking at the device again. Generally if a device sets DONE flag it should post an interrupt if enabled. Some devices don't have a specific enable and just set the PIA to zero to indicate disabled interrupt. set_interrupt will ignore calls with zero level. Once the device decides to clear the DONE flag it should also clr_interrupt(dev), to stop the CPU from dealing with interrupts. There can be other conditions that can trigger an interrupt, it is up to device writer to let 10 know it needs help. |
This device just has a master interrupt enable bit for all interrupts. |
788656c
to
b99f716
Compare
I have four terminals printing full speed to DPK and they seem to hold up well. I'll add programmable line speed settings. Next up, TK is due for a similar overhaul. |
a774dcd
to
3fb09f0
Compare
3fb09f0
to
09e5f78
Compare
I dropped TK from this pull request so the DPK update can be merged. |
Looks ok to me... will pull it in tonight and let you check it. |
Rebased and tested. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If this passes tests I can merge it.
Fix #160 and #166. Just a draft!