Tajemnice ATARI

Piszemy DEMO


    W tym artykule zakończymy pisać pierwszą część demonstracji. Przede wszystkim brakuje nam jeszcze procedury definiującej polskie znaki, obrazka i muzyki oraz kilku dodatkowych procedur.

    Na początek zajmiemy się definiowaniem polskich znaków. Realizuje to procedura "POLSKIE.ASM":
Procedure Equ $9AD0

List_main Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000
Code_dsk  Equ %00100000

Charset1  Equ $E000
Chbas     Equ $02F4

DefZnak	  Equ $9AA8
Pomoc     Equ $0080
Pomoc2    Equ $0082
Zestaw    Equ $8C00

          Opt List_err+Code_dsk
          Org Procedure

          Ldx <Charset1
          Ldy >Charset1
          Stx Pomoc 
          Sty Pomoc+$01
          Ldx <Zestaw
          Ldy >Zestaw
          Stx Pomoc2 
          Sty Pomoc2+$01
          Ldx #$03
          Ldy #$00
L1        Lda (Pomoc),y
          Sta (Pomoc2),y
          Iny
          Bne L1
          Inc Pomoc+$01
          Inc Pomoc2+$01
          Dex
          Bpl L1
   
          Lda <Znaki
          Ldy >Znaki
          Ldx #$0A
          Jsr DefZnak

          Lda >Zestaw
          Sta Chbas
          Rts

Znaki     Dta B($03),B($00),B($55)
          Dta B($AA),B($FF),B($AA) 
          Dta B($55),B($00),B($00)

          Dta B($41),B($00),B($00) 
          Dta B($3C),B($06),B($3E)
          Dta B($66),B($3E),B($03)
          
          Dta B($43),B($0C),B($18)
          Dta B($3C),B($60),B($60)
          Dta B($60),B($3C),B($00)
          
          Dta B($45),B($00),B($00)
          Dta B($3C),B($66),B($7E)
          Dta B($60),B($3C),B($06)

          Dta B($4C),B($00),B($38) 
          Dta B($18),B($1C),B($38)
          Dta B($18),B($3C),B($00)

          Dta B($4E),B($0C),B($18)  
          Dta B($7C),B($66),B($66)
          Dta B($66),B($66),B($00)

          Dta B($4F),B($0C),B($18) 
          Dta B($3C),B($66),B($66) 
          Dta B($66),B($3C),B($00)

          Dta B($53),B($0C),B($18) 
          Dta B($3E),B($60),B($3C)
          Dta B($06),B($7C),B($00)
 
          Dta B($58),B($0C),B($18) 
          Dta B($7E),B($0C),B($18)
          Dta B($30),B($7E),B($00)

          Dta B($5A),B($18),B($00)  
          Dta B($7E),B($0C),B($18)
          Dta B($30),B($7E),B($00)

          End of file
    Przedefiniowany zestaw znaków umieszczamy w pamięci od adresu $8C00, czyli od etykiety Zestaw. W pętli L1 przepisywane są znaki ze standardowego zestawu Atari (Charset1 = $E000) do pamięci RAM. Następnie wywoływana jest procedura Defznak, która umieszcza zdefiniowane przez nas znaki w odpowiednich obszarach nowego zestawu znaków. W rejestrze X procesora umieszczamy Ilość znaków do przedefiniowania, natomiast w rejestrach A i Y odpowiednio młodszy i starszy bajt tablicy z danymi. W tablicy danych (etykieta Znaki) każdy znak zawiera się w dziewięciu bajtach. Pierwszy bajt to kod IOCODE znaku, a następne osiem to wygląd znaku. A tak wygląda procedura "DEFZNAK.ASM":
Procedure Equ $9AA8

List_mem  Equ %00000110 
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000

Pomoc     Equ $0080
Pomoc2    Equ $0082 
Znak      Equ $9A92

          Opt List_err+Code_dsk
          Org Procedure

          Sta Pomoc2
          Sty Pomoc2+$01
L1        Ldy #$00
          Lda (Pomoc2),y
          Jsr Znak
          Iny
