Interrupts in mode 2 #376
Replies: 2 comments 3 replies
-
Expanded, yes. Easily, no. The number of vectors available is limited by the size of the RomWBW stub at the top of memory. It is 512 bytes and was designed to be as small as possible. The RomWBW interrupt management framework could easily be expanded, but there is no room for more vectors in the 512 byte stub. Yes, the size of the upper memory stub could be increased. But that is where it gets hard. There are many places in the code that would need to be adjusted to change the size of the stub. Additionally, the OS BIOSes would need to be adjusted. I'm sorry to say that I don't want to make such a change at this time. First, because I don't want to increase the size of the stub. Second, because it would be vary hard and I have many other high priority things to address right now. You are welcome to fork the repository to pursue this on your own as desired. Thanks, Wayne |
Beta Was this translation helpful? Give feedback.
-
Hi
Regarding IM2 interrupts, I recognize there are 16 interrupt slots (8 Zilog + 8 non-Zilog) available in RomWBW. However, the possibility of more than 16 devices using those interrupts seem to be a real possibility even if I haven't seen a case of that happening on duodyne yet.
I am thinking the way to address the issue is to use "interrupt stacking" in the ISR so related devices could share interrupts. For instance, the 16C2552 DUART has two interrupts which could be the same but use the ISR to determine which one.
If it is only a couple of device possibilities, then the ISR can still be able to react fast enough to the interrupt in a timely manner rather than searching through a whole list of devices looking for the interrupt originator like in IM1. Probably would need special ISR code to use shared interrupts though.
I think most devices don't even use interrupts even if they could which conserves interrupts. The UART and FDC could but don't use interrupts but could if necessary. They work just as well or better using regular polling.
The 16 interrupts limit is more of a potential limitation than an actual limitation. I think there are still ways to use more than 16 devices by tweaking the ISRs. However, we really haven't gotten to that scenario yet, at least not on duodyne. Maybe others have.
Thanks, Andrew Lynch
On Thursday, December 21, 2023 at 03:09:29 AM EST, jpelletier ***@***.***> wrote:
I reassigned some interrupts so that I only need 16 instead of 24. The 8 remaining can just be polled instead.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
My computer doesn't have any Zilog peripherals. I have made my own interrupt controller which can output vectors for mode 2 interrupts. The problem is that I can generate 24 interrupt vectors but RomWBW only support 16 interrupt vectors for now. Can this be expanded easily?
For each 8-interrupt block, a register enable/disable individual interrupts.
Beta Was this translation helpful? Give feedback.
All reactions