DODATKI
Dodatek A
Adresy procedur OS
$5000 - TESTST - początek testu komputera
$5003 - TESTINI - inicjowanie testu komputera
$BDA7 - SIN - sinus liczby FP
$BDB1 - COS - cosinus liczby FP
$BE77 - ATAN - arcus tangens liczby FP
$BEE5 - SQR - pierwiastek kwadratowy z liczby FP
$C000 - CHSRO1 - suma kontrolna pierwszej części ROM
$C00C - NMIENBL - inicjowanie przerwań MNI
$C018 - NMIFIRST - rozpoznanie przerwania NMI
$C02C - JMPIRQV - skok według wektora VIMIRQ
$C030 - SINDRYI - rozpoznanie przerwania IRQ
$C092 - BREAKIRQ - przerwanie klawisza BREAK
$C0CD - PLARTI - powrót z przerwania
$C0CE - RTI - powrót z przerwania
$C0CF - MASKTAB - tabela masek bitowych dla SINDRYI
$C0D7 - VECTAB - tabela wektorów przerwań dla SINDRYI
$C0DF - WAIT - oczekiwanie na RESET
$C0E2 - SYSVBL - systemowe przerwanie synchronizacji (VBLK)
$C24F - JMPTIM1 - skok według wektora TIMVEC1
$C252 - JMPTIM2 - skok według wektora TIMVEC2
$C255 - DECTIM - zmniejszenie licznika systemowego
$C272 - SETVBLV - ustawianie wektorów przerwania VBLK
$C28A - EXITVBL - zakończenie przerwania VBLK
$C290 - RESETWM - gorący start systemu
$C2AA - RESET - start systemu po naciśnięciu RESET
$C2C8 - RESETCD - zimny start systemu
$C3C1 - GOMEMTST - skok do testu komputera
$C423 - COLDCART - skok według wektora CARTRUN
$C426 - DOSVECC - skok według wektora DOSVEC
$C429 - INITCART - skok według wektora CARTINI
$C42C - CLCRTS - rozkazy CLC i RTS
$C42E - INIT31A - tabela wartości dla HATABS
$C43D - DERRMSG - meldunek błędu "BOOT ERROR"
$C448 - NAME - nazwa edytora "E:"
$C44B - INIT200 - tabela wartości dla wektorów OS
$C471 - CARTGO - sprawdzenie cartridge'a
$C4A9 - GRAMHI - sprawdzenie wielkości RAM
$C4C9 - NEWCART - sprawdzenie cartridge'a
$C4DA - IOPORTIN - inicjowanie portów układów I/O
$C535 - SYSINIT - inicjowanie systemu komputerowego
$C58B - BOOT - wstępny odczyt z dyskietki
$C5BB - BLOCK1 - wstępny odczyt przy zimnym starcie
$C629 - BLOAD - odczyt adresu inicjowania
$C63B - DOSINITC - skok według wektora DOSINI
$C63E - DRDERR - wyświetlenie meldunku błędu
$C642 - PUTLINE - wyświetlenie linii tekstu
$C659 - GETBLK - odczyt bloku danych z urządzenia
$C66E - CASBOOT - wstępny odczyt z kasety
$C6A0 - CASINITC - skok według wektora CASINI
$C6A3 - DSKINIT - inicjowanie obsługi stacji dysków
$C6B3 - DSKINT - główna procedura dyskowa
$C8FC - SWITROM - wywołanie testu komputera
$C90C - NEWINIT - inicjowanie nowych urządzeń
$C933 - SIOINT - procedura obsługi złącza szeregowego
$C96E - NEWIOREQ - przerwanie IRQ nowego urządzenia
$CA21 - BITMASK - maski bitowe dla NEWIOREQ
$CC00 - CHARSET2 - zestaw znaków międzynarodowych
$D803 - DEVID1 - kod identyfikacyjny nowego urządzenia
$D808 - DEVINT - przerwanie IRQ nowego urządzenia
$D80B - DEVID2 - kod identyfikacyjny nowego urządzenia
$D819 - DEVINIT - inicjowanie nowego urządzenia
$D800 - AFP - zamiana ciągu ASCII na liczbę FP
$D8E6 - FASC - zamiana liczby FP na ciąg ASCII
$D9AA - IFP - zamiana liczby całkowitej na FP
$D9D2 - FPI - zamiana liczby FP na całkowitą
$DA44 - ZFR0 - zerowanie FR0
$DA48 - AF1 - zerowanie wg rejestru X
$DA51 - STBV - zapis wektora bufora
$DA5A - ROLZ2 - przesunięcie w lewo ZTEMP2
$DA60 - FSUB - odejmowanie liczb FP
$DA66 - FADD - dodawanie liczb FP
$DADB - FMUL - mnożenie liczb FP
$DB28 - FDIV - dzielenie liczb FP
$DB94 - INBCN - zamiana znaku z bufora
$DB8D - INCIX - zwiększenie indeksu
$DBA1 - INBSS - przeszukiwanie bufora
$DBAF - ADBT - zamiana znaku ASCII na kod BCD
$DBBB - ASCSS - przeszukiwanie ciągu ASCII
$DBE7 - ROLFR2 - przesunięcie w lewo liczby w FR2
$DBEB - ROLFR0 - przesunięcie w lewo liczby w FR0
$DC00 - NFR0 - poprawienie formatu liczby FP
$DC3A - ADJ0 - adjustowanie liczby z FR0
$DC3E - ADJ1 - adjustowanie liczby z FR1
$DC62 - SHR0 - przesunięcie w prawo FR0
$DC70 - STALB - zapis znaku ASCII do bufora
$DC9D - BTAD - zamiana kodu BCD na znak ASCII
$DC9F - STLB - zapis do bufora
$DCA4 - LBSR - przeszukiwanie bufora
$DCB9 - IDEX - wydzielenie cyfry
$DCC1 - DECIBP - zmniejszenie licznika bufora
$DCCF - SGNEV - obliczenie znaku przy mnożeniu i dzieleniu
$DCE0 - MVARG - przeniesienie argumentów
$DD01 - ADD01 - dodanie rejestrów FR0 i FR1
$DD05 - ADD02 - dodanie rejestrów FR0 i FR2
$DD09 - ADDE1 - dodanie rejestrów FRE i FR1
$DD0F - ADDE2 - dodanie rejestrów FRE i FR2
$DD40 - PLYEVL - przeliczenie wielomianowe
$DD89 - FLD0R - zapis liczby FP do FR0 według X,Y
$DD8D - FLD0P - zapis liczby FP do FR0 według FLPTR
$DD98 - FLD1R - zapis liczby FP do FR1 według X,Y
$DD9C - FLD1P - zapis liczby FP do FR1 według FLPTR
$DDA7 - FST0R - zapis liczby FP z FR0 według X,Y
$DDAB - FST0P - zapis liczby FP z FR0 według FLPTR
$DDB6 - FMOV01 - przepisanie z FR0 do FR1
$DD34 - FMOV0E - przepisanie z FR0 do FRE
$DD28 - FMOV12 - przepisanie z FR1 do FR2
$DDC0 - EXP - potęgowanie o podstawie e
$DDCC - EXP10 - potęgowanie o podstawie 10
$DE4D - TP10 - tabela współczynników potęgowania
$DE95 - RSQT - iloraz różnicowy
$DECD - LOG - logarytm naturalny
$DED1 - LOG10 - logarytm dziesiętny
$DF66 - TLOG - tabela współczynników logarytmowania
$DFAE - TATAN - tabela współczynników funkcji arctg
$E000 - CHARSET1 - standardowy zestaw znaków
$E400 - EDTVEC - wektory obsługi edytora
$E410 - SCRVEC - wektory obsługi ekranu
$E420 - KBDVEC - wektory obsługi klawiatury
$E430 - PRTVEC - wektory obsługi drukarki
$E440 - CASVEC - wektory obsługi magnetofonu
$E450 - JMPTAB - tabela skoków
$E450 - JDSKINIT - skok do DSKINIT
$E453 - JDSKINT - skok do DSKINT
$E456 - JCIOMAIN - skok do CIOMAIN
$E465 - JSIOINIT - skok do SIOINIT
$E46B - JNMIEN - skok do NMIENBL
$E46E - JCIOINIT - skok do CIOINIT
$E47A - JCASRDBL - skok do CASRDBL
$E47D - JCASOPIN - skok do CASOPIN
$E483 - JTESTST - skok do TESTST
$E49B - NEWINITC - skok do NEWINIT
$E4C1 - CIOINIT - inicjowanie obsługi urządzeń
$E4DC - CIONOPN - kanał I/O nie otwarty
$E4DF - CIOMAIN - procedura obsługi urządzeń
$E739 - LINKSOM - procedura dołączania urządzeń
$E95C - SIOINIT - inicjowanie złącza szeregowego
$EAAD - ISRODN - przerwanie zapisu danych
$EAEC - ISRXD - przerwanie końca transmisji
$EB2E - ISRSIR - przerwanie odczytu danych
$EC11 - TIM1INT - przerwanie licznika 1
$EC17 - SNDENBL - zezwolenie na zapis danych
$EEBC - NEWDEVC - wywołanie nowego urządzenia
$EF6E - POWERON - inicjowanie edytora
$F223 - TESTROM - skok do SWITROM
$FB51 - KEYDEF - tabela definicji klawiszy
$FC11 - FKDEF - tabela definicji klawiszy funkcyjnych
$FC19 - CPUIRQ - przerwanie IRQ klawiatury
$FCC4 - FSDL - przerwanie NMI programu ANTIC-a
$FCDB - CASINIT - inicjowanie magnetofonu
$FCF7 - CASOPIN - początek odczytu z magnetofonu
$FD8D - CASRDBL - odczyt bloku z magnetofonu
$FE99 - PRINIT - inicjowanie drukarki
$FF73 - CKROM1 - sprawdzenie pierwszej części ROM
$FF92 - CKROM2 - sprawdzenie drugiej części ROM
$FFA9 - GETCKS - zliczanie sumy kontrolnej
$FFD7 - CKSTAB - tabela adresów bloków pamięci ROM
$FFF8 - CHSRO2 - suma kontrolna drugiej części ROM
$FFFA - NMIVEC - wektor procedury przerwania NMI
$FFFC - RESETVEC - wektor procedury przerwania RESET
$FFFE - IRQVEC - wektor procedury przerwania IRQ
Dodatek B
Rejestry OS w pamięci RAM
$00 - LNFLG - rejestr pomocniczy procedury RESET
$01 - NGFLAG - rejestr pomocniczy procedury RESET
$02 - CASINI - wektor inicjacji po odczycie z kasety
$04 - RAMLO - wektor RAM dla testu wielkości pamięci
$06 - TRAMSZ - rejestr tymczasowy dla testu wielkości RAM
$08 - WARMST - znacznik gorącego startu
$09 - BOOT? - znacznik odczytu wstępnego
$0A - DOSVEC - wektor startowy programu dyskowego
$0C - DOSINI - wektor inicjacji po odczycie z dyskietki
$0E - APPMHI - najwyższy adres RAM zajęty przez program
$10 - IRQENS - rejestr-cień IRQEN
$11 - IRQSTAT - rejestr-cień IRQST
$12 - RTCLOCK - zegar czasu rzeczywistego
$30 - STATUS - status aktualnej operacji SIO
$31 - CHKSUM - suma kontrolna dla operacji SIO
$32 - BUFR - adres bufora danych dla SIO
$34 - BUFEN - adres końca bufora danych dla SIO
$38 - BUFRFL - znacznik zapełnienia bufora SIO
$39 - RECVND - znacznik końca odczytu
$3A - XMTDON - znacznik końca transmisji
$3B - CHKSNT - znacznik nadania sumy kontrolnej
$3C - NOCKSM - znacznik braku sumy kontrolnej
$3E - GAPTYP - wskaźnik długości przerwy między blokami
$41 - IOSNDEN - znacznik dźwięku przy transmisji
$42 - CRITIC - znacznik krytycznych czasowo operacji I/O
$4D - ATRACT - licznik trybu przyciągania uwagi
$4E - ATRMSK - maska trybu przyciągania uwagi
$4F - COLRSH - maska zmiany kolorów
$52 - LMARGIN - lewy margines obrazu
$53 - RMARGIN - prawy margines obrazu
$60 - FKDEFP - wektor tabeli definicji klawiszy F1-F4
$62 - PALNTS - wskaźnik systemu TV
$6A - RAMTOP - liczba stron pamięci RAM
$79 - KEYDEFP - wektor tabeli definicji klawiszy
$8B - CKSUM - tymczasowy rejestr sumy kontrolnej
$9E - TMPREG - tymczasowy rejestr sumy kontrolnej
$D4 - FR0 - zerowy rejestr liczb FP
$DA - FRE - dodatkowy rejestr liczb FP
$E0 - FR1 - pierwszy rejestr liczb FP
$E6 - FR2 - drugi rejestr liczb FP
$EC - FRX - rejestr pomocniczy
$ED - EEXP - rejestr wartości wykładnika
$EE - NSIGN - rejestr znaku liczby
$EF - ESIGN - rejestr znaku wykładnika
$F0 - FCHRFLG - znacznik pierwszego znaku liczby
$F1 - DIGRT - liczba cyfr po przecinku
$F2 - CIX - indeks znaku w buforze
$F3 - INBUFP - adres bufora wejściowego
$F5 - ZTEMP1 - rejestr tymczasowy
$F7 - ZTEMP2 - rejestr tymczasowy
$F9 - ZTEMP3 - rejestr tymczasowy
$FC - FLPTR - adres liczby FP
$FE - FPTR2 - adres liczby FP
$0100 - STACK - stos mikroprocesora 6502
$0200 - DLIV - wektor przerwania programu ANTIC-a
$0202 - VPRCED - wektor przerwania portu A PIA
$0204 - VINTER - wektor przerwania portu B PIA
$0206 - VBREAK - wektor przerwania rozkazu BRK
$020A - VSERIN - wektor przerwania odczytu szeregowego
$020C - VSEROR - wektor przerwania zapisu szeregowego
$020E - VSEROC - wektor przerwania końca transmisji
$0210 - VTIMR1 - wektor przerwania licznika 1 POKEY-a
$0212 - VTIMR2 - wektor przerwania licznika 2 POKEY-a
$0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a
$0216 - VIMIRQ - główny wektor przerwania IRQ
$0218 - TIMCNT1 - pierwszy licznik systemu
$021A - TIMCNT2 - drugi licznik systemu
$021C - TIMCNT3 - trzeci licznik systemu
$021E - TIMCNT4 - czwarty licznik systemu
$0220 - TIMCNT5 - piąty licznik systemu
$0222 - VVBLKI - wektor natychmiastowego przerwania VBLK
$0224 - VVBLKD - wektor opóźnionego przerwania VBLK
$0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1
$0228 - TIMVEC2 - wektor przerwania licznika TIMCNT2
$022B - SRTIMER - zegar powtarzania klawiatury
$022D - INTEMP - rejestr przejściowy procedury SETVBLV
$022F - DMACTLS - rejestr-cień DMACTL
$0230 - DLPTRS - rejestr-cień DLPTR
$0232 - SKCTLS - rejestr-cień SKCTL
$0234 - LPENHS - rejestr-cień LPENH
$0235 - LPENVS - rejestr-cień LPENV
$0236 - VBRKKEY - wektor przerwania klawisza BREAK
$0238 - VPIRQ - wektor przerwania nowego urządzenia
$0240 - DFLAG - znacznik operacji dyskowych
$0241 - DSECCNT - licznik sektorów dla operacji dyskowych
$0242 - BOOTAD - adres ładowania przy stępnym odczycie
$0244 - COLDST - znacznik zimnego startu systemu
$0246 - DSKTIM - wartość Timeout dla stacji dysków
$0248 - PDVRS - rejestr-cień PDVREG
$0249 - PINTMSK - maska przerwań nowych urządzeń
$026B - CHSPTR - wektor nieużywanego zestawu znaków
$026C - VSFLAG - znacznik przesuwu pionowego obrazu
$026D - KEYDIS - znacznik zablokowania klawiatury
$026F - GTICTLS - rejestr-cień GTIACTL
$0270 - PADDL0 - rejestr-cień POT0
$0278 - JSTICK0 - położenie joysticka 0
$0279 - JSTICK1 - położenie joysticka 1
$027A - JSTICK2 - położenie joysticka 2
$027B - JSTICK3 - położenie joysticka 3
$027C - PTRIG0 - przycisk potencjometru 0
$027D - PTRIG1 - przycisk potencjometru 1
$0284 - TRIG0S - przycisk joysticka 0, rejestr-cień TRIG0
$0285 - TRIG1S - przycisk joysticka 1, rejestr-cień TRIG1
$0286 - TRIG2S - rejestr-cień TRIG2
$0287 - TRIG3S - rejestr-cień TRIG3
$028C - NEWIOP - tymczasowy wektor skoku przerwań IRQ
$02BE - SHFLOK - znacznik klawiszy SHIFT i START
$02C0 - COLPM0S - rejestr-cień COLPM0
$02C1 - COLPM1S - rejestr-cień COLPM1
$02C2 - COLPM2S - rejestr-cień COLPM2
$02C3 - COLPM3S - rejestr-cień COLPM3
$02C4 - COLPF0S - rejestr-cień COLPF0
$02C5 - COLPF1S - rejestr-cień COLPF1
$02C6 - COLPF2S - rejestr-cień COLPF2
$02C7 - COLPF3S - rejestr-cień COLPF3
$02C8 - COLBAKS - rejestr-cień COLBAK
$02D5 - DSCTLN - długość sektora dyskowego
$02D9 - KRPDEL - czas opóźnienia powtarzania klawisza
$02DA - KEYREP - częstotliwość powtarzania klawisza
$02DC - HLPFLG - znacznik klawisza HELP
$02DD - DMASAV - rejestr do przechowywania DMACTLS
$02E4 - RAMSIZ - liczba stron pamięci RAM
$02E5 - MEMTOP - adres górnej granicy wolnej pamięci RAM
$02E7 - MEMLO - adres dolnej granicy wolnej pamięci RAM
$02EE - CBAUD - prędkość transmisji z magnetofonu
$02F0 - CRSINH - znacznik widoczności kursora
$02F1 - KEYDEL - wartość opóźnienia odczytu klawisza
$02F2 - OLDKBC - kod poprzednio naciśniętego klawisza
$02F3 - CHACT - rejestr-cień CHRCTL
$02F4 - CHBAS - rejestr-cień CHBASE
$02FC - KBCODES - rejestr-cień KBCODE
$02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu
$0300 - DDEVIC - kod identyfikacyjny urządzenia
$0301 - DUNIT - numer identyfikacyjny urządzenia
$0302 - DCMND - bajt rozkazu dla urządzenia
$0304 - DBUFA - adres bufora danych
$030A - DAUX1 - rejestr pomocniczy dla operacji I/O
$030B - DAUX2 - rejestr pomocniczy dla operacji I/O
$0314 - PTIMOT - wartość Timeout dla drukarki
$0317 - TIMFLG - znacznik upłynięcia czasu Timeout
$031A - HATABS - tabela wektorów procedur obsługi
$033D - PUPBT1 - bajt kontrolny zimnego startu
$033E - PUPBT2 - bajt kontrolny zimnego startu
$033F - PUPBT3 - bajt kontrolny zimnego startu
$0340 - ICCHID - indeks wpisu urządzenia w HATABS
$0342 - ICCMD - kod rozkazu operacji I/O
$0344 - ICBUFA - adres bufora danych
$0346 - ICPUTB - adres procedury przesyłania danych
$0348 - ICBUFL - długość bufora danych
$034A - ICAX1 - rejestr pomocniczy dla operacji I/O
$03E9 - CKEY - znacznik klawisza START przy zimnym starcie
$03EA - CASSBT - znacznik odczytu z magnetofonu
$03EB - CARTCK - suma kontrolna cartridge'a
$03EC - DERRF - znacznik błędu przy otwieraniu edytora
$03F8 - BASICF - znacznik interpretera Atari Basic
$03FA - GINTLK - znacznik cartridge'a (kopia TRIG3)
$0400 - CASBUF - bufor magnetofonu
$057F - LBPR2 - prefiks bufora
$0580 - LBUFF - bufor wyjściowy operacji FP
$05E0 - PLYARG - argument przeliczania wielomianowego
$BFF0 - CART - blok informacji o cartridge'u
$BFFA - CARTRUN - adres uruchomienia cartridge'a
$BFFC - CARTINS - znacznik zainstalowania cartridge'a
$BFFD - CARTOPT - rejestr rodzaju cartridge'a
$BFFE - CARTINI - adres inicjowania cartridge'a
$D010 - TRIG0 - stan przycisku joysticka 0
$D011 - TRIG1 - stan przycisku joysticka 1
$D012 - COLPM0 - rejestr koloru gracza 0
$D013 - COLPM1 - rejestr koloru gracza 1
$D013 - TRIG3 - znacznik dołączenia cartridge'a
$D014 - COLPM2 - rejestr koloru gracza 2
$D014 - PAL - znacznik systemu TV
$D015 - COLPM3 - rejestr koloru gracza 3
$D016 - COLPF0 - rejestr koloru pola gry 0
$D017 - COLPF1 - rejestr koloru pola gry 1
$D018 - COLPF2 - rejestr koloru pola gry 2
$D019 - COLPF3 - rejestr koloru pola gry 3
$D01A - COLBAK - rejestr koloru tła
$D01B - GTIACTL - rejestr kontroli układu GTIA
$D01F - CONSOL - rejestr stanu klawiszy konsoli
$D1FF - PDVREG - rejestr wyboru nowego urządzenia
$D200 - POT0 - rejestr położenia potencjometru 0
$D205 - AUDC3 - rejestr kontroli dźwięku generatora 3
$D207 - AUDC4 - rejestr kontroli dźwięku generatora 4
$D208 - AUDCTL - rejestr kontroli generatorów dźwięku
$D209 - KBCODE - kod ostatnio naciśniętego klawisza
$D20A - SKSTRES - reset statusu złącza szeregowego
$D20B - POTGO - znacznik przetwornika analogowo-cyfrowego
$D20D - SEROUT - szeregowy rejestr wyjściowy
$D20D - SERIN - szeregowy rejestr wejściowy
$D20E - IRQST - status przerwań IRQ
$D20E - IRQEN - zezwolenia przerwań IRQ
$D20F - SKCTL - rejestr kontroli złącza szeregowego
$D20F - SKSTAT - rejestr statusu złącza szeregowego
$D300 - PORTA - port A układu PIA
$D301 - PORTB - port B układu PIA
$D302 - PACTL - rejestr kontroli portu A
$D303 - PBCTL - rejestr kontroli portu B
$D400 - DMACTL - rejestr kontroli dostępu do pamięci
$D401 - CHRCTL - rejestr kontroli wyświetlania znaków
$D402 - DLPTR - adres programu ANTIC-a
$D405 - VSCROL - znacznik pionowego przesuwu obrazu
$D409 - CHBASE - adres zestawu znaków
$D40C - LPENH - poziome położenie pióra świetlnego
$D40D - LPENV - pionowe położenie pióra świetlnego
$D40A - WSYNC - znacznik oczekiwania na synchronizację poziomą
$D40E - NMIEN - rejestr zezwoleń na przerwania NMI
$D40F - NMIST - rejestr statusu przerwań NMI
Dodatek C
Zmienne systemowe
BASICF
0 - interpreter Atari Basic dołączony
1 - interpreter Atari Basic odłączony
BOOT?
1 - udany odczyt ze stacji dysków
2 - udany odczyt z magnetofonu
3 - udany odczyt z magnetofonu i stacji dysków
CARTINS
0 - cartridge zainstalowany
nie 0 - brak cartridge'a w gnieździe
CARTOPT
bit 0 - wstępny odczyt z dyskietki (0 = zabroniony)
bit 2 - 1 = inicjowanie i uruchomienie cartridge'a
0 = tylko inicjowanie
bit 7 - rodzaj cartridge'a (1 = diagnostyczny)
pozostałe bity niewykorzystane
CASSBT
0 - wstępny odczyt ze stacji dysków
1 - wstępny odczyt z magnetofonu
CHRCTL/CHACT
bit 0 - tłumienie znaków (1 = znaki w inverse niewidoczne)
bit 1 - odwracanie znaków (0 = inverse nie działa)
bit 2 - odbicie znaków (1 = lustrzane odbicie znaków w pionie)
bity 3-7 - niewykorzystane
CKEY
0 - klawisz START nie był naciśnięty
0 - klawisz START był naciśnięty przy włączaniu zasilania
CONSOL
bit 0 - klawisz START (0 = wciśnięty)
bit 1 - klawisz SELECT (0 = wciśnięty)
bit 2 - klawisz OPTION (0 = wciśnięty)
CRITIC
0 - brak ograniczeń czasowych
nie 0 - krytyczna czasowo operacja I/O
CRSINH
0 - kursor widoczny
nie 0 - kursor niewidoczny
DMACTL/DMACTLS
bity 0-1 - szerokość obrazu na ekranie
00 = brak obrazu
01 = obraz wąski (192 punkty)
10 = obraz normalny (320 punktów)
11 = obraz szeroki (394 punkty)
bit 2 - DMA dla pocisków (1 = włączony)
bit 3 - DMA dla graczy (1 = włączony)
bit 4 - rozdzielczość P/MG (1 = jednowierszowa)
bit 5 - DMA dla programu ANTIC-a (1 = włączony)
bity 6-7 - niewykorzystane
GINTLK
0 - brak cartridge'a w gnieździe
1 - cartridge zainstalowany
GTIACTL/GTICTLS
bity 0-3 - priorytet graczy i pocisków
bit 4 - łączenie pocisków w 5 gracza (1 = włączona)
bit 5 - gracze wielokolorowi (1 = włączona)
bity 6-7 - dodatkowe tryby graficzne GTIA:
00 - GRAPHICS 8
01 - GRAPHICS 9
10 - GRAPHICS 10
11 - GRAPHICS 11
HLPFLG
$11 - wciśnięty klawisz HELP
$51 - wciśnięte klawisze HELP i SHIFT
$91 - wciśnięte klawisze HELP i CONTROL
$D1 - wciśnięte klawisze HELP, SHIFT i CONTROL
IRQEN/IRQENS
zezwolenia przerwań IRQ - 0 = zabronione
bit 0 - przerwanie TIMERa 1
bit 1 - przerwanie TIMERa 2
bit 2 - przerwanie TIMERa 4
bit 3 - przerwanie końca transmisji
bit 4 - przerwanie zapisu przez złącze szeregowe
bit 5 - przerwanie odczytu przez złącze szeregowe
bit 6 - przerwanie klawiatury
bit 7 - przerwanie klawisza BREAK
IRQST/IRQSTAT
status przerwań IRQ - 0 = wystąpiło
bit 0 - przerwanie TIMERa 1
bit 1 - przerwanie TIMERa 2
bit 2 - przerwanie TIMERa 4
bit 3 - przerwanie końca transmisji
bit 4 - przerwanie zapisu przez złącze szeregowe
bit 5 - przerwanie odczytu przez złącze szeregowe
bit 6 - przerwanie klawiatury
bit 7 - przerwanie klawisza BREAK
NMIEN
zezwolenie przerwań NMI - 0 = zabronione
bity 0-5 - niewykorzystane
bit 6 - przerwanie synchronizacji (VBLKI)
bit 7 - przerwanie programu ANTIC-a (DLI)
NMIST
status przerwań NMI - 1 = wystąpiło
bity 0-4 - niewykorzystane
bit 5 - przerwanie klawisza RESET
bit 6 - przerwanie synchronizacji (VBLKI)
bit 7 - przerwanie programu ANTIC-a (DLI)
SHFLOK
$00 - małe litery (naciśnięty CAPS)
$40 - duże litery (stan normalny)
$80 - znaki z CONTROL
SKCTL/SKCTLS
bit 0 - razem z bitem 1 resetuje POKEY
bit 1 - obsługa klawiatury
bit 2 - częstość przetwarzania A/C (0 = 20 ms, 1 = 128 µs)
bit 3 - przesyłanie dwutonowe (1 = włączone)
bity 4-6 - sterowanie szybkością transmisji
bit 7 - nadanie sygnału SPACE (1 = włączone)
SKSTAT
bit 0 - niewykorzystany (= 1)
bit 1 - przesyłanie danych (0 = trwa)
bit 2 - dowolny klawisz (0 = naciśnięty)
bit 3 - klawisz SHIFT (0 = naciśnięty)
bit 4 - kopia rejestru wejścia szeregowego
bit 5 - bufor klawiatury (0 = przepełniony)
bit 6 - bufor wejścia szeregowego (0 = przepełniony)
bit 7 - Framing Error (0 = wystąpił)
SSFLAG
$00 - dane są wprowadzane na ekran
$FF - zatrzymanie wyprowadzania danych
Dodatek D
Słownik terminów informatycznych
ANTIC
AlphaNumeric Television Interface Controller - drugi,
dodatkowy mikroprocesor, którego zasadniczym zadaniem jest
tworzenie obrazu. Układ specjalnie zaprojektowany dla
komputerów Atari.
ASCII
American Standard Code of Information Intercharge -
amerykański, standardowy kod wymiany informacji, kod
przypisujący liczbom od 0 do 127 znaczenie liter, liczb i
znaków kontrolnych, powszechnie używany w komputerach. Każda
firma stosuje jednak nieco zmodyfikowany kod, np. w Atari jest
używany ATASCII (ATari ASCII).
BCD
Binary Coded Decimal - liczba dziesiętna kodowana dwójkowo,
kod zapisu liczb dziesiętnych, w którym każdej cyfrze
odpowiadają cztery bity. W ten sposób w jednym bajcie można
zapisać dwie cyfry dziesiętne. Maksymalna wartość półbajtu w
kodzie BCD wynosi 9. Procesor 6502 po rozkazie SED pracuje w
trybie dziesiętnym, czyli na liczbach w kodzie BCD.
CIO
Central Input/Output - zespół procedur obsługujących
komunikację komputera z urządzeniami zewnętrznymi.
DCB
Device Control Block - blok kontroli urządzeń, obszar
pamięci RAM od $0300 do $030B wykorzystywany przez procedury
SIO do operacji wejścia/wyjścia.
DL
Display List - program ANTIC-a, program w kodzie maszynowym
ANTIC-a wskazujący mu sposób generowania obrazu. Program
ANTIC-a może wywoływać przerwania niemaskowalne zwane DLI
(Display List Interrupt).
DMA
Direct Memory Access - bezpośredni dostęp do pamięci,
sposób dostępu do pamięci komputera z pominięciem pośrednictwa
procesora. Oszczędza to czas pracy procesora i zwiększa
szybkość pracy systemu. W Atari DMA jest wykorzystywany przez
ANTIC (procesor obrazowy).
FP
Floating Point - liczby, operacje i procedury na liczbach
rzeczywistych czyli zmiennoprzecinkowych.
GTIA
Graphics Television Interface Adaptor - specjalizowany
układ scalony służący do tworzenia kolorów i obsługi grafiki
graczy i pocisków (Player/Missile Graphics).
I/O
Input/Output - wejście/wyjście, ogólna nazwa operacji
służących do komunikacji komputera z urządzeniami zewnętrznymi.
IOCB
Input/Output Control Block - blok kontroli I/O, 16-bajtowy
obszar pamięci RAM wykorzystywany przez procedury CIO do
operacji wejścia/wyjścia. Istnieje IOCB strony zerowej i osiem
IOCB w obszarze od $0340 do $3BF.
IRQ
Interrupt Request - żądanie przerwania, nazwą tą określa
się wszystkie przerwania maskowalne, to znaczy takie, które
mogą nie zostać przyjęte do realizacji przez procesor.
LSB
Least Significant Byte - mniej znaczący bajt, bajt adresu
lub danej zawierający dwie bardziej znaczące cyfry.
MSB=INT(ADR/$0100). Przy adresowaniu wskazuje numer strony
pamięci.
NMI
Non Maskable Interrupt - przerwanie niemaskowalne czyli
takie, które musi zostać wykonane przez procesor (nie może być
zignorowane).
nowe urządzenie
New Device - nazwa stosowana w systemie operacyjnym Atari
dla określenia urządzeń zewnętrznym przyłączanych do szyny
równoległej, które nie istniały jeszcze w czasie projektowania
systemu.
OS
Operating System - system operacyjny, zestw procedur
zapisanych przeważnie w pamięci ROM, które sterują pracą
komputera i jego współpracą z urządzeniami zewnętrznymi.
PIA
Peripheral Interface Adaptor - standardowy układ I/O typu
6520. Jego zadaniem jest w Atari obsługa portów joysticków i
zarządzanie pamięcią komputera.
POKEY
Potentiometr & Keyboard - specjalizowany układ scalony,
którego zadaniem jest obsługa klawiatury, potencjometrów oraz
komunikacji komputera z urządzeniami zewnętrznymi poprzez
złącze szeregowe.
port
Rejestr służący do komunikacji komputera z urządzeniami
peryferyjnymi, zwykle jest to rejestr specjalnego układu
scalonego znajdujący się w przestrzeni adresowej procesora.
Zwany jest także bramą.
rejestr
Zespół komórek (w Atari 1-6) pamięci RAM służących do
przechowywania różnych wartości niezbędnych do pracy OS lub
programu. Podstawowymi rodzajami rejestrów są wektory i
znaczniki (wskaźniki).
rejestr-cień
Specjalizowane układy scalone komputerów Atari mają własne
rejestry, które znajdują się w obszarze adresowym procesora.
Większość z nich posiada kopie w normalnych rejestrach RAM.
tzw. rejestry-cienie (shadow register). Zawartość
rejestrów-cieni jest przepisywana do rejestrów sprzętowych lub
odwrotnie podczas przerwania VBLK.
SIO
Serial Input/Output - zespół procedur obsługujących
komunikację z urządzeniami zewnętrznymi poprzez złącze
szeregowe.
strona
Część pamięci komputera o wielkości 256 bajtów. Starszy
bajt adresu wskazuje zawsze numer strony, a młodszy - komórkę
na stronie.
VBLK
Vertical Blank - synchronizacja pionowa, okres wygaszenia
strumienia elektronów tworzących obraz i przesunięcia go z
prawego, dolnego rogu ekranu do lewego, górnego. Podczas VBLK
wywoływane jest przerwanie VBLKI (VBLK Interrupt).
wektor
Rejestr zawierający adres procedury lub danych (wskazujący
adres). Wektor dwubajtowy zawiera pełny adres, a wektor
jednobajtowy tylko numer strony.
wskaźnik
to samo co znacznik.
znacznik
Rejestr, którego zawartość sygnalizuje stan jakiegoś
elementu systemu lub wariant operacji. Znacznik może być
traktowany jako całość, ale często poszczególne bity znacznika
mają odrębne znaczenie.
Dodatek E
Tabela przeliczeń DEC-BIN-HEX
Poniższa tabela może służyć do szybkiej zamiany liczb
zapisanych w systemach: szesnastkowym (HEX), dziesiętnym (DEC)
i dwójkowym (BIN). Dodatkowo dla ułatwienia orientacji w
stosowanym przez procesor 6502 systemie adresowania podana jest
wartość dziesiętna pomnożona przez 256 (strona).
HEX DEC strona BIN HEX DEC strona BIN
00 0 0 00000000 80 128 32768 10000000
01 1 256 00000001 81 129 33024 10000001
02 2 512 00000010 82 130 33280 10000010
03 3 768 00000011 83 131 33536 10000011
04 4 1024 00000100 84 132 33792 10000100
05 5 1280 00000101 85 133 34048 10000101
06 6 1536 00000110 86 134 34304 10000110
07 7 1792 00000111 87 135 34560 10000111
08 8 2048 00001000 88 136 34816 10001000
09 9 2304 00001001 89 137 35072 10001001
0A 10 2560 00001010 8A 138 35328 10001010
0B 11 2816 00001011 8B 139 35584 10001011
0C 12 3072 00001100 8C 140 35840 10001100
0D 13 3328 00001101 8D 141 36096 10001101
0E 14 3584 00001110 8E 142 36352 10001110
0F 15 3840 00001111 8F 143 36608 10001111
10 16 4096 00010000 90 144 36864 10010000
11 17 4352 00010001 91 145 37120 10010001
12 18 4608 00010010 92 146 37376 10010010
13 19 4864 00010011 93 147 37632 10010011
14 20 5120 00010100 94 148 37888 10010100
15 21 5376 00010101 95 149 38144 10010101
16 22 5632 00010110 96 150 38400 10010110
17 23 5888 00010111 97 151 38656 10010111
18 24 6144 00011000 98 152 38912 10011000
19 25 6400 00011001 99 153 39168 10011001
1A 26 6656 00011010 9A 154 39424 10011010
1B 27 6912 00011011 9B 155 39680 10011011
1C 28 7168 00011100 9C 156 39936 10011100
1D 29 7424 00011101 9D 157 40192 10011101
1E 30 7680 00011110 9E 158 40448 10011110
1F 31 7936 00011111 9F 159 40704 10011111
20 32 8192 00100000 A0 160 40960 10100000
21 33 8448 00100001 A1 161 41216 10100001
22 34 8704 00100010 A2 162 41472 10100010
23 35 8960 00100011 A3 163 41728 10100011
24 36 9216 00100100 A4 164 41984 10100100
25 37 9472 00100101 A5 165 42240 10100101
26 38 9728 00100110 A6 166 42496 10100110
27 39 9984 00100111 A7 167 42752 10100111
28 40 10240 00101000 A8 168 43008 10101000
29 41 10496 00101001 A9 169 43264 10101001
2A 42 10752 00101010 AA 170 43520 10101010
2B 43 11008 00101011 AB 171 43776 10101011
2C 44 11264 00101100 AC 172 44032 10101100
2D 45 11520 00101101 AD 173 44289 10101101
2E 46 11776 00101110 AE 174 44544 10101110
2F 47 12032 00101111 AF 175 44800 10101111
30 48 12288 00110000 B0 176 45056 10110000
31 49 12544 00110001 B1 177 45312 10110001
32 50 12800 00110010 B2 178 45568 10110010
33 51 13056 00110011 B3 179 45824 10110011
34 52 13312 00110100 B4 180 46080 10110100
35 53 13568 00110101 B5 181 46336 10110101
36 54 13824 00110110 B6 182 46592 10110110
37 55 14080 00110111 B7 183 46848 10110111
38 56 14336 00111000 B8 184 47104 10111000
39 57 14592 00111001 B9 185 47360 10111001
3A 58 14848 00111010 BA 186 47616 10111010
3B 59 15104 00111011 BB 187 47872 10111011
3C 60 15360 00111100 BC 188 48128 10111100
3D 61 15616 00111101 BD 189 48384 10111101
3E 62 15872 00111110 BE 190 48640 10111110
3F 63 16128 00111111 BF 191 48896 10111111
40 64 16384 01000000 C0 192 49152 11000000
41 65 16640 01000001 C1 193 49408 11000001
42 66 16896 01000010 C2 194 49664 11000010
43 67 17152 01000011 C3 195 49920 11000011
44 68 17408 01000100 C4 196 50176 11000100
45 69 17664 01000101 C5 197 50432 11000101
46 70 17920 01000110 C6 198 50688 11000110
47 71 18176 01000111 C7 199 50944 11000111
48 72 18432 01001000 C8 200 51200 11001000
49 73 18688 01001001 C9 201 51456 11001001
4A 74 18944 01001010 CA 202 51712 11001010
4B 75 19200 01001011 CB 203 51968 11001011
4C 76 19456 01001100 CC 204 52224 11001100
4D 77 19712 01001101 CD 205 52480 11001101
4E 78 19968 01001110 CE 206 52736 11001110
4F 79 20224 01001111 CF 207 52992 11001111
50 80 20480 01010000 D0 208 53248 11010000
51 81 20736 01010001 D1 209 53504 11010001
52 82 20992 01010010 D2 210 53760 11010010
53 83 21248 01010011 D3 211 54016 11010011
54 84 21504 01010100 D4 212 54272 11010100
55 85 21760 01010101 D5 213 54528 11010101
56 86 22016 01010110 D6 214 54784 11010110
57 87 22272 01010111 D7 215 55040 11010111
58 88 22528 01011000 D8 216 55296 11011000
59 89 22784 01011001 D9 217 55552 11011001
5A 90 23040 01011010 DA 218 55808 11011010
5B 91 23296 01011011 DB 219 56064 11011011
5C 92 23552 01011100 DC 220 56320 11011100
5D 93 23808 01011101 DD 221 56576 11011101
5E 94 24064 01011110 DE 222 56832 11011110
5F 95 24320 01011111 DF 223 57088 11011111
60 96 24576 01100000 E0 224 57344 11100000
61 97 24832 01100001 E1 225 57600 11100001
62 98 25088 01100010 E2 226 57856 11100010
63 99 25344 01100011 E3 227 58112 11100011
64 100 25600 01100100 E4 228 58368 11100100
65 101 25856 01100101 E5 229 58624 11100101
66 102 26112 01100110 E6 230 58880 11100110
67 103 26368 01100111 E7 231 59136 11100111
68 104 26624 01101000 E8 232 59392 11101000
69 105 26880 01101001 E9 233 59648 11101001
6A 106 27136 01101010 EA 234 59904 11101010
6B 107 27392 01101011 EB 235 60160 11101011
6C 108 27648 01101100 EC 236 60416 11101100
6D 109 27904 01101101 ED 237 60672 11101101
6E 110 28160 01101110 EE 238 60928 11101110
6F 111 28416 01101111 EF 239 61184 11101111
70 112 28672 01110000 F0 240 61440 11110000
71 113 28928 01110001 F1 241 61696 11110001
72 114 29184 01110010 F2 242 61952 11110010
73 115 29440 01110011 F3 243 62208 11110011
74 116 29696 01110100 F4 244 62464 11110100
75 117 29952 01110101 F5 245 62720 11110101
76 118 30208 01110110 F6 246 62976 11110110
77 119 30464 01110111 F7 247 63232 11110111
78 120 30720 01111000 F8 248 63488 11111000
79 121 30976 01111001 F9 249 63744 11111001
7A 122 31232 01111010 FA 250 64000 11111010
7B 123 31488 01111011 FB 251 64256 11111011
7C 124 31744 01111100 FC 252 64512 11111100
7D 125 32000 01111101 FD 253 64768 11111101
7E 126 32256 01111110 FE 254 65024 11111110
7F 127 32512 01111111 FF 255 65280 11111111
Dodatek F
Tabela różnic asemblerów
Asemblery dostępne na Atari XL/XE różnią się nieco między
sobą stosowanymi słowami kluczowymi. Poniższa tabela zawiera
różnice występujące w kilku najpopularniejszych asemblerach:
Macroassembler 65 (MAC/65), Atari Assembler/Editor (ASM/EDIT),
Atari Macroassembler (AMAC) i Synapse Assembler (SYNASM).
| MAC/65 | ASM/EDIT | AMAC | SYNASM |
+------------+------------+------------+------------+
| *= | *= | ORG | .OR |
| * | * | *O | * |
| = | = | = lub EQU | .EQ |
| .BYTE | .BYTE | DB | .AT |
| .SBYTE | .BYTE | DC | .HS |
| .DBYTE | .BYTE | brak | .AS |
| .WORD | .WORD | DW | .DA |
| *=*+ | *=*+ | DS | .BS |
Dodatek G
Bibliografia
1. Chadwick Ian: Mapping the Atari, COMPUTE! Books, USA, 1985.
2. Eichler Lutz, Grohmann Bernd: Atari 600XL/800XL Intern, Data
Becker, Dusseldorf, 1984.
3. Praca zbiorowa: De Re Atari. A guide to effective programing
400/800 Home Computers, USA, 1981.
4. Ruszczyc Jan: Asembler 6502, SOETO, Warszawa, 1987.
5. Zientara Wojciech: PEEK-POKE 2 (opracowanie), B.U.K. "GLAD",
Warszawa, 1987.
6. Zientara Wojciech: Mapa pamięci Atari XL/XE. Procedury
wejścia/wyjścia, SOETO, Warszawa, 1988.
7. Zientara Wojciech: Mapa pamięci Atari XL/XE. Dyskowe systemy
operacyjne, SOETO, Warszawa, 1988.
8. Zientara Wojciech: Mapa pamięci Atari XL/XE. Procedury
interpretera Basica, SOETO, Warszawa, 1988.
|