MAPA PAMIĘCIW kolejnych kilkudziesięciu komórkach pamięci naszego ATARI znaleźć można informacje szczególnie interesujące dla miłośników (lub może raczej dla twórców?) gier. Korzystanie z komputera w celach rozrywkowych możliwe jest dzięki temu, że potrafi on odbierać informacje od szczególnych urządzeń zewnętrznych, jakimi są manipulatory. Urządzenia te podłącza się do znajdujących się z boku komputera gniazd i już można siadać przed monitorem, aby kolejny raz strzelać do wszystkiego, co się rusza. Oprócz najbardziej znanego joysticka, do komputerów ATARI można podłączyć także tzw. paddle, nazwany po polsku wiosełkiem, choć może lepiej byłoby mówić po prostu potencjometr, bo ten manipulator działa właśnie na zasadzie potencjometru. Tworzy pomiędzy odpowiednimi bolcami w gnieździe połączenie o pewnej oporności. Ponieważ tę oporność można regulować, kręcąc gałką w lewo i w prawo, to łatwo jest na podstawie wskazań paddle sterować ruchomymi obiektami na ekranie. Oczywiście wartość oporności odczytuje się za pomocą pewnych komórek pamięci, podłączonych do układów wejścia/wyjścia, w których znajduje ona swoje odzwierciedlenie liczbowe.
Ta komórka zawiera wartość pomiędzy 0 a 228, zależną od położenia potencjometru. Do starych modeli ATARI, które były przeznaczone głównie do gier można było podłączyć do ośmiu wiosełek. Do komputerów serii XL/XE można przyłączyć jedynie cztery potencjometry, a i tak grupuje się je, używając po jednym gniazdku dla każdych dwóch z nich. Z tego wynika, że pierwsze gniazdko joysticka służy do podłączenia wiosełek 0 i 1. Poniżej znajduje się krótki program, który odczytuje wartość komórki PADDL0. Po podłączeniu potencjometru można obserwować, jak zmienia się wartość w tej komórce w zależności od położenia gałki paddle. Osoby, które nie mają tego urządzenia mogą obejrzeć program w działaniu, dotykając poślinionym palcem bolców w gnieździe joysticka. Ponieważ powierzchnia ludzkiej skóry także ma jakiś opór elektryczny, program odczyta zmieniającą się wartość wskazywaną przez komórkę PADDL0. Tego samego programu można użyć dla skontrolowania pozostałych potencjometrów - trzeba tylko zamiast 624 wpisać w wierszu 20 adres komórki, która odpowiada za interesujący nas potencjometr. 10 GRAPHICS 0:POKE 752,1 20 ? PEEK(624);" " 30 IF PEEK(764)<>255 THEN 50 40 ? CHR$(28);:GOTO 20 50 POKE 764,255:POKE 752,0:END
0 góra 1 dół 2 lewo 3 prawo Na rysunku zestawiono wartości zapisywane w komórce STICK0 w zależności od położenia joysticka. Oczywiście każdy ruch po skosie powoduje skasowanie dwóch spośród wymienionych bitów. I tak np. o ile w stanie spoczynku joystick "generuje" liczbę 15 (%1111), to poruszenie nim w lewo w górę daje wartość 10 (%1010), wynikającą ze skasowania bitów 0 i 2. Do skontrolowania położenia joysticka można także użyć programu przeznaczonego dla potencjometru (patrz powyżej). Wystarczy w tym celu zmienić w wierszu 20 liczbę 624 na 632 i już można sprawdzić, jak komputer "widzi" joystick. Gdyby zdarzyło się, że program pokazuje jakąś inną, niż pokazane na rysunku, wartość, to nie należy się zdumiewać. Napisałem wprawdzie o dziewięciu liczbach, ale napisałem także o czterech bitach. Jak łatwo policzyć, z czterech bitów można złożyć liczby od 0 do 15. Teoretycznie więc, w przypadku np. uszkodzenia joysticka, program odczytujący jego położenie może wykryć pewne, nazwijmy to niedozwolone, wartości. Z drugiej strony można sobie wyobrazić nieco inny joystick, np. taki, jakie stosuje się w modnych ostatnio maleńkich grach elektronicznych. Nie ma tam drążka, a jedynie przyciski symbolizujące cztery możliwe kierunki (osiem, jeśli weźmie się pod uwagę kierunki pośrednie). Nic nie stoi na przeszkodzie temu, by samodzielnie zrobić tego rodzaju manipulator. Można by pomyśleć także o czymś bardziej skomplikowanym, np. o specjalnej klawiaturze podłączanej do gniazda z boku komputera, której można by używać tylko jedną ręką... Przy okazji przypomniało mi się pewne wydarzenie. Otóż kiedyś siedzieliśmy z pewnym kolegą przed komputerem i bardzo się nudziliśmy. Mieliśmy ochotę zagrać w grę "Boulder Dash", lecz niestety nie mieliśmy joysticka. Po prostu pech! Problem jednak dał się rozwiązać. Napisaliśmy wtedy maleńki programik - coś w rodząju emulatora joysticka na klawiaturze. Troszkę oszukaliśmy komputer, ale zabawa była wspaniała. Nikomu nie mogę obiecać, że ten programik będzie działał z każdą grą (zazwyczaj wykonują one przed uruchomieniem gorący start, który zabija istniejące przerwania), lecz może się komuś przydać. Listing programu, zamieszczony na stronie 25, należy zasemblować na dysk lub kasetę przy pomocy QA, uzyskując w ten sposób samodzielny program zdatny do wykonania pod kontrolą DOS-u lub COSu.
Jak można zauważyć, jest to komórka związana z tym samym rejestrem, co joystick. Można więc, badając PTRIG0 i PTRIG1 zorientować się, czy drążek został wychylony w prawo lub w lewo. Niestety nie można w ten sposób dowiedzieć się niczego na temat ruchów joystickiem w pionie. Maleńki programik poniżej drukuje znak < po wychyleniu pierwszego joysticka w lewo, natomiast znak > po wychyleniu go w prawo. Oczywiście odpowiednia zmiana numerów komórek w wierszu 30 da nam informacje o drugim joysticku. 5 DIM LT$(1):LT$=CHR$(30) 10 GRAPHICS 0:POKE 752,1 20 ? CHR$(20);LT$; 30 LR=PEEK(637)-PEEK(636) 40 IF LR=1 THEN ? "<";LT$;:GOTO 30 50 IF LR=-1 THEN ? ">";LT$;:GOTO 30 60 IF PEEK(764)=255 THEN 20 70 POKE 764,255:POKE 752,0:END
Kilku następnych komórek pamięci używa do różnych celów system operacyjny.
Informacje zawarte w "Mapie pamięci" z TA 3/92 są nieścisłe. Tryby graficzne ANTIC-u 4, 5, 12, 14 mają swoje odpowiedniki w BASIC-owych trybach 12, 13, 14, 15. Za popełnioną pomyłkę bardzo przepraszam. Jarosław Syrylak
opt %010101 *----- system ------------------ dosvec equ $0a pokmsk equ $10 vtimr1 equ $0210 stick0 equ $0278 strig0 equ $0284 audf1 equ $d200 kbcode equ $d209 stimer equ $d209 irqen equ $d20e skstat equ $d20f frq equ 127 org $600 *----- main -------------------- main lda |