'express asynchronous Der Kernel - Software-Interrupts: Eventsevents' (Port B - Input: &F5xx: Bits 1, 2 und 3: Port C - Output: &F6xx: Bit 6 und 7:Bit 6 und Datenbreite: Bits Port B - Input: &F5xx: Bit 0: Port B - Input: &F5xx: Bit 4: Port B - Input: &F5xx: Bit 5: Port B - Input: &F5xx: Bit 6: Port B - Input: &F5xx: Bit 7: Port C - Output: &F6xx: Bit 4: Port C - Output: &F6xx: Bit 5:Bit 7 gesetzt) sind Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts der Dringlichkeitsstufe Eins: Nur bei solchen Ereignissen wird die zugehörige Behandlungs-Routine SOFORT aufgerufen, sobald der MAIN FIRMWARE JUMPBLOCK: KERNEL Die Firmware des Schneider CPC: KERNELKernel ihr Eintreffen erkannt hat, und nicht erst in die 'asynchronous pending queue' eingereiht. Nur diese Der Kernel - Software-Interrupts: EventsEvents werden noch bei ausgeschaltetem Hardware-Interrupt bearbeitet. Das hat mehrere Konsequenzen:
So sollte die Behandlungs-Routine so kurz wie überhaupt nur möglich sein. ROM-Konfiguration: RestartsRestarts etc. dürfen nicht benutzt werden, weil die allesamt Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts wieder zulassen würden.
Deshalb darf man für express asynchrone Der Kernel - Software-Interrupts: EventsEvents auch keine 'far address' angeben: Die würde ja mittels ROM-Konfiguration: RestartsRestart 3 aufgerufen! Hier darf man nur eine 'near address', ohne Angabe der Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration benutzen. Damit muss die Behandlungs-Routine gezwungenermassen im zentralen RAM (oder Betriebssytem-ROM) liegen.
Allgemein gilt für asynchrone Der Kernel - Software-Interrupts: EventsEvents, dass sie die meisten Routinen des Betriebssystems nicht aufrufen dürfen, weil diese nicht re-entrant (vielfach aufrufbar) sind.
Für die Behandlungs-Routinen aller Der Kernel - Software-Interrupts: EventsEvents gelten die folgen Ein- und Aussprungs-Bedingungen (Achtung: Die Angaben hierzu im Die Firmware des Schneider CPCFirmware Manual stimmen nicht!):
Ein/Ausgabe-Bedingungen für jede Event-Behandlungs-Routinen
------------------------------------------------------------
(1) 'near address': Eingaben: DE zeigt auf Datentypen: Bytes Datenbreite: BytesByte 5 des BCEF: KL INIT EVENT: EventblockEventblocks. Evtl.
benötigte Variablen: lokale Variablenlokale Variablen für die
Routine liegen ab Datentypen: Bytes Datenbreite: BytesByte 7, also ab DE+2.
Ausgaben: IX und IY dürfen nicht verändert werden.
(2) 'far address': Eingaben: HL zeigt auf Datentypen: Bytes Datenbreite: BytesByte 4 des BCEF: KL INIT EVENT: EventblockEventblocks. Evtl.
benötigte Variablen: lokale Variablenlokale Variablen liegen also ab
HL+3. Bei Speicheraufteilung durch ein Vordergrund-Programm: Hintergrund-ROMsHintergrund-ROMs zeigt IY auf die
Unterkante des über Die Aufteilung des RAM durch den Basic-Interpreter: Chaos über HIMEMHIMEM für das Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM
reservierten Speicherbereiches.
Ausgaben: IX und IY dürfen nicht verändert werden.
|