Pakiet matematyczny
From Atariki
Pakiet matematyczny, zwany też pakietem procedur zmiennoprzecinkowych, to zawarty w systemie operacyjnym zestaw podprogramów służących do obliczeń na liczbach rzeczywistych. Zajmuje 2k pamięci ROM w obszarze od $D800 do $DFFF i jest intensywnie wykorzystywany przez interpreter Atari BASIC-a oraz wiele innych programów użytkowych (np. MAC/65, UmonXL itp., by już przemilczeć napisane w BASIC-u gry w rodzaju Crusade in Europe).
Pakiet matematyczny jest jedyną częścią systemu nie mającą własnej tablicy wektorów.
Format liczb FP
Dopuszczalny zakres liczb rzeczywistych dla obliczeń to od 10-98 do 1096, z dokładnością do 10 cyfr. Liczba kodowana jest na sześciu bajtach: pierwszy bajt zajmuje 1 bit znaku oraz siedem bitów wykładnika, pozostałe pięć bajtów to mantysa zapisana w kodzie BCD, po dwie cyfry na bajt, w kolejności od najstarszej do najmłodszej. Wykładnik jest to właściwy wykładnik liczby 100 zwiększony o 64.
Przykładowo, w ciągu liczb $41,$15,$36,$00,$00,$00 pierwszy bajt o wartości $41 to cecha. Najstarszy bit jest skasowany, jest to więc liczba dodatnia. Na pozostałych siedmiu bitach zapisany jest wykładnik liczby 100 zwiększony o 64 ($40). Wykładnik ten w danym przykładzie wynosi więc 1.
Dalej znajduje się mantysa zapisana w kodzie BCD. Punkt dziesiętny znajduje się po pierwszym jej bajcie, mamy tu więc zapisaną wartość 15,36 (piętnaście i trzydzieści sześć setnych). W połączeniu z obliczonym wyżej wykładnikiem liczby sto daje to 1001*15,36 = 1536.
Lista procedur
Adres | Etykieta | Opis |
Konwersja liczb | ||
$D800 | AFP | |
$D8E6 | FASC | |
$D9AA | IFP | |
$D9D2 | FPI | |
Przesłania itp. rejestrów FP | ||
$DA44 | ZFR0 | |
$DD89 | FLD0R | |
$DD8D | FLD0P | |
$DD98 | FLD1R | |
$DD9C | FLD1P | |
$DDA7 | FST0R | |
$DDAB | FST0P | |
$DDB6 | FMOV01 | |
$DD28 | FMOV12 | |
$DD34 | FMOV0E | |
Działania | ||
$DA60 | FSUB | |
$DA66 | FADD | |
$DADB | FMUL | |
$DB28 | FDIV | |
$DDC0 | EXP | |
$DDCC | EXP10 | |
$DECD | LOG | |
$DED! | LOG10 |
W rzeczywistości ROM pakietu zmiennoprzecinkowego zawiera więcej procedur, poza wymienionymi jednak nie są one specjalnie przydatne.