L2        Lda (Pomoc2),y
          Dey
          Sta (Pomoc),y
          Iny
          Iny
          Cpy #$09
          Bne L2
          Clc
          Lda Pomoc2
          Adc #$09
          Sta Pomoc2
          Lda Pomoc2+$01
          Adc #$00
          Sta Pomoc2+$01
          Dex
          Bne L1
          Rts

          End of file
    Warto jeszcze dodać, że Defznak korzysta z zamieszczonej w poprzednim artykule procedury Znak. Przypominamy, że uprzednio procedura ta zawierała standardowy adres zestawu znaków i aby polskie znaki pokazały się na ekranie należy zadbać o to, by etykieta Zestaw w procedurze Znak miała również wartość $8C00.

    Wraz z polskimi znakami zdefiniowany został znak o kodzie IOCODE równym $03. Z tego właśnie znaku składały się "pojedyncze punkty" liter dużego płynącego napisu. Poniżej zamieszczamy dodatkową procedurę "ZNACZEK.ASM", która poprzez modyfikację tego znaku czyni duży płynący napis bardziej atrakcyjnym. Procedura "ZNACZEK.ASM" wywoływana będzie co 2/50 sekundy.
Procedure Equ $9E82

List_mem  Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000

Zestaw    Equ $8C00
 
          Opt List_err+Code_dsk
          Org Procedure

IntProc   Lda Zestaw+$18
          Pha
          Ldy #$00
L1        Lda Zestaw+$19,y
          Sta Zestaw+$18,y
          Iny
          Cpy #$07
          Bne L1
          Pla
          Sta Zestaw+$1F
          Rts

          End of file
    "RUCH.ASM" to kolejna procedura pierwszej części demonstracji:
Procedure Equ $9E98

List_mem  Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000

Dlist     Equ $9800
OHScrol   Equ $008A
 
          Opt List_err+Code_dsk
          Org Procedure

          Jmp Init_Ruch

IntProc   Ldx Licznik
          Lda Tab_poz,x
          Sta OHScrol
          Inx 
          Lda Tab_poz,x
          Sta Dlist+$2C
          Inx 
          Stx Licznik 
          Cpx #$C0 
          Bne L1 
          Ldx #$00 
          Stx Licznik 
L1        Rts

Init_Ruch Ldx #$5E
          Ldy #$00
L2        Lda Tab_poz+$01,x
          Sta Tab_poz+$61,y
          Lda Tab_poz,x
          Sta Tab_poz+$60,y
          Iny
          Iny
          Dex 
          Dex
          Bpl L2
          Lda #$00
          Sta Licznik
          Rts

Licznik   Dta B($00)

Tab_poz   Dta B($0F),B($00)
          Dta B($0F),B($00)
          Dta B($0F),B($00)
          Dta B($0E),B($00)
          Dta B($0E),B($00)
          Dta B($0E),B($00)
          Dta B($0D),B($00)
          Dta B($0D),B($00)
          Dta B($0C),B($00)
          Dta B($0C),B($00)
          Dta B($0B),B($00)
          Dta B($0B),B($00)
          Dta B($0A),B($00)
          Dta B($0A),B($00)
          Dta B($09),B($00)
          Dta B($08),B($00)
          Dta B($07),B($00)
          Dta B($06),B($00)
          Dta B($04),B($00)
          Dta B($02),B($00)
          Dta B($00),B($00)
          Dta B($0E),B($04)
          Dta B($0B),B($04)
          Dta B($08),B($04)
          Dta B($05),B($04)
          Dta B($03),B($04)
          Dta B($01),B($04)
          Dta B($0F),B($08)
          Dta B($0D),B($08)
          Dta B($0B),B($08)
          Dta B($09),B($08)
          Dta B($08),B($08)
          Dta B($07),B($08)
          Dta B($06),B($08)
          Dta B($05),B($08)
          Dta B($05),B($08)
          Dta B($05),B($08)
          Dta B($04),B($08)
          Dta B($04),B($08)
          Dta B($03),B($08)
          Dta B($03),B($08)
          Dta B($02),B($08)
          Dta B($01),B($08)
          Dta B($01),B($08)
          Dta B($01),B($08)
          Dta B($00),B($08)
          Dta B($00),B($08)
          Dta B($00),B($08)

          End of file
    Procedura przesuwa obrazek w poziomie, wykorzystując tablicę danych Tab_poz, która powielana jest w pamięci po uruchomieniu procedury (pętla L2). Każde dwa bajty tablicy określają nowe położenie obrazka. Pierwszy bajt to wartość HScrol'a dla obrazka, wpisywana do zmiennej OHScrol obsługiwanej przez przerwanie Display List. Drugi bajt to młodszy bajt adresu pamięci ekranu obrazka wpisywany bezpośrednio do Display List. Czynności te wykonywane są w głównej części procedury (etykieta IntProc). Dane zamieszczone w tablicy Tab_poz umożliwiają przesunięcie obrazka tylko w jedną stronę, dlatego też powielane są w odwrotnej kolejności, aby umożliwić przesuw w drugą stronę.

    "WSKAZNIK.ASM" jest już ostatnią procedurą potrzebną do tego, aby pierwsza część demonstracji działała w pełni poprawnie. Procedura ta również wywoływana jest co 1/50 sekundy:
