FINLOG

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Anmerkung: Dieser Artikel beschreibt die numerische FINLOG-Routine im BASIC-ROM.

Name: FINLOG
Beschreibung: Akkumulator zum Fließkommaregister FAC addieren
Einsprungpunkt: $BD7E / 48510
Übergebene Argumente:
Akkumulator: Summand A
Sonstige: FAC = Summand B
Rückgabe-Werte:
Sonstige: FAC = Ergebnis der Addition A+B, ARG = Summand B


FINLOG — manchmal auch als ADDAFC[1] bezeichnet — interpretiert den Inhalt des Akkumulators als vorzeichenbehaftete 8-Bit-Ganzzahl und addiert diese zum Inhalt des Fließkommaregisters FAC.

Nach dem Aufruf steht in FAC das Ergebnis der Addition, während ARG den ursprünglichen Wert von FAC enthält. Neben dem Inhalt der Fließkommaregister FAC und ARG ändert FINLOG auch das Rundungsbyte des Hilfspuffers FAC#3 an Adresse 86/$56.

Algorithmus

FINLOG implementiert keine eigenständige Addition, sondern kopiert nur mittels MOVFA den Inhalt des Fließkommaregisters FAC nach ARG und nutzt dann einen Abschnitt der ROM-Routine SGN, um den Inhalt des Akkumulators in eine Fließkommazahl zu wandeln. Anschließend springt FINLOG zur ROM-Routine FADDT.

Laufzeitverhalten

Die Laufzeit von FINLOG setzt sich zusammen aus den Rechenzeiten für das Umkopieren von FAC nach ARG, die Umwandlung des Akkumulators in eine Fließkommazahl und die abschließende Addition. Die Umwandlung in eine Fließkommazahl benötigt zwischen 114 Systemtakten (falls die im Akkumulator übergebene Zahl im Bereich [ 64; 127 ] liegt) und 386 Takten (für A = -1). Der von FINLOG mitverwendete Additionsalgorithmus sowie die restlichen Einzellaufzeiten sind ausführlich in den Beschreibungen der ROM-Routinen MOVFA und FADD dokumentiert.

Ein Systemtakt entspricht auf dem Commodore 64 rund einer Mikrosekunde (μs).

Weblinks

Quellen