Hi all,
wenn ich den Zweitregistersatz auch unter der Standard Firmware verwenden moechte, was muss ich dann alles machen?
Wuerde folgender Codeschnippsel ausreichen oder ist das schon zu viel des Guten?
Zweitregistersatz mit der Firmware verwenden
- Octoate
- Erledigt
-
-
Mailzeit, Octoate!
Warum das ex? Wenn Du AF? Wenn Du AF sicherst und dann wiederhestellst sollte das genügen.
Viel Erfolg wünscht
AMSi -
Hmm, dein Posting hab ich jetzt nicht so genau verstanden... Sieht ein wenig aus, als haettest du Wasser getrunken ;).
Exx hab ich deshalb mit reingenommen, um an den Zweitregistersatz von DE, HL und BC ranzukommen und den dann mittels PUSH zu sichern.
Wenn ich das naemlich richtig in Erinnerung habe, dann benutzt die Firmware den Zweitregistersatz intensiv. -
Stimmt, ich habe Wasser getrunken - hick!
Das exx ist schon klar, damit vertauschst Du die Registersätze. Aber warum tauschst Du dann mit ex af,af' den Akku und die Flags wieder zurück?
Prost,
AMSi -
Ach, exx betrifft nur BC, DE und HL, wie mich eben Rodnay Zaks belehrt.
Ich Dummerle,
AMSi -
-
Hi Octoate,
DE' und HL' werden außerhalb der Interruptserviceroutinen nicht genutzt. Es reicht also aus BC' zu sichern. Wozu EX AF: PUSH AF gut sein soll will ich aber auch nicht recht einsehen weil ein PUSH AF diese Register ja schon rettet.Beispielcode:
di
exx
;zweiter Registersatz aktiv
push bc
push af
...
;testcode
...
pop af
pop bc
exx
ei
retViele Grüße
TobiFlex -
Ja, aber wenn ich doch nur EXX verwende, wird AF ja gar nicht zu AF', da das Register nur durch den Befehl EX AF, AF' getauscht werden kann. Somit wuerde ich bei deinen Befehlen ja nur das AF des Erstregistersatzes sichern.
-
Jetzt kommt die ZWEITE: TÄRÄ TÄRÄ
@Octo
in der Tat ist es so wie du schreibst. Ich sag ja nur, daß ich den Sinn nicht recht einsehe. Denn nach einem PUSH AF kannst du doch gleich mit AF weiterarbeiten. Aber wenn du wirklich AF' nutzen willst ist EX AF,AF':PUSH AF unumgänglich. A' wird genutzt um einen externen Interrupt zu erkennen. -
-
Das C-Flag von F' muß vor EI noch gelöscht werden. HL und DE werden in der Interruptserviceroutine intensiv genutzt - es werden aber außerhalb dieser keine Werte gespeichert. Also reicht es BC' zu sichern und C'-Flag zu löschen.
-
Super, das scheint zu funktionieren :)! Danke!