Procedure Equ $9F95

List_mem  Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000


Music     Equ $7400
Start_pl  Equ $9000

          Opt List_err+Code_dsk
          Org Procedure

IntProc   Ldx #$1F
          Lda #$00
L1        Sta Start_pl+$5B0,x
          Dex
          Bpl L1

          Tay
          Tax
L2        Lda Music+$313,x
          And #$0F
          Sta Pomoc,y
          Inx
          Inx 
          Iny
          Cpy #$03
          Bne L2

          Ldy #$00
L3        Lda #$10
          Sec
          Sbc Pomoc,y
          Asl @
          Tax
L4        Lda Start_pl+$5B0,x
          Ora Tab,y
          Sta Start_pl+$5B0,x
          Inx
          Inx
          Cpx #$22
          Bne L4
          Iny
          Cpy #$03
          Bne L3
          Rts

Pomoc     Dta B($00),B($00),B($00)

Tab       Dta B($10),B($04),B($01)

          End of file
    Procedura umieszcza na ekranie wskaźnik głośności poszczególnych kanałów dźwiękowych. Wskaźnik jest to jeden obiekt grafiki PMG modyfikowany przez powyższą procedurę. Na początku procedury czyszczony jest obszar PMG, na którym pojawi się wskaźnik, następnie w pętli L2 przepisywane są trzy bajty z obszaru pamięci, gdzie umieszczona jest procedura odgrywająca muzykę do tablicy pomocniczej Pomoc. Muzyka została stworzona przy pomocy Future Composer'a i umieszczona w pamięci pod adresem $7400 (etykieta Music). Bajty, w których cztery młodsze bity odpowiadają za głośność poszczególnych kanałów Future Composer umieszcza zawsze w adresach Music+$313, Music+$315 i Music+$317. Ostatnie pętle L3 i L4 przygotowują wygląd wskaźnika.

    Na zakończenie podajemy dwie procedury "CZYSC.ASM" oraz "RUN.ASM". Pierwsza z nich czyści pamięć komputera i powinna być uruchomiona przed załadowaniem całej demonstracji. Procedura posiada własny adres inicjacji, dzięki któremu po załadowaniu jej z DOS'a sama się uruchomi i pozwoli systemowi na dalsze ładowanie zbioru, jeśli zbiór się jeszcze nie skończył. Oto tekst źródłowy tej procedury:
Program   Equ $0600

List_mem  Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000

Pomoc     Equ $F0
   
          Opt List_err+Code_dsk
          Org Program


          Ldy #$00
          Tya
          Ldx #$5A
          Sty Pomoc
          Stx Pomoc+$01
L1        Sta (Pomoc),y
          Iny
          Bne L1
          Inc Pomoc+$01
          Dex
          Bpl L1
          Rts

          Org $2E2
          Dta A($0600)

          End of File
    Ostatnia procedura "RUN.ASM" uruchamia całą demonstrację:
Procedure Equ $0600

List_mem  Equ %00000110
List_err  Equ %00000101
Code_mem  Equ %00010000 
Code_dsk  Equ %00100000

Atract    Equ $004D
Nmien     Equ $D40E 
Rtclok    Equ $0012
Skctl     Equ $D20F
VVblk     Equ $0222

BScroll   Equ $9DE6
Dli       Equ $9800
Dliv      Equ $9897
HScroll   Equ $9DA5
Music     Equ $7400
Players   Equ $9B5B
Polskie   Equ $9AD0
Ruch      Equ $9E98
Skoczek   Equ $A10C
VScroll   Equ $9D49
Wskaznik  Equ $9F95
Znaczek   Equ $9E82

          Opt List_err+Code_dsk
          Org Procedure

          Ldx Vvblk
          Ldy Vvblk+$01
          Stx Koniec+$01
          Sty Koniec+$02

          Jsr Polskie
          Jsr Dli
          Jsr Dliv
          Jsr Players
          Jsr Ruch
          Jsr BScroll
          Jsr VScroll
          Jsr HScroll

          Lda #$03
          Sta Skctl
          Ldx <Muzyka
          Ldy >Muzyka
          Lda #$C0
          Stx Vvblk
          Sty Vvblk+$01
          Sta Nmien

