Pakiet matematyczny

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
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

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