CODINGLISTINGS ★ POP AF — mal ganz anders ★

POP AF (Happy Computer)Coding Listings
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Flags dienen in Maschinencode-Programmen zur Registrierung von Ereignissen. Durch Unterprogramme ändert sich jedoch ihr Inhalt. So stellen Sie den alten Zustand wieder her.

Oft möchte man als Z80-Maschirtenprogrammierer auf dem Schneider-CPC den Akku vor dem Aufruf eines Unterprogramms mit PUSH AF sichern und nach dessen Abarbeitung wiederherstellen. Sollen allerdings die Flags, die vom Unterprogramm eventuell verändert wurden, nicht vom folgenden POP AF wieder überschrieben werden, müßte man dazu normalerweise folgende Z80-Befehle benutzen:

LD (Speicher) , A
CALL Unterprogramm
LD A,(Speicher)

Diese Kommandos retten den Inhalt des Akkumulators in eine Speicherstelle, sichern aber das Flag-Register nicht. Ganz abgesehen davon, daß alleine die Ladebefehle sechs Byte kosten, muß man zudem noch eine zusätzliche absolute Speicheradresse verwalten.

Eine bessere Lösung ist:

PUSH AF
CALL Unterprogramm
EX (SP),HL
LD A,H
POP HL

Diese Lösung benötigt nur vier Byte und ist völlig relokatibel. Eine Demonstration zeigt das Listing. Es lädt den Akku mit dem (ansonsten bedeutungslosen) Wert 200 und ruft die CPC-Systemroutine MC BUSY PRINTER auf. Diese setzt das Carry-Flag im F-Register des Prozessors, wenn der Drucker nicht empfangsbereit oder nicht angeschlossen ist. Der Basic-Lader ruft das Maschinenprogramm auf und gibt erläuternde Kommentare aus. Das zeigt, daß die Befehlsfolge den Inhalt des Akkus erhält, aber das Flag-Register sich vom Unterprogramm verändern läßt.

Dieser Trick funktioniert übrigens auf allen Z80-Computern, auch auf dem Joyce. Das Beispielprogramm ist aber auf die CPC-Reihe abgestimmt.

Martin Kotulla/ja, HC

★ PUBLISHER: Happy Computer
★ YEAR: 1986
★ CONFIG: AMSDOS + 64K
★ LANGUAGE:
★ AUTHOR: Martin Kotulla
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» POP  AF    (Happy  Computer-Sonderheft)    GERMANDATE: 2021-03-11
DL: 151
TYPE: ZIP
SiZE: 3Ko
NOTE: 40 Cyls
.HFE: Χ

» POP  AF    (Happy  Computer-Sonderheft)    LISTING    GERMANDATE: 2021-03-11
DL: 181
TYPE: PDF
SiZE: 104Ko
NOTE: 1 page/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » After All This Time (Computing with the Amstrad)
» Coding Src's » SUB TIMER: Digital Realtime Clock (CPC Amstrad International)
» Coding Src's » Reaction Timer (Computing with the Amstrad)
» Coding Src's » Read or write in record time (Computing with the Amstrad)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 126 millisecondes et consultée 690 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.