L1        Lda Rtclok+$02
L2        Cmp Rtclok+$02
          Beq L2
          Lda Licznik
          Eor #$01
          Sta Licznik
          Sta Atract
          Beq L3
          Jsr Players+$03
          Jsr Znaczek
          Jsr VScroll+$03
L3        Jsr HScroll+$03
          Jsr BScroll+$03
          Jsr Ruch+$03
          Jsr Wskaznik
          Jmp L1

Licznik   Dta B($00)

Muzyka    Jsr Music+$01 
Koniec    Jmp Koniec

          Org $02E0
         
          Dta A($0600)
 
          End of File
    Muzyka odtwarzana jest na przerwaniu Vblk (wektor przerwania = $222). Przerwanie to wymaga, by procedura użytkownika pracująca na nim wywoływała oryginalną procedurę zawartą w ROMie komputera. Nasza procedura przerwania obsługuje tylko muzykę (etykieta Muzyka). Na początku procedury "RUN.ASM" zapisywany jest wektor przerwania pod etykietę Koniec+$01. W ten sposób przerwanie wywołuje muzykę, a następnie wykonuje skok pod zapamiętany adres (a nie pod etykietę Koniec!). Po zapamiętaniu wektora przerwania inicjowane są wszystkie procedury, które tego wymagają. Następnie ustawiany jest wektor przerwania Vblk na etykietę Muzyka. Główna pętla L1 wywołuje część procedur co 1/50 sekundy, a dwie z nich: "PLAYER.ASM" i "ZNACZEK.ASM" - co 2/50 sekundy. Dodatkowo wpisanie wartości Licznika do rejestru Atract zapobiega włączeniu się trybu przyciągania uwagi (Atract = $4D).

    Na końcu procedury "RUN.ASM" umieszczony jest adres uruchomienia wpisywany do komórki $2E0, co pozwoli na automatyczne uruchomienie demonstracji.

    Poniżej zamieszczone są homogenizowane dane obrazka i muzyki, które należy przepisać i przy użyciu Zgrywusa zapisać na dysk pod nazwami, odpowiednio, "OBRAZEK.DAT" i "MUZYKA.OBJ". Oba zbiory posiadają własne nagłówki DOS'a.

    Aby uruchomić pierwszą część demostracji warto wczytać Command Processor'a i załadować następujące zbiory: CZYSC.OBJ. DLI.OBJ, DLIV.OBJ, PLAYER.OBJ, ZNAK.OBJ, BSCROLL.OBJ, HSCROLL.OBJ, VSCROLL.OBJ, DEFZNAK.OBJ, POLSKIE.OBJ, ZNACZEK.OBJ, WSKAZNIK.OBJ, RUCH.OBJ oraz TEKSTY.DAT (zbiór zawierający teksty do płynących napisów), OBRAZEK.DAT, MUZYKA.OBJ i program uruchamiający RUN.OBJ. Proponujemy jednak zapisać wszystkie zbiory na jeden dysk, przepisać poniższy program w BASIC'u i uruchomić go. Program połączy wszystkie zbiory w jedną całość, w zbiór "DEMO.COM". Zwracamy uwagę na to, że procedura "CZYSC.OBJ" dołączana jest jako pierwsza!

    Ciąg dalszy w następnym artykule.

10 REM 
20 REM PROGRAM LACZACY ZBIORY
30 REM 
40 COM NAZWA$(14)
50 OPEN #1,8,0,"D:DEMO.COM"
60 FOR L=0 TO 40:READ D
70 POKE 1536+L,D:NEXT L
80 FOR L=0 TO 16:READ NAZWA$:? NAZWA$
90 OPEN #2,4,0,NAZWA$
100 D=USR(1536,32,7,5000)
110 X=USR(1536,16,11,D)
120 CLOSE #2:NEXT L
130 CLOSE #1:END 
897 REM 
898 REM PROGRAM MASZYNOWY
899 REM 
900 DATA 104,104,104,170,104,104,157
910 DATA 66,3,104,157,73,3,104,157
920 DATA 72,3,169,0,157,68,3,169,100
930 DATA 157,69,3,32,86,228,189,72,3
940 DATA 133,212,189,73,3,133,213,96
997 REM 
998 REM NAZWY ZBIOROW
999 REM 
1000 DATA D:CZYSC.OBJ
1010 DATA D:DLI.OBJ
1020 DATA D:DLIV.OBJ
1030 DATA D:PLAYER.OBJ
1040 DATA D:ZNAK.OBJ
1050 DATA D:BSCROLL.OBJ
1060 DATA D:HSCROLL.OBJ
1070 DATA D:VSCROLL.OBJ
1080 DATA D:DEFZNAK.OBJ
1090 DATA D:POLSKIE.OBJ
1100 DATA D:ZNACZEK.OBJ
1110 DATA D:WSKAZNIK.OBJ
1120 DATA D:RUCH.OBJ
1130 DATA D:TEKSTY.DAT
1140 DATA D:OBRAZEK.DAT
1150 DATA D:MUZYKA.OBJ
1160 DATA D:RUN.OBJ

