Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: LambdaMikel on 04. August 2019, 19:10:29

Title: Register sichern für Betriebssystem-Aufrufe
Post by: LambdaMikel on 04. August 2019, 19:10:29
Frage an die Z80-CPC-Experten - was ist die effizienteste Methode, um Register "zu retten" vor destruktiven Betriebssystem Calls?
Z.B. call &bb5d - TXT WR CHAR - macht alles kaputt, ausser IX und IY. Wie soll ich am Besten meine Programm-Variablen "retten"?

- auf den Stack - PUSH BC, PUSH DE ....
- IX und IY verwenden (ich dachte, die Verwendung dieser ist im CPC stark eingeschränkt?)
- in den Speicher schreiben - ld hl,speicher, ld (hl),register
- und und und???

Title: Re: Register sichern für Betriebssystem-Aufrufe
Post by: oobdoo on 05. August 2019, 16:03:22
Nur das mit PUSH/POP retten welches nach BB5D mit weiter benötigten Werten arbeiten soll. Oder BB5A nehmen, das verändert gar keine Register.
IX und IY können ganz normal verwendet werden, da gibt es keine Einschränkungen, nur bei einigen IN/OUT.

Ich empfehle Dir https://cpcwiki.de/forum/index.php/topic,282.0.html runter zu laden. Da steht alles wichtige drin.
Title: Re: Register sichern für Betriebssystem-Aufrufe
Post by: TFM on 05. August 2019, 19:26:20
PUSH / POP sind am schnellsten. Bei einzelnen 8 Bit Registern kann man auch unbenutzte nehmen.

Die AF' und BC' Register (also 2ter Registersatz) müssen intakt bleiben. Auch sollte man die nur einblenden wenn man zuvor mit DI die Interrupts ausgeschalten hat.

Unter FutureOS hat der Programmierer volle Freiheit und kann immer alles nutzen. Also ist es da einfacher zum testen.