000
10.02.2009, 20:02 Uhr
jmueller
|
Hallo,
das Z80-Interruptsystem ist ja allgemein bekannt und auch gut beschrieben. Wo aber die Dokumentationen recht dünn werden, ist der Fall, wenn die Interruptauslösung unterdrückt bzw. behindert wird. Und genau in dem Zusammenhang bin ich mir bei einigen Details der Daisy Chain nicht ganz 100% sicher. Deshalb möchte ich hier mal ein paar Fälle zru Diskussion stellen. In den meisten Fällen glaube ich zwar die Antwort zu wissen, doch ich halte mich damit mal absichtlich zurück und stelle einfach nur die Fragen.
Also gegeben sind 2 Interrupt auslösende Bausteine A und B (z.B. PIO oder CTC), wobei A höher priorisiert ist.
1. Fall: A stellt eine Interruptanforderungen und zieht /INT auf L, in der CPU sind Interrupts gesperrt und A wartet nun ewig auf die Interruptbestätigung Wenn nun 1000 Befehle später ein EI-Befehl ausgeführt wird, wird dann der Interrupt noch angenommen?
2. Fall: Interrupts in der CPU gesperrt, B stellt Interruptsanforderung, später stellt auch A Interruptanforderungen, Nun kommt EI, Wird daraufhin A und anschließend B bedient?
3. Fall: Interrupts in der CPU gesperrt und A stellt Interruptanforderung, Anschließend wird A so umprogrammiert, dass keine Interrupts ausgelöst werden (Interruptfreigabebit=0). Bleibt die Interruptsanforderung trotzdem bestehen?
4.Fall: A stellt Interruptanforderung, anschließend möchte auch B eine Interruptanforderung stellen, kann aber nicht (niedriger priorisiert). Geht die Interruptanforderung verloren oder wird sie noch aktiv, nachdem die Interruptseriviceroutine für A beendet und die Daisy Chain wieder geschlossen ist?
Mir fallen noch mehr Fälle ein, aber das soll erstmal genügen. Also was ist eure Meinung?
Jens |