1000 REM /-------------------------\
1001 REM |      PISZEMY DEMO       |
1002 REM |    (dane do obrazka)    |
1003 REM |      Tomasz Bielak      |
1004 REM |     Rafal Bielecki      |
1005 REM \-------------------------/
1010 DATA ffff0c801f8001555555555555
1020 DATA 55555555555555555555555540
1030 DATA 3480478005aaaaaaaaaaaaaaaa
1040 DATA aaaaaaaaaaaaaaaaaaaa505c80
1050 DATA 6f8016ffffffffffffffffffff
1060 DATA ffffffffffffffff9484809780
1070 DATA 1baaaaaaaaaaaaaaaaaaaaaaaa
1080 DATA aaaaaaaaaaaae4ac80bf801b95
1090 DATA 55555555555555555555555555
1100 DATA 55555556e9d480e7806e940000
1110 DATA 000000f0000000000000000000
1120 DATA 0006b9fc800f816e5000000000
1130 DATA 00f00000000000000000000006
1140 DATA b9248137816e500000000000f0
1150 DATA 0555555555555555500005b94c
1160 DATA 815f816e400000000000f00005
1170 DATA 556aaaa55554000001b9748187
1180 DATA 816e400000000000f000000aaa
1190 DATA aaa9aa80000001b99c81af816e
1200 DATA 400000000000f00000003beafa
1210 DATA 8000000001b9c481d7816e4000
1220 DATA 00000000f000000000ffc00000
1230 DATA 000001b9ec81ff816e41555550
1240 DATA 0000f0000000000c0000000000
1250 DATA 01b9148227826e415555500003
1260 DATA c00000000000000000003001b9
1270 DATA 3c824f826e415555500003c000
1280 DATA 00000000000000003001b96482
1290 DATA 77826e42aaaaa00003c0000000
1300 DATA 0000000000002001b98c829f82
1310 DATA 6e4002a0000003c00000000000
1320 DATA 000000001001b9b482c7826e40
1330 DATA 02a0000003c000000000000000
1340 DATA 00002001b9dc82ef826e4003f0
1350 DATA 000003c0000000000000000000
1360 DATA a801b9048317836e4003f00000
1370 DATA 0fc0000000000000000000b801
1380 DATA b92c833f836e4003f000000f00
1390 DATA 000000000000000000b801b954
1400 DATA 8367836e4003f000000f000000
1410 DATA 00000000000002de01b97c838f
1420 DATA 836e4003f000010f0000000000
1430 DATA 0000000faf47f1b9a483b7836e
1440 DATA 4002a000000f00000000000050
1450 DATA 000002de01b9cc83df836e4002
1460 DATA a005413c055050505540001541
1470 DATA 54b801b9f48307846e4002a000
1480 DATA a2fc2828aaa8a0a2a0a00a0ab8
1490 DATA 01b91c842f846e4001500ff3fc
1500 DATA 3ffcfffcf0f0f0f00fffa801b9
1510 DATA 448457846e4001502082fc2800
1520 DATA a228a0a0a0a00a002001b96c84
1530 DATA 7f846e4001500547f005505014
1540 DATA 5051541541542001b99484a784
1550 DATA 6e4000000007f0000000000000
1560 DATA 000000002001b9bc84cf846e40
1570 DATA 0000000ff00000000000000000
1580 DATA 00001001b9e484f7846e400000
1590 DATA 0003b000000000000000000000
1600 DATA 1001b90c851f856e400000000f
1610 DATA b0000000000000000000002001
1620 DATA b9348547856e400c00000eb000
1630 DATA 0000000000000000003001b95c
1640 DATA 856f856e400c00003eb0005015
1650 DATA 540501550555003001b9848597
1660 DATA 856e400800003ab002a802802a
1670 DATA 828280a0003001b9ac85bf856e
1680 DATA 4008000039b00a0a0280a0a282
1690 DATA 80a0000001b9d485e7856e4008
1700 DATA 0000f8bc0f0f03c0f0f3ff00f0
1710 DATA 000001b9fc850f866e40080000
1720 DATA eabfcaaa0280aaa28a00a00000
1730 DATA 01b9248637866e402a000fffff
1740 DATA c50501405051414555000001b9
1750 DATA 4c865f866e41bfac0fc00fc000
1760 DATA 00000000000000000001b97486
1770 DATA 87866e402e003f000fff000000
1780 DATA 0000000000000001b99c86af86
1790 DATA 6e400c003c0003ffc000000000
1800 DATA 000000000001b9c486d7866e40
1810 DATA 0800fcf000fff0000000000000
1820 DATA 00000001b9ec86ff866e400403
1830 DATA f0f00039fc0000000000000000
1840 DATA 0001b9148727876e40000fc0f0
1850 DATA 000e7f00000000000000000001
1860 DATA b93c874f876e40003fc3c00003
1870 DATA 9fc0000000000000000001b964
1880 DATA 8777876e4000fc0fc00000e7f0
1890 DATA 000000000000000001b98c879f
1900 DATA 876e400ff00ec0000039fc0000
1910 DATA 00000000000001b9b487c7876e
1920 DATA 40ffc33e8000000e7f00000000
1930 DATA 0000000001b9dc87ef876e43ff
1940 DATA 0ffa800000039fc00000000000
1950 DATA 000001b9048817886e7ffc0fe8
1960 DATA 80000000e7f000000000000000
1970 DATA 01b92c883f886e7fc03fe80000
1980 DATA 000039fc003f3f3308151501b9
1990 DATA 548867886e7c033ee800000000
2000 DATA 0e7f000c333e22100101b97c88
2010 DATA 8f886e40cffea400000000039f
2020 DATA c00c333229150401b9a488b788
2030 DATA 6e43ffba541104111500e7c00c
2040 DATA 332221011001b9cc88df886e4f
2050 DATA eea95415111110003bc00c3e22
2060 DATA 11151501b9f48807896e4aaa95
2070 DATA 5011151416000fc00000000000
2080 DATA 0001b91c892f896e4169555011
2090 DATA 11111000000000f82094104001
2100 DATA b9448957896e40551450111111
2110 DATA 1a00000000c88840444001b96c
2120 DATA 897f896e401504500000000000
2130 DATA 000000e8a854545001b99489a7
2140 DATA 896e4004045000000000000000
2150 DATA 00a08440444001b9bc89cf896e
2160 DATA 4004045001415122a2f3000088
2170 DATA 8440445401b9e489f7896e4000
2180 DATA 0440011101a223030000000000
2190 DATA 000001b90c8a1f8a6e40000040
2200 DATA 0111522223f300000000000000
2210 DATA 01b9348a478a6e500000400111
2220 DATA 022220300000000000000005b9
2230 DATA 5c8a6f8a6e5000000001416222
2240 DATA a3f30000000000000005b9848a
2250 DATA 978a6e94000000000000000000
2260 DATA 0000000000000016b9ac8abf8a
2270 DATA 2b955555555555555555555555
2280 DATA 555555555556e9d48ae78a1baa
2290 DATA aaaaaaaaaaaaaaaaaaaaaaaaaa
2300 DATA aaaaaaaae4fc8a0f8b1affffff
2310 DATA ffffffffffffffffffffffffff
2320 DATA ffffa4248b378b06aaaaaaaaaa
2330 DATA aaaaaaaaaaaaaaaaaaaaaaaaaa
2340 DATA 904c8b5f8b0155555555555555
2350 DATA 555555555555555555555540

