ROUND
Anmerkung: Dieser Artikel beschreibt die numerische ROUND-Routine zum Runden im BASIC-ROM.
Name: | ROUND | ||||||
Beschreibung: | Fließkommaregister FAC runden | ||||||
Einsprungpunkt: | $BC1B / 48155 | ||||||
Übergebene Argumente: | |||||||
Sonstige: | FAC = Zu rundende Fließkommazahl A | ||||||
Rückgabe-Werte: | |||||||
Sonstige: | FAC = Gerundeter Wert von A |
Die ROM-Routine ROUND [1][2] rundet den Inhalt des Fließkommaregisters FAC, erhöht die Mantisse von FAC also um 1, falls durch eine vorausgegangene Rechenoperation das höchstwertige Bit des Rundungsbytes gesetzt wurde.
Nach dem Aufruf von ROUND enthält FAC den gerundeten Wert, während das Rundungsbyte an Adresse 112/$70 in jedem Fall auf 0 gesetzt wird. In sehr seltenen Fällen ist nach dem Runden der Inhalt von FAC nicht mehr als Fließkommazahl auf dem C64 darstellbar, in diesem Fall löst ROUND einen ?OVERFLOW ERROR aus.
Laufzeitverhalten[Bearbeiten | Quelltext bearbeiten]
Falls FAC = 0 oder falls das höchstwertige Bit des Rundungsbytes an Adresse 112/$70 gelöscht ist, so verändert das Runden den Wert von FAC nicht, und ROUND benötigt nur 18 bzw. 25 Systemtakte. Andernfalls liegt der Aufwand für das Erhöhen und eventuell für das Normalisieren der Mantisse zwischen 47 und 99 Systemtakten.
Ein Systemtakt entspricht auf dem Commodore 64 rund einer Mikrosekunde (μs).
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Disassembly von ROUND/$BC1B auf All About Your 64
- C64 BASIC & KERNAL ROM Disassembly von Michael Steil
- C64OS: Floating Point Math from BASIC