Pakiet matematyczny

From Atariki

Revision as of 09:30, 3 sty 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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

AdresEtykietaOpis
Konwersja liczb
$D800AFP
$D8E6FASC
$D9AAIFP
$D9D2FPI
Przesłania itp. rejestrów FP
$DA44ZFR0
$DD89FLD0R
$DD8DFLD0P
$DD98FLD1R
$DD9CFLD1P
$DDA7FST0R
$DDABFST0P
$DDB6FMOV01
$DD28FMOV12
$DD34FMOV0E
Działania
$DA60FSUB
$DA66FADD
$DADBFMUL
$DB28FDIV
$DDC0EXP
$DDCCEXP10
$DECDLOG
$DED!LOG10

W rzeczywistości ROM pakietu zmiennoprzecinkowego zawiera więcej procedur, poza wymienionymi jednak nie są one specjalnie przydatne.

Personal tools