Tajemnice ATARI

5 LINII


    Zgodnie z zapowiedzią z pierwszego numeru Tajemnic rozpoczynamy drukowanie najciekawszych spośród nadesłanych do nas programików mających nie więcej, niż pięć linii i jednocześnie przypominamy, że konkurs trwa nadal, a autorzy zamieszczanych programów otrzymują dodatkową nagrodę w postaci honorarium autorskiego w wysokości 100.000 zł. Listingi programów wraz z opisem prosimy przesyłać na adres redakcji.

   Trzy bardzo ciekawe "pięciolinijkowce" otrzymaliśmy od Jerzego Siwickiego z Koszalina. W tym numerze zamieszczamy dwa spośród nich.

   Pierwszy zatytułowany "Spowalniacz" powoduje zwolnienie pracy komputera uzyskane dzięki pętli opóźniającej wykonywanej. przez przerwanie synchronizacji pionowej (VBI).

1 RESTORE :FOR I=1700 TO 1709:READ A:P
OKE I,A:NEXT I
2 DATA 104,160,0,162,6,169,7,76,92,228
3 FOR I=0 TO 18:READ A:POKE 1536+I,A:N
EXT I
4 DATA 142,0,64,140,1,64,162,238,160,0
,200,208,253,232,208,248,76,98,228
5 POKE 206,50:A=USR(1700):POKE 54286,6
4
   Linie 1-2 wprowadzają kod maszynowy potrzebny do uruchomienia przerwania.
Linie 3-4 wprowadzają kod maszynowy programu przerwania.
Linia 5 uruchamia przerwanie.

   Drugi program to prosta gra zręcznościowa "Zbieracz". Wymaga ona użycia joysticka włączonego do portu 1. Celem gry jest zebranie wszystkich X-ów z planszy.
   Uwaga! Ze względu na to, że linie programu są długie, przedstawiamy dwa listingi. Pierwszy jest oryginalnym nadesłanym przez Pana Siwickiego, lecz z powodu długich linii trudno jest go przepisać (wiersz 4 daje się przepisać tylko pod warunkiem używania skrótów komend i wcześniejszego wykonania komendy POKE 82,0), natomiast drugi jest minimalnie zmienioną wersją oryginału, tak by dała się ona bez problemu wpisać do komputera.

  • WARIANT I

  • 1 POKE 82,0:GRAPHICS 0:POKE 752,2:FOR
    I=0 TO 19:? " ....................":NE
    XT I:A=0:LX=1:LY=1:P=0:T=0
    2 X=INT(RND(0)*20)+1:Y=INT(RND(0)*20)+
    1:LOCATE X,Y,C:IF C=46 THEN POSITION X
    ,Y:? "x":A=A+1:SOUND 0,A*10,10,10-A
    3 ON A<10 GOTO 2:X=1:Y=1:IF P=10 THEN
    POSITION 25,5:? "GRATULACJE!":POSITION
     25,7:? "CZAS:";T:POSITION 0,21:END 
    4 S=STICK(0):X=X+(S=7)-(S=11):X=X+(X<1
    )-(X>20):Y=Y+(S=13)-(S=14):Y=Y+(Y<0)-(
    Y>19):LOCATE X,Y,C:IF C=120 THEN P=P+1
    :? CHR$(253)
    5 POSITION X,Y:? "O":T=T+1:POSITION 30
    ,5:? 10-P;" ":POSITION LX,LY:? ".":LX=
    X:LY=Y:ON P=10 GOTO 3:GOTO 4
    
  • WARIANT II

  • 1 POKE 82,0:GRAPHICS 0:POKE 752,2:FOR
    I=0 TO 19:? " ....................":NE
    XT I:A=0:LX=1:LY=1:P=0:T=0
    2 X=INT(RND(0)*20)+1:Y=INT(RND(0)*20)+
    1:LOCATE X,Y,C:IF C=46 THEN POSITION X
    ,Y:? "x":A=A+1:SOUND 0,A*10,10,10-A
    3 ON A<10 GOTO 2:X=1:Y=1:IF P=10 THEN 
    POSITION 25,5:? "GRATULACJE!":POSITION
     25,7:? "CZAS:";T:POSITION 0,21:END 
    4 S=STICK(0):X=X+(S=7)-(S=11):X=X+(X<1
    )-(X>20):Y=Y+(S=13)-(S=14):Y=Y+(Y<0)-(
    Y>19)
    5 LOCATE X,Y,C:IF C=120 THEN P=P+1:? C
    HR$(253)
    6 POSITION X,Y:? "O":T=T+1:POSITION 30
    ,5:? 10-P;" ":POSITION LX,LY:? ".":LX=
    X:LY=Y:ON P=10 GOTO 3:GOTO 4
    
    Opis stosuje się do oryginału.
    Linia 1 tworzy pole gry i ustawia zmienne: A (ilość narysowanych X-ów). LX, LY (ostatnia pozycja zbieracza), P (ilość zebranych X-ów) i T (czas).
    Linia 2 rysuje 10 X-ów w przypadkowych miejscach pola gry.
    Linia 3 zawiera warunek powodujący, iż w chwili, gdy ilość zebranych X-ów wyniesie 10, na ekranie pojawią się: napis GRATULACJE i liczba określająca czas jaki upłynął od początku danej gry.
    Linia 4 mieści obsługę joysticka oraz zwiększa zmienną P w momencie "zebrania" X-a (jednocześnie z głośnika wydobywa się dźwięk jak przy naciśnięciu klawiszy CONTROL i 2).
    Linia 5 powoduje rysowanie kursora, zwiększanie czasu, wyświetlanie ilości zebranych X-ów, a w momencie zebrania wszystkich przejście do wiersza 3.

       Kolejny program, to "Znaki" autorstwa Adriana Ziętkiewicza z Poznania. Program po uruchomieniu zmienia generator znaków powodując, że wypisywane są one kursywą.

    1 POKE 106,156:GRAPHICS 0:FOR A=1536 T
    O 1663:READ B:POKE A,B:NEXT A:POKE 756
    ,156:X=USR(1536)
    2 DATA 104,160,4,162,0,189,0,224,74,15
    7,0,156,189,1,224,74,157,1,156,189,2,2
    24,74,157,2,156,189,3,224,157
    3 DATA 3,156,189,4,224,157,4,156,189,5
    ,224,24,42,157,5,156,189,6,224,24,42,1
    57,6,156,189,7,224,24,42,157,7
    4 DATA 156,138,24,105,8,170,224,0,208,
    190,136,192,0,208,1,96,238,7,6,238,11,
    6,238,14,6,238,18,6,238,21,6,238
    5 DATA 25,6,238,28,6,238,31,6,238,34,6
    ,238,37,6,238,40,6,238,45,6,238,48,6,2
    38,53,6,238,56,6,238,61,6,76,3,6
    

    Powrót na start | Powrót do spisu treści | Powrót na stronę główną

    Pixel 2001