Powrót do spisu treści

Rozdział 1

TABLICA SKOKÓW

    Skoro istnieje wiele wersji systemu operacyjnego, to jak w takim razie zapewniona jest pełna zgodność oprogramowania dla różnych modeli? Osiągnięte jest to dzięki tak zwanej tablicy skoków. Ma ona ustalone miejsce w pamięci (w każdej wersji takie samo). Dzięki temu odwołania do procedur, które korzystają z tej tabeli, zawsze trafią w odpowiednie miejsce, ponieważ zawiera ona aktualny adres procedury.

    Wyjaśnia to również, dlaczego niektóre programy wywagają użycia "Translatora". Po prostu autor programu nie korzystał z tablicy skoków, lecz odwoływał się bezpośrednio do procedur OS. "Translator" (lub mający identyczne działanie "XL Fix") odłącza pamięć ROM zawierającą system operacyjny i wpisuje w RAM znajdującą się w tym obszarze poprzednią wersję OS (z modeli 400/800).

    Tablica skoków w modelach XL/XE wygląda następująco:
            0100 ;JUMP TABle
            0110 ;
            0120 CASOPIN = $FCF7
            0130 CASRDBL = $FD8D
            0140 CIOINIT = $E4C1
            0150 CIOMAIN = $E4DF
            0160 DSKINIT = $C6A3
            0170 DSKINT = $C6B3
            0180 EXITVBL = $C28A
            0190 LINK = $E898
            0200 NEWDEVC = $EEBC
            0210 NMIENBL = $C00C
            0220 RESETCD = $C2C8
            0230 RESETWM = $C290
            0240 SETVBLV = $C272
            0250 SIOINIT = $E95C
            0260 SIOINT = $C933
            0270 SNDENBL = $EC17
            0280 SYSVBL = $C0E2
            0290 TESTROM = $F223
            0300 TESTST = $5000
            0310 UNLINK = $E915
            0320 ;
            0330     *=  $E450
            0340 ;
            0350     JMP DSKINIT
            0360     JMP DSKINT
            0370     JMP CIOMAIN
            0380     JMP SIOINT
            0390     JMP SETVBLV
            0400     JMP SYSVBL
            0410     JMP EXITVBL
            0420     JMP SIOINT
            0430     JMP SNDENBL
            0440     JMP NMIENBL
            0450     JMP CIOINIT
            0460     JMP TESTROM
            0470     JMP RESETWM
            0480     JMP RESETCD
            0490     JMP CASRDBL
            0500     JMP CASOPIN
            0510     JMP TESTROM
            0520     JMP TESTST
            0530     JMP NEWDEVC
            0540     JMP UNLINK
            0550     JMP LINK
    Poprzednie modele (400/800) nie zawierały w tablicy odwołań do procedur TESTROM, TESTST, NEWDEVC i LINK.

    Dwukrotne umieszczenie w tablicy skoku do procedury TESTROM nie jest pomyłką. Pierwszy skok jest przewidziany do obsługi niektórych błędów systemu i w przyszłości może ulec zmianie, gdy zostanie dodana nowa procedura.

    Wydruk tablicy skoków jest tak prosty, że nie wymaga właściwie żadnego dodatkowego komentarza. Można jedynie zauważyć, że ujęte są tu wszystkie procedury istotne dla pracy systemu komputerowego oraz wszystkich możliwych translatorów języków programowania.
Zientara Wojciech: Mapa pamięci Atari XL/XE. Podstawowe procedury systemu operacyjnego, SOETO, Warszawa, 1988.