FADDH
Anmerkung: Dieser Artikel beschreibt die numerische FADDH-Routine zum Vorbereiten einer Rundung im BASIC-ROM.
Name: | FADDH | ||||||
Beschreibung: | Fließkommaregister FAC um 0.5 erhöhen | ||||||
Einsprungpunkt: | $B849 / 47177 | ||||||
Übergebene Argumente: | |||||||
Sonstige: | FAC = Zu erhöhende Fließkommazahl A | ||||||
Rückgabe-Werte: | |||||||
Sonstige: | FAC = Ergebnis der Addition A+0.5 |
FADDH — manchmal auch als ADD0.5[1] oder PLUS05[2] bezeichnet — addiert die Konstante 0.5 zum Fließkommaregister FAC. In Kombination mit einer der ROM-Routinen QINT oder INT kann somit der ursprüngliche Inhalt des Fließkommaregisters FAC zur nächsten ganzen Zahl hin auf- oder abgerundet werden.
Nach dem Aufruf steht in FAC das Ergebnis der Addition, während ARG den Wert 0.5 enthält. Neben dem Inhalt der Fließkommaregister FAC und ARG ändert FADDH auch das Rundungsbyte des Hilfspuffers FAC#3 an Adresse 86/$56 sowie den Hilfszeiger an den Adressen 34/$22 bis 35/$23.
Algorithmus[Bearbeiten | Quelltext bearbeiten]
FADDH implementiert keine eigenständige Addition, sondern lädt nur den Akkumulator (Low-Byte) und das Y-Register (High-Byte) mit einem Zeiger auf die Konstante 0.5, die im BASIC-ROM an Adresse $BF11 hinterlegt ist. Anschließend springt FADDH zur ROM-Routine FADD.
Der von FADDH auf diese Weise mitverwendete Algorithmus sowie das Laufzeitverhalten sind ausführlich in der Beschreibung der ROM-Routine FADD dokumentiert. Zu den dort angegebenen Rechenzeiten ist noch die Zeit für das Laden des Zeigers und das Einspringen in FADD (insgesamt 7 Systemtakte) zu addieren.
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Disassembly von FADDH/$B849 auf All About Your 64
- C64 BASIC & KERNAL ROM Disassembly von Michael Steil
- C64OS: Floating Point Math from BASIC
Quellen