Pakiet matematyczny
From Atariki
Wersja z dnia 09:12, 3 sty 2006 KMK (Dyskusja | wkład) (→Format liczb FP) ← Previous diff |
Wersja z dnia 09:30, 3 sty 2006 KMK (Dyskusja | wkład) Next diff → |
||
Linia 12: | Linia 12: | ||
== Lista procedur == | == Lista procedur == | ||
+ | <table border = 1 cellpadding = 5> | ||
+ | <tr><td><b>Adres</b></td><td><b>Etykieta</b></td><td><b>Opis</b></td></tr> | ||
+ | <tr><td colspan = 3>Konwersja liczb</td></tr> | ||
+ | <tr><td>$D800</td><td>AFP</td><td> </td></tr> | ||
+ | <tr><td>$D8E6</td><td>FASC</td><td> </td></tr> | ||
+ | <tr><td>$D9AA</td><td>IFP</td><td> </td></tr> | ||
+ | <tr><td>$D9D2</td><td>FPI</td><td> </td></tr> | ||
+ | <tr><td colspan = 3>Przesłania itp. rejestrów FP</td></tr> | ||
+ | <tr><td>$DA44</td><td>ZFR0</td><td> </td></tr> | ||
+ | <tr><td>$DD89</td><td>FLD0R</td><td> </td></tr> | ||
+ | <tr><td>$DD8D</td><td>FLD0P</td><td> </td></tr> | ||
+ | <tr><td>$DD98</td><td>FLD1R</td><td> </td></tr> | ||
+ | <tr><td>$DD9C</td><td>FLD1P</td><td> </td></tr> | ||
+ | <tr><td>$DDA7</td><td>FST0R</td><td> </td></tr> | ||
+ | <tr><td>$DDAB</td><td>FST0P</td><td> </td></tr> | ||
+ | <tr><td>$DDB6</td><td>FMOV01</td><td> </td></tr> | ||
+ | <tr><td>$DD28</td><td>FMOV12</td><td> </td></tr> | ||
+ | <tr><td>$DD34</td><td>FMOV0E</td><td> </td></tr> | ||
+ | <tr><td colspan = 3>Działania</td></tr> | ||
+ | <tr><td>$DA60</td><td>FSUB</td><td> </td></tr> | ||
+ | <tr><td>$DA66</td><td>FADD</td><td> </td></tr> | ||
+ | <tr><td>$DADB</td><td>FMUL</td><td> </td></tr> | ||
+ | <tr><td>$DB28</td><td>FDIV</td><td> </td></tr> | ||
+ | <tr><td>$DDC0</td><td>EXP</td><td> </td></tr> | ||
+ | <tr><td>$DDCC</td><td>EXP10</td><td> </td></tr> | ||
+ | <tr><td>$DECD</td><td>LOG</td><td> </td></tr> | ||
+ | <tr><td>$DED!</td><td>LOG10</td><td> </td></tr> | ||
+ | </table> | ||
+ | W rzeczywistości ROM pakietu zmiennoprzecinkowego zawiera więcej procedur, poza wymienionymi jednak nie są one specjalnie przydatne. | ||
[[Kategoria:Programowanie Atari 8-bit]] | [[Kategoria:Programowanie Atari 8-bit]] |
Wersja z dnia 09:30, 3 sty 2006
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.