1000 REM /-------------------------\
1001 REM |      PISZEMY DEMO       |
1002 REM |        (muzyka)         |
1003 REM |      Tomasz Bielak      |
1004 REM |     Rafal Bielecki      |
1005 REM \-------------------------/
1010 DATA ffff0174c776201074a208bd10
1020 DATA 779d00d2ca10f7602c0e773027
1030 DATA 5035a900a20b9de176ca10fa8d
1040 DATA 0e77a202a9089d0b77ad00749d
1050 DATA de76ca10f2a9508d18774c4c74
1060 DATA a900a2079d1077ca10faa9808d
1070 DATA 0e7760ee0f77a202861ee88a0a
1080 DATA a8841fcabd0278851cbd057885
1090 DATA 1dbde476f0034c5475bcde76b1
1100 DATA 1cc940f00ec9fff018c9fed02d
1110 DATA 8d0e774c2f76c8b11c8d1877c8
1120 DATA 989dde764c6c74ad00749dde76
1130 DATA a9508d1877a9009de4769de776
1140 DATA 9de1764c6c74482980f00bfede
1150 DATA 7668290f9d0b7710b268a8b922
1160 DATA 77851cb98277851dbde7769de4
1170 DATA 76a9009d0277bce176b11c3007
1180 DATA 0a30254a4c15750a0aa8b90878
1190 DATA 9ded76b909789df376b90a789d
1200 DATA f676b90b789df976fee1764cd1
1210 DATA 744a291faabde277a61e9de476
1220 DATA 9de776fee1764cd1749dff7618
1230 DATA 7d0b77a8e000d00fb956768d10
1240 DATA 77b996768d12774c3b75b92876
1250 DATA 9dea76a41f991077a9009df076
1260 DATA fee176bce176b11cc9ffd008a9
1270 DATA 009de176fede76bded76a8b962
1280 DATA 778d6a75b9c2778d6b75a61ebc
1290 DATA f076b9ff70c9fff0271010a41f
1300 DATA 991177a900991077fef0764cf8
1310 DATA 75a41ffef0761df376991177e0
1320 DATA 00f006bdea76991077bdf676f0
1330 DATA 23ad0f772901d005bdf676d002
1340 DATA a9008db27518bdff7669027d0b
1350 DATA 77a8b92876a41f991077bdf976
1360 DATA f0343020bcfc76fefc76b91977
1370 DATA c91fd007a9009dfc76f0ec187d
1380 DATA ea76a41f9910774cf875bdea76
1390 DATA c9fff00bfeea76feea76a41f99
1400 DATA 1077bd0277f029bd0577f006de
1410 DATA 05774c2676bd0277100a18bdea
1420 DATA 767d08774c1e7638bdea76fd08
1430 DATA 779dea76a41f991077dee476ca
1440 DATA 30034c517460fff1e4d7cbc0b5
1450 DATA aaa1988f877f78726b655f5a55
1460 DATA 504b47433f3c3835322f2c2a27
1470 DATA 2523211f1d1c1a1716130f0700
1480 DATA 388c006ae86aef8008ae46e695
1490 DATA 41f6b06e30f6bb845222f4c8a0
1500 DATA 7a553414f5d8bda48d77604e38
1510 DATA 271506f7e8dbcfc3b8aca29a90
1520 DATA 887f78706a645e5752320a000b
1530 DATA 0a0a0908080707070606050505
1540 DATA 04040404030303030302020202
1550 DATA 02020201010101010101010101
1560 DATA 01011877b37c50000001010000
1570 DATA ffff1f3438526a83bac3f73465
1580 DATA 78858f99a6c8e5104879abc6d3
1590 DATA df0b2740597c7d7e7f80818283
1600 DATA 8485868788898a8b8c8d8e8f90
1610 DATA 9192939495969798999a9b9c9d
1620 DATA 9e9fa0a4a8b1bec3d1dfe9ebf4
1630 DATA f6f7f8f9fafbfcfdfeff000102
1640 DATA 030405060708090a7878787878
1650 DATA 7878787979797979797979797a
1660 DATA 7a7a7a7a7a7a7b7b7b7b7b7b7b
1670 DATA 7b7b7b7b7b7b7b7b7b7b7b7b7b
1680 DATA 7b7b7b7b7b7b7b7b7b7b7b7b7b
1690 DATA 7b7b7b7b7b7b7b7b7b7b7b7b7b
1700 DATA 7b7b7b7b7b7b7b7b7b7b7b7b7b
1710 DATA 7b7b7c7c7c7c7c7c7c7c7c7c7c
1720 DATA 070e151c232a31383f464d545b
1730 DATA 626970777e858c939aa1a8afb6
1740 DATA bdc4cbd2d9e00b31967c7c7c00
1750 DATA 800000010000000280000003c0
1760 DATA 000004c0000005a0000206a00c
1770 DATA 0007a0000008a0000509800000
1780 DATA 0a0000008a5f01ff8041224022
1790 DATA 22412240811e80224122402222
1800 DATA 412240811e8022ff8041224022
1810 DATA 22412240811e80224122402222
1820 DATA 89411e811eff80412240222241
1830 DATA 2240811e8022412240821d1d41
1840 DATA 891e811eff83430d84410d8340
1850 DATA 1014410b0d84430d418308080b
1860 DATA 450d4110841083430d41840d40
1870 DATA 831012410a430d41840d830606
1880 DATA 0a450d410b840bff8a59018541
1890 DATA 0d1012ff854114141243144012
1900 DATA 14411743174012144117438619
1910 DATA 41174319418512171917121240
1920 DATA 141242141041124310410d400f
1930 DATA 104112ff854114141243144012
1940 DATA 144217411740171e1c41191743
1950 DATA 194186174319408717190d1217
1960 DATA 190d1217190d1217190d121719
1970 DATA 0d1217190d1217190d121719ff
1980 DATA 83410d10841083104510400d0b
1990 DATA 410d10841083104310410b0843
2000 DATA 0d41840d830d430d840d83410b
2010 DATA 0d840d830d0d0b0d0bff814119
2020 DATA 8040222289412581401e802281
2030 DATA 4119ff8040222289412581401e
2040 DATA 8022ff80402222894125811eff
2050 DATA 82401d1d894125811eff854110
2060 DATA 451286411012851012ff854314
2070 DATA 4114431241100d080b450d8641
2080 DATA 0b430d85400b0d43104110430d
2090 DATA 410b0d0bff8543144114121714
2100 DATA 1214400d0f451086400d0f4510
2110 DATA 85411210124910ff8541141412
2120 DATA 43144012144117431740121441
2130 DATA 17431941174319411217191712
2140 DATA 1240141242141043121417ff86
2150 DATA 4219194119421b174719854014
2160 DATA 12411040124114440d87401719
2170 DATA 0d1217190d1217190d1217190d
2180 DATA 1217190d1217190d1217190d12
2190 DATA 1719ff83410d10841083100d43
2200 DATA 10400d0b410d10841083100d10
2210 DATA 0b08080d840d830d0b0d84430d
2220 DATA 83410b0d840d830d0d0b0d0bff
2230 DATA 83410d10841083104510400d06
2240 DATA 410d10841083104310410b080d
2250 DATA 0d840d830d0d840d830d840d83
2260 DATA 1210121012841283430bff8141
2270 DATA 198040222289412581401e8022
2280 DATA 891919191941194019810dff89
2290 DATA 40198222804120811c8222ff89
2300 DATA 401982228941201c8222ff8a43
2310 DATA 01841e88472585451442198617
2320 DATA 85431486178740171723171723
2330 DATA 17172317172386431417411c1b
2340 DATA 1714ff80451242191743121486
2350 DATA 4b2085421e1c411e431c171917
2360 DATA 19411c1bff8940168222804120
2370 DATA 89401682228019194119194019
2380 DATA 191919ff894016822280412089
2390 DATA 40168222801919411919401919
2400 DATA 1919ff8741232325251c1c1e1e
2410 DATA 202019191c1c1e1e171719191c
2420 DATA 1c12121414171710191c1effff
2430 DATA ffffffffffffffffffffffffff
2440 DATA ffffffffffffffffffffffffff
2450 DATA ffffffffffffffffff080300ff
2460 DATA 0d0300ff0303030203020100ff
2470 DATA 080808070605040303020201ff
2480 DATA 01010100ff0b08060504040303
2490 DATA 0302020201ff0b080605040403
2500 DATA 030302020201ff010304050403
2510 DATA 020100ff02ff0f0b0705030201
2520 DATA 00ff00ffffffffffffffffffff
2530 DATA ffffffffffffffffffffffff83
2540 DATA 04040404080804040404121315
2550 DATA 15151515151616151515151515
2560 DATA 16161919191a04041213ff8f01
2570 DATA 02010301020103010201030102
2580 DATA 01030102010301020103090a09
2590 DATA 0b090a090c090a090b090a090c
2600 DATA 090a090b090a090c090a090b09
2610 DATA 0a090c090a090b090a090c090a
2620 DATA 090b090a148817171b8f010201
2630 DATA 0301020103090a090b090a090c
2640 DATA 090a090b090a14ff8800000005
2650 DATA 06070d0e0d0f101110110d0e0d
2660 DATA 0f1818000506110d0e0d0fff


Tomasz Bielak
Rafał Bielecki



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

Pixel 2002