MOVFM

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Anmerkung: Dieser Artikel beschreibt die MOVFM-Routine zur Übertragung von Fließkommawerten im BASIC-ROM.

Name: MOVFM
Beschreibung: Fließkommaregister FAC mit Zahl aus dem Speicher füllen
Einsprungpunkt: $BBA2 / 48034
Übergebene Argumente:
Akkumulator: Adresse des Fließkommawerts (Low-Byte)
Y-Register: Adresse des Fließkommawerts (High-Byte)
Rückgabe-Werte:
Akkumulator: Exponent von FAC
X-Register: bleibt unverändert
Y-Register: 0
Zero-Flag: gesetzt falls FAC = 0, sonst gelöscht

MOVFM — manchmal auch als MOVMF[1] oder MEMFAC[2][3] bezeichnet — überträgt eine Fließkommazahl aus dem Speicher in das Fließkommaregister FAC. Die Speicheradresse dieser Fließkommazahl wird im Akkumulator (Low-Byte) und im Y-Register (High-Byte) übergeben. Die Zahl muss im kompakten 5 Byte-Format vorliegen, wie es zum Speichern von REAL-Variablen verwendet wird. Es können sowohl Werte im RAM als auch Konstanten im BASIC-ROM transferiert werden.

Verwendung[Bearbeiten | Quelltext bearbeiten]

MOVFM überträgt eine Fließkommazahl aus dem Speicher des C64 in das Fließkommaregister FAC und bereitet sie für die nachfolgende Verwendung in Numerik-Routinen vor. Hierfür wird das höchstwertige Byte der Mantisse, das im höchstwertigen Bit das Vorzeichen der Zahl enthält, separat an Adresse 102/$66 kopiert, parallel dazu wird beim Übertragen der Mantisse an die Adressen 98/$62 bis 101/$65 dort das stets gesetzte führende Bit ergänzt. Als Vorbereitung für nachfolgend aufgerufene numerische Routinen löscht MOVFM schließlich noch das Rundungsbyte an Adresse 112/$70. Keine der ROM-Routinen des C64 verwendet den im Akkumulator zurückgelieferten Exponenten, allerdings verlässt sich die Routine FPWR darauf, dass nach dem Aufruf von MOVFM ein gesetztes Zero-Flag auf die Zahl 0 in FAC hinweist.

Laufzeitverhalten[Bearbeiten | Quelltext bearbeiten]

Die Laufzeit von MOVFM ist vom Wert der übertragenen Zahl unabhängig und beträgt üblicherweise 76 Systemtakte. Lediglich in dem Sonderfall, dass die Fließkommazahl auf einer Page-Grenze liegt, verlängert sich die Ausführungszeit auf bis zu 80 Systemtakte, da auf die Zahl mit Hilfe der Y-nachindizierten Zeropage-Adressierung zugegriffen wird.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Quellen[Bearbeiten | Quelltext bearbeiten]