HIGH KERNEL JUMPBLOCKDie obere Sprungleiste des MAIN FIRMWARE JUMPBLOCK: KERNEL B900: HI KL U ROM ENABLEBlende das momentan selektierte obere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)Rom ein. Eingaben: keine Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = alter ROM-Konfiguration: ROM-Status Das momentan im obersten Adressviertel angewählte Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM wird eingeblendet. Lesezugriffe der Die ICs im Überblick: Die CPU Z80 B903: HI KL U ROM DISABLEBlende das obere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM aus und RAM ein. Eingaben: keine Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = alter ROM-Konfiguration: ROM-Status Das momentan im obersten Adressblock angewählte Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM wird ausgeblendet. Lesezugriffe der Die ICs im Überblick: Die CPU Z80 B906: HI KL L ROM ENABLEBlende unten das Betriebssystems-ROM ein. Eingaben: keine Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = alter ROM-Konfiguration: ROM-Status Das Betriebssystem-ROM wird eingeblendet. Lesezugriffe der Die ICs im Überblick: Die CPU Z80 B909: HI KL L ROM DISABLEBlende das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM wieder aus und RAM ein. Eingaben: keine Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = alter ROM-Konfiguration: ROM-Status Dieser Vektor blendet das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM (Betriebssystem) wieder aus. Der Ausgabewert im A-Register kann ebenfalls wieder benutzt werden, um mit &HIGH KERNEL JUMPBLOCK: B90C: HI KL ROM RESTOREB90C HI KL ROM RESTORE den alten ROM-Konfiguration: ROM-Status B90C: HI KL ROM RESTOREStelle eine frühere Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration wieder her. Eingaben: Operationen: BD5B / 349A / 349A: FLO SUBA = alter ROM-Konfiguration: ROM-Status Mit Hilfe dieses Vektors kann eine alte Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration, die im A-Register übergeben wird, wieder hergestellt werden. Da ein Programm, das beispielsweise das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM mit &HIGH KERNEL JUMPBLOCK: B906: HI KL L ROM ENABLEB906 HI KL L ROM ENABLE eingeblendet hat, nicht sicher wissen kann, dass dieses Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM auch vorher wirklich nicht eingeblendet war, ist es mitunter höchst unsicher, das Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM nachher einfach mit 6HIGH KERNEL JUMPBLOCK: B909: HI KL L ROM DISABLEB909 HI KL L ROM DISABLE wieder auszublenden. B90F: HI KL ROM SELECTWähle ein bestimmtes Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM an und blende es ein. Eingaben: C = ROM-Select-Byte Ausgaben: C = alte ROM-Selection LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Entsprechend C wird im obersten Speicherblock ein neues Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM angewählt und eingeblendet. Die Ausgabewerte reflektieren die alte Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration, die sich aus ROM-Selection und ROM-Konfiguration: ROM-Status B912: HI KL CURR SELECTIONFrage an, welches Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM oben gerade selektiert ist. Eingaben: keine
Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = aktuelles ROM-Select-Byte
Unverändert: F,BC,DE,HL,IX,IY
Es ist nicht nur für andere Programme interessant, welches Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM im oberen Adressblock gerade angewählt (aber nicht unbedingt eingeblendet) ist, auch dem Programm in diesem Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM selbst kann das mitunter noch unbekannt sein. Die Hardware-Designer bei Amstrad dachten sich nämlich, dass sich jeder CPC-Benutzer irgendwann auch eine Modulbox kauft, in die er dann Programm-Module einstecken kann. Die Module enthalten dabei nichts weiter als ein Die Anschlussbelegungen der wichtigsten ICs im CPC: Die EPROMs 27128 und 27256Eprom, mit eben diesem Programm. Die Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM- Select-Adresse wird aber vom Steckplatz in der Modulbox bestimmt. Ein solches ROM-Programm kann also von vornherein gar nicht wissen, auf welcher ROM-Adresse es laufen wird. Um nun aber trotzdem mit anderen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMs kommunizieren zu können, sollen sich diese Programm des LOW KERNEL JUMPBLOCK: 0018 - RST 3: LOW FAR CALLRST_3 (FAR Maschinencode über HIMEM: CALLCALL) bedienen, für den eine 'FAR ADDRESS' benötigt wird. In dieser 'FAR ADDRESS' muss außer der (bekannten) Routinenadresse auch das ROM-Select-Byte angegeben werden. Das ist aber nicht von vornherein festlegbar. Deswegen sollen die FAR-ADDRESS-Bloecke erst bei der Initialisierung im RAM installiert werden, nachdem die eigene Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM- Select-Adresse erfragt wurde. B915: HI KL PROBE ROMBestimme Klasse & Version eines Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMs. Eingaben: C = ROM-Select-Byte Ausgaben: Operationen: BD5B / 349A / 349A: FLO SUBA = B915: HI KL PROBE ROM: ROM CLass:ROM Class L = Mark Number H = Version Number Unverändert: C,DE,IX,IY Dieser Vektor blendet das gewünschte Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM kurzzeitig ein, um die ersten drei Datentypen: Bytes ROM CLass:Operationen: BD5B / 349A / 349A: FLO SUBA = 0 - Vordergrundprogramm B918: HI KL ROM DESELECTIONStelle eine frühere ROM-Konfiguration: ROM-Selektion Eingaben: C = alte ROM-Selection LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL Mit diesem Vektor wird die duch &HIGH KERNEL JUMPBLOCK: B90F: HI KL ROM SELECTB90F HI KL ROM SELECT vorgenommene Veränderung der Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration wieder rückgängig gemacht. B91B: HI KL LDIRFühre ein LDIR im RAM durch. Eingaben: HL = Adresse des ersten Quellbytes DE = Adresse des ersten Zielbytes BC = Länge des zu verschiebenden RAM-Bereiches Ausgaben: wie nach LDIR Unverändert: wie nach LDIR B91E: HI KL LDDRFühre ein LDDR im RAM durch. Eingaben: HL = Adresse des ersten Quellbytes DE = Adresse des ersten Zielbytes BC = Länge des zu verschiebenden RAM-Bereiches Ausgaben: wie nach LDDR Unverändert: wie nach LDDR B921: HI KL POLL SYNCHRONOUSErklärung der Anschlussbelegung: TestTeste, ob eine synchronisierbare Unterbrechung auf ihre Ausführung wartet. Eingaben: keine Ausgaben: CY=0 -> SYNCHRONOUS Der Kernel - Software-Interrupts: EventsEVENT PENDING QUEUE ist leer CY=1 -> in der Queue wartet ein Der Kernel - Software-Interrupts: EventsEvent, das behandelt werden sollte Unverändert: BC,DE,HL,IX,IY Diese RAM-residente Routine dient dazu, mit möglichst wenig Zeitverlust die SYNCHRONOUS Der Kernel - Software-Interrupts: EventsEVENT PENDIG QUEUE zu pollen. Dies kann auch aus einer Event-Behandlungsroutine heraus geschehen. In diesem Fall versteckt der MAIN FIRMWARE JUMPBLOCK: KERNEL Wartet ein Der Kernel - Software-Interrupts: EventsEvent (mit höherer Priorität) auf seine Ausführung, so sollten danach &KERNEL: BCFB: KL NEXT SYNCBCFB KL NEXT SYNC, &KERNEL: BCFE: KL DO SYNCBCFE KL DO SYNC und &KERNEL: BD01: KL DONE SYNCBD01 KL DONE SYNC aufgerufen werden. B92A: HI KL SCAN NEEDEDNur CPC 664 und 6128! Teile dem MAIN FIRMWARE JUMPBLOCK: KERNEL Eingaben: keine Ausgaben: keine Unverändert: AF,BC,DE,IX,IY Diese Routine setzt einfach den Systemspeicher des Frequenzteilers für den TICKER-Interrupt auf Eins. Dadurch wird der MAIN FIRMWARE JUMPBLOCK: KERNEL Wiederholtes Aufrufen dieses Vektors kann die Geschwindigkeit der TICKER-Liste bis auf 300 Kicks pro Sekunde hochtreiben. |