mirror of
https://github.com/Pecusx/no_internet.git
synced 2026-05-20 22:33:43 +02:00
1600 lines
63 KiB
Plaintext
1600 lines
63 KiB
Plaintext
mads 2.0.6 build 58 (28 Jan 17)
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm
|
|
2 icl 'atari.asm'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\atari.asm
|
|
1 /*
|
|
2 scr48 = %00111111 ;screen 48b
|
|
3 scr40 = %00111110 ;screen 40b
|
|
4 scr32 = %00111101 ;screen 32b
|
|
5 */
|
|
5
|
|
6
|
|
7 * ---------------------------------------------------------------------------------------------
|
|
8 * --- GTIA
|
|
9 * ---------------------------------------------------------------------------------------------
|
|
10 = D000 HPOSP0 = $D000 ; pozioma pozycja gracza 0 (Z)
|
|
11 = D001 HPOSP1 = $D001 ; pozioma pozycja gracza 1 (Z)
|
|
12 = D002 HPOSP2 = $D002 ; pozioma pozycja gracza 2 (Z)
|
|
13 = D003 HPOSP3 = $D003 ; pozioma pozycja gracza 3 (Z)
|
|
14 = D004 HPOSM0 = $D004 ; pozioma pozycja pocisku 0 (Z)
|
|
15 = D005 HPOSM1 = $D005 ; pozioma pozycja pocisku 1 (Z)
|
|
16 = D006 HPOSM2 = $D006 ; pozioma pozycja pocisku 2 (Z)
|
|
17 = D007 HPOSM3 = $D007 ; pozioma pozycja pocisku 3 (Z)
|
|
18 = D008 SIZEP0 = $D008 ; poziomy rozmiar gracza 0 (Z)
|
|
19 = D009 SIZEP1 = $D009 ; poziomy rozmiar gracza 1 (Z)
|
|
20 = D00A SIZEP2 = $D00A ; poziomy rozmiar gracza 2 (Z)
|
|
21 = D00B SIZEP3 = $D00B ; poziomy rozmiar gracza 3 (Z)
|
|
22 = D00C SIZEM = $D00C ; poziomy rozmiar pocisków (Z)
|
|
23 = D00D GRAFP0 = $D00D ; rejestr grafiki gracza 0 (Z)
|
|
24 = D00E GRAFP1 = $D00E ; rejestr grafiki gracza 1 (Z)
|
|
25 = D00F GRAFP2 = $D00F ; rejestr grafiki gracza 2 (Z)
|
|
26 = D010 GRAFP3 = $D010 ; rejestr grafiki gracza 3 (Z)
|
|
27 = D011 GRAFM = $D011 ; rejestr grafiki pocisków (Z)
|
|
28 = D012 COLPM0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z)
|
|
29 = D013 COLPM1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z)
|
|
30 = D014 COLPM2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z)
|
|
31 = D015 COLPM3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z)
|
|
32 = D016 COLPF0 = $D016 ; rejestr koloru pola gry 0 (Z)
|
|
33 = D017 COLPF1 = $D017 ; rejestr koloru pola gry 1 (Z)
|
|
34 = D018 COLPF2 = $D018 ; rejestr koloru pola gry 2 (Z)
|
|
35 = D019 COLPF3 = $D019 ; rejestr koloru pola gry 3 (Z)
|
|
36 = D01A COLBAK = $D01A ; rejestr koloru t³a (Z)
|
|
37
|
|
38 = D016 COLOR0 = colpf0
|
|
39 = D017 COLOR1 = colpf1
|
|
40 = D018 COLOR2 = colpf2
|
|
41 = D019 COLOR3 = colpf3
|
|
42
|
|
43 = D000 KOLM0PF = $D000 ; kolizja pocisku 0 z polem gry (O)
|
|
44 = D001 KOLM1PF = $D001 ; kolizja pocisku 1 z polem gry (O)
|
|
45 = D002 KOLM2PF = $D002 ; kolizja pocisku 2 z polem gry (O)
|
|
46 = D003 KOLM3PF = $D003 ; kolizja pocisku 3 z polem gry (O)
|
|
47 = D004 KOLP0PF = $D004 ; kolizja gracza 0 z polem gry (O)
|
|
48 = D005 KOLP1PF = $D005 ; kolizja gracza 1 z polem gry (O)
|
|
49 = D006 KOLP2PF = $D006 ; kolizja gracza 2 z polem gry (O)
|
|
50 = D007 KOLP3PF = $D007 ; kolizja gracza 3 z polem gry (O)
|
|
51 = D008 KOLM0P = $D008 ; kolizja pocisku 0 z graczem (O)
|
|
52 = D009 KOLM1P = $D009 ; kolizja pocisku 1 z graczem (O)
|
|
53 = D00A KOLM2P = $D00A ; kolizja pocisku 2 z graczem (O)
|
|
54 = D00B KOLM3P = $D00B ; kolizja pocisku 3 z graczem (O)
|
|
55 = D00C KOLP0P = $D00C ; kolizja gracza 0 z innym graczem (O)
|
|
56 = D00D KOLP1P = $D00D ; kolizja gracza 1 z innym graczem (O)
|
|
57 = D00E KOLP2P = $D00E ; kolizja gracza 2 z innym graczem (O)
|
|
58 = D00F KOLP3P = $D00F ; kolizja gracza 3 z innym graczem (O)
|
|
59 = D010 TRIG0 = $D010 ; stan przycisku joysticka 0 (O)
|
|
60 = D011 TRIG1 = $D011 ; stan przycisku joysticka 1 (O)
|
|
61 = D013 TRIG3 = $D013 ; znacznik do³¹czenia cartridge-a (O)
|
|
62 = D014 PAL = $D014 ; znacznik systemu TV (O)
|
|
63
|
|
64 = D01B GTICTL = $D01B ; rejestr kontroli uk³adu GTIA
|
|
65 = D01B GTIACTL = gtictl
|
|
66
|
|
67 = D01C VDELAY = $D01C ; licznik opóŸnienia pionowego P/MG
|
|
68 = D01D PMCNTL = $D01D ; rejestr kontroli graczy i pocisków
|
|
69 = D01E HITCLR = $D01E ; rejestr kasowania rejestrów kolizji
|
|
70 = D01F CONSOL = $D01F ; rejestr stanu klawiszy konsoli Start (bit 0), Select (bit 1), Option (bit 2)
|
|
71
|
|
72 * ---------------------------------------------------------------------------------------------
|
|
73 * --- POKEY
|
|
74 * ---------------------------------------------------------------------------------------------
|
|
75
|
|
76 = 0010 IRQENS = $0010 ; rejestr-cieñ IRQEN
|
|
77 = 0011 IRQSTAT = $0011 ; rejestr-cieñ IRQST
|
|
78
|
|
79 = D204 AUDF3 = $D204 ; czêstotliwoœæ pracy generatora 3 (Z)
|
|
80 = D208 AUDCTL = $D208 ; rejestr kontroli generatorów dŸwiêku (Z)
|
|
81 = D209 STIMER = $D209 ; rejestr zerowania liczników (Z)
|
|
82 = D209 KBCODE = $D209 ; kod ostatnio naciœniêtego klawisza (O)
|
|
83 = D20A SKSTRES = $D20A ; rejestr statusu z³¹cza szeregowego (Z)
|
|
84 = D20A RANDOM = $D20A ; rejestr liczby losowej (O)
|
|
85 = D20D SEROUT = $D20D ; szeregowy rejestr wyjœciowy (Z)
|
|
86 = D20D SERIN = $D20D ; szeregowy rejestr wejœciowy (O)
|
|
87 = D20E IRQEN = $D20E ; zezwolenie przerwañ IRQ (Z)
|
|
88 = D20E IRQST = $D20E ; status przerwañ IRQ (O)
|
|
89 = D20F SKCTL = $D20F ; rejestr kontroli z³¹cza szeregowego (Z)
|
|
90 = D20F SKSTAT = $D20F ; rejestr statusu z³¹cza szeregowego (O)
|
|
91
|
|
92 * ---------------------------------------------------------------------------------------------
|
|
93 * --- PIA
|
|
94 * ---------------------------------------------------------------------------------------------
|
|
95 = D300 PORTA = $D300 ; port A uk³adu PIA
|
|
96 = D301 PORTB = $D301 ; port B uk³adu PIA
|
|
97 = D302 PACTL = $D302 ; rejestr kontroli portu A
|
|
98 = D303 PBCTL = $D303 ; rejestr kontroli portu B
|
|
99
|
|
100 * ---------------------------------------------------------------------------------------------
|
|
101 * --- ANTIC
|
|
102 * ---------------------------------------------------------------------------------------------
|
|
103 = D400 DMACTL = $D400 ; rejestr kontroli dostêpu do pamiêci
|
|
104 = D401 CHRCTL = $D401 ; rejestr kontroli wyœwietlania znaków
|
|
105 = D402 DLPTR = $D402 ; adres programu ANTIC-a
|
|
106 = D404 HSCROL = $D404 ; znacznik poziomego przesuwu obrazu
|
|
107 = D405 VSCROL = $D405 ; znacznik pionowego przesuwu obrazu
|
|
108 = D407 PMBASE = $D407 ; adres pamiêci graczy i pocisków
|
|
109 = D409 CHBASE = $D409 ; adres zestawu znaków
|
|
110 = D40A WSYNC = $D40A ; znacznik oczekiwania na synchronizacjê poziom¹
|
|
111 = D40B VCOUNT = $D40B ; licznik linii obrazu
|
|
112 = D40C LPENH = $D40C ; poziome po³o¿enie pióra œwietlengo
|
|
113 = D40D LPENV = $D40D ; pionowe po³o¿enie pióra œwietlnego
|
|
114 = D40E NMIEN = $D40E ; rejestr zezwoleñ na przerwania NMI
|
|
115 = D40F NMIST = $D40F ; rejestr statusu przerwañ NMI
|
|
116
|
|
117 ;-------------------------------------
|
|
118 ;additional system variables
|
|
119 ;-------------------------------------
|
|
120 = 02C0 COLPM0S = $02C0 ;- - rejestr-cieñ COLPM0
|
|
121 = 02C1 COLPM1S = $02C1 ;- - rejestr-cieñ COLPM1
|
|
122 = 02C2 COLPM2S = $02C2 ;- - rejestr-cieñ COLPM2
|
|
123 = 02C3 COLPM3S = $02C3 ;- - rejestr-cieñ COLPM3
|
|
124 = 02C4 COLPF0S = $02C4 ;- - rejestr-cieñ COLPF0
|
|
125 = 02C5 COLPF1S = $02C5 ;- - rejestr-cieñ COLPF1
|
|
126 = 02C6 COLPF2S = $02C6 ;- - rejestr-cieñ COLPF2
|
|
127 = 02C7 COLPF3S = $02C7 ;- - rejestr-cieñ COLPF3
|
|
128
|
|
129 = 02C8 COLBAKS = $02C8
|
|
130 = 026F GTICTLS = $026F ;- - rejestr-cieñ GTIACTL
|
|
131
|
|
132 = 022F DMACTLS = $022F ;- - rejestr kontroli dostêpu do pamiêci - cieñ
|
|
133 = 0230 DLPTRS = $0230 ;- - adres programu ANTIC-a - cieñ
|
|
134 = 02F4 CHBAS = $02F4 ;- - rejestr-cieñ CHBASE
|
|
135 = 02FC KBCODES = $02FC ;- - rejestr-cieñ KBCODE
|
|
136
|
|
137 = E45C SETVBV = $E45C
|
|
138 = E462 XITVBV = $E462
|
|
139 = E45F SYSVBV = $E45F
|
|
140 = 0012 RTCLOK = $0012
|
|
141
|
|
142 = 02E5 MEMTOP = $02E5 ;- - adres górnej granicy wolnej pamiêci RAM
|
|
143 = 02E7 MEMLO = $02E7 ;- - adres dolnej granicy wolnej pamiêci RAM
|
|
144
|
|
145 = 0278 JSTICK0 = $0278 ;- - po³o¿enie joysticka 0
|
|
146 = 0279 JSTICK1 = $0279 ;- JSTICK1 - po³o¿enie joysticka 1
|
|
147 = 027A JSTICK2 = $027A ;- JSTICK2 - po³o¿enie joysticka 0
|
|
148 = 027B JSTICK3 = $027B ;- JSTICK3 - po³o¿enie joysticka 1
|
|
149 = 027C PTRIG0 = $027C ;- PTRIG0 - przycisk potencjometru 0
|
|
150 = 027D PTRIG1 = $027D ;- PTRIG1 - przycisk potencjometru 1
|
|
151 = 0284 TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, rejestr-cieñ TRIG0
|
|
152 = 0285 TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, rejestr-cieñ TRIG1
|
|
153 = 0286 TRIG2S = $0286 ;- TRIG2S - rejestr-cieñ TRIG0
|
|
154 = 0287 TRIG3S = $0287 ;- TRIG3S - rejestr-cieñ TRIG1
|
|
155
|
|
156
|
|
157 /*
|
|
158 Rejestry OS w pamiêci RAM
|
|
159
|
|
160 $08 - WARMST - znacznik gor¹cego startu
|
|
161 $0E - APPMHI - najwy¿szy adres RAM zajêty przez program
|
|
162 $10 - IRQENS - rejestr-cieñ IRQEN
|
|
163 $11 - IRQSTAT - rejestr-cieñ IRQST
|
|
164 $12 - RTCLOK - zegar czasu rzeczywistego
|
|
165 $15 - BUFADR - adres bufora dla operacji dyskowych
|
|
166 $17 - ICCOMT - rejestr przejœciowy kodu operacji I/O
|
|
167 $20 - ZIOCB - zerostronicowy blok kontroli I/O
|
|
168 $20 - ICHIDZ - indeks wpisu urz¹dzenia w HATABS
|
|
169 $21 - ICDNOZ - numer urz¹dzenia
|
|
170 $22 - ICCOMZ - kod operacji wejœcia/wyjœcia
|
|
171 $23 - ICSTZ - status operacji wejœcia/wyjœcia
|
|
172 $24 - ICBAZ - adres bufora danych dla operacji I/O
|
|
173 $26 - ICPTZ - adres procedury obs³ugi dla operacji
|
|
174 $28 - ICBLZ - d³ugoœæ bufora danych dla operacji I/O
|
|
175 $2A - ICAX1Z - rejestr pomocniczy ZIOCB
|
|
176 $2B - ICAX2Z - rejestr pomocniczy ZIOCB
|
|
177 $2C - ICAX3Z - rejestr pomocniczy ZIOCB
|
|
178 $2D - ICAX4Z - rejestr pomocniczy ZIOCB
|
|
179 $2E - ICAX5Z - rejestr pomocniczy ZIOCB
|
|
180 $2F - ICAX6Z - rejestr pomocniczy ZIOCB
|
|
181 $30 - STATUS - status aktualnej operacji SIO
|
|
182 $31 - CHKSUM - suma kontrolna dla operacji SIO
|
|
183 $32 - BUFR - adres bufora danych dla SIO
|
|
184 $34 - BUFEN - adres koñca bufora danych dla SIO
|
|
185 $36 - LTEMP - pomocniczy wektor odczytu listy liniowej
|
|
186 $38 - BUFRFL - znacznik zape³nienia bufora SIO
|
|
187 $39 - RECVND - znacznik koñca odczytu
|
|
188 $3A - XMTDON - znacznik koñca transmisji
|
|
189 $3B - CHKSNT - znacznik nadania sumy kontrolnej
|
|
190 $3C - NOCKSM - znacznik braku sumy kontrolnej
|
|
191 $3D - BPTR - licznik bufora magnetofonu
|
|
192 $3E - GAPTYP - znacznik d³ugoœci przerwy miêdzy blokami
|
|
193 $3F - FEOF - znacznik koñca zbioru
|
|
194 $40 - FREQ - licznik dŸwiêku przy otwarciu magnetofonu
|
|
195 $41 - IOSNDEN - znacznik dŸwiêku przy transmisji
|
|
196 $42 - CRITIC - znacznik krytycznych czasowo operacji I/O
|
|
197 $4A - ZCHAIN - rejestr nastêpstwa listy liniowej
|
|
198 $4C - DSTAT - status klawiatury i ekranu
|
|
199 $50 - TEMP - pomocniczy rejestr przejœciowy
|
|
200 $51 - HOLD1 - pomocniczy rejestr przejœciowy
|
|
201 $52 - LMARGIN - lewy margines obrazu
|
|
202 $53 - RMARGIN - prawy margines obrazu
|
|
203 $54 - ROWCRS - pionowa pozycja kursora
|
|
204 $55 - COLCRS - pozioma pozycja kursora
|
|
205 $57 - DINDEX - numer trybu graficznego OS
|
|
206 $58 - SAVMSC - adres pamiêci obrazu
|
|
207 $5A - OLDROW - poprzednia pionowa pozycja kursora
|
|
208 $5B - OLDCOL - poprzednia pozioma pozycja kursora
|
|
209 $5D - OLDCHR - poprzedni znak na ekranie
|
|
210 $5E - OLDADR - poprzedni adres znaku na ekranie
|
|
211 $60 - FKDEFP - wektor tabeli definicji klawiszy F1-F4
|
|
212 $62 - PALNTS - wskaŸnik systemu TV
|
|
213 $63 - LOGCOL - adres kursora w wierszu logicznym
|
|
214 $64 - ADRESS - rejestr adresowy dla procedur edytora
|
|
215 $66 - MLTTMP - pomocniczy rejestr przejœciowy
|
|
216 $68 - SAVADR - pomocniczy rejestr adresowy
|
|
217 $6A - RAMTOP - liczba stron pamiêci RAM
|
|
218 $6B - BUFCNT - licznik bufora edytora
|
|
219 $6C - BUFSTR - adres bufora dla edytora
|
|
220 $6E - BITMSK - maska bitowa do wyœwietlenia znaku
|
|
221 $6F - SHFAMT - liczba przesuniêæ punktu
|
|
222 $70 - ROWAC - aktualny wiersz przy rysowaniu
|
|
223 $72 - COLAC - aktualna kolumna przy rysowaniu
|
|
224 $74 - ENDPT - znacznik koñca rysowanej linii
|
|
225 $76 - DELTAR - przyrost pionowej pozycji kursora
|
|
226 $77 - DELTAC - przyrost poziomej pozycji kursora
|
|
227 $79 - KEYDEFP - wektor tabeli definicji klawiszy
|
|
228 $7B - SWPFLG - znacznik kursora w trybach z oknem
|
|
229 $7C - HOLDCH - przechowywanie wartoœci znaku
|
|
230 $7D - INSDAT - rejestr pomocniczy edytora
|
|
231 $7E - COUNTR - licznik pamiêci obrazu dla DOSCR i DRAW
|
|
232 $0100 - STACK - stos mikroprocesora 6502
|
|
233 $0200 - DLIV - wektor przerwania programu ANTIC-a
|
|
234 $0210 - VTIMR1 - wektor przerwania licznika 1 POKEY-a
|
|
235 $0212 - VTIMR2 - wektor przerwania licznika 2 POKEY-a
|
|
236 $0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a
|
|
237 $0218 - TIMCNT1 - pierwszy licznik systemu
|
|
238 $0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1
|
|
239 $022A - TIMFLG3 - znacznik wyzerowania licznika TIMCNT3
|
|
240 $022F - DMACTLS - rejestr-cieñ DMACTL
|
|
241 $0230 - DLPTRS - rejestr-cieñ DLPTR
|
|
242 $0232 - SKCTLS - rejestr-cieñ SKCTL
|
|
243 $0233 - LCOUNT - licznik odczytu dla nowego urz¹dzenia
|
|
244 $0234 - LPENHS - rejestr-cieñ LPENH
|
|
245 $0235 - LPENVS - rejestr-cieñ LPENV
|
|
246 $023A - CDEVIC - kod urz¹dzenia dla SIO
|
|
247 $023B - CCMND - kod operacji dla SIO
|
|
248 $023C - CAUX1 - pierwszy bajt pomocniczy dla SIO
|
|
249 $023D - CAUX2 - drugi bajt pomocniczy dla SIO
|
|
250 $023E - TEMP - tymczasowy rejestr odpowiedzi urz¹dzenia
|
|
251 $023F - ERRFLG - znacznik b³êdu operacji SIO
|
|
252 $0244 - COLDST - znacznik zimnego startu systemu
|
|
253 $0245 - RECLEN - d³ugoœæ rekordu z nowego urz¹dzenia
|
|
254 $0246 - DSKTIM - wartoœæ Timeout dla stacji dysków
|
|
255 $0247 - PDVMSK - maska obecnoœci nowych urz¹dzeñ
|
|
256 $0248 - PDVRS - rejestr-cieñ PDVREG
|
|
257 $024A - RELADR - adres procedury przemieszczalnej
|
|
258 $024C - PPTMPA - rejestr przechowania zawartoœci akumulatora
|
|
259 $024D - PPTMPX - rejestr przechowania zawartoœci rejestru X
|
|
260 $026B - CHSPTR - wektor nieu¿ywanego zestawu znaków
|
|
261 $026C - VSFLAG - znacznik przesuwu pionowego obrazu
|
|
262 $026E - FINE - znacznik delikatnego przesuwu obrazu
|
|
263 $026F - GTICTLS - rejestr-cieñ GTIACTL
|
|
264 $0270 - PADDL0 - rejestr-cieñ POT0
|
|
265 $0278 - JSTICK0 - po³o¿enie joysticka 0
|
|
266 $0279 - JSTICK1 - po³o¿enie joysticka 1
|
|
267 $027A - JSTICK2 - po³o¿enie joysticka 0
|
|
268 $027B - JSTICK3 - po³o¿enie joysticka 1
|
|
269 $027C - PTRIG0 - przycisk potencjometru 0
|
|
270 $027D - PTRIG1 - przycisk potencjometru 1
|
|
271 $0284 - TRIG0S - przycisk joysticka 0, rejestr-cieñ TRIG0
|
|
272 $0285 - TRIG1S - przycisk joysticka 1, rejestr-cieñ TRIG1
|
|
273 $0286 - TRIG2S - rejestr-cieñ TRIG0
|
|
274 $0287 - TRIG3S - rejestr-cieñ TRIG1
|
|
275 $0288 - HIBYTE - indeks operacji nowego urz¹dzenia
|
|
276 $0289 - WMODE - znacznik sposobu dostêpu do magnetofonu
|
|
277 $028A - BLIM - d³ugoœæ bufora magnetofonu
|
|
278 $028E - NEWADR - adres procedury nowego urz¹dzenia
|
|
279 $0290 - TXTROW - wiersz kursora w oknie tekstowym
|
|
280 $0291 - TXTCOL - kolumna kursora w oknie tekstowym
|
|
281 $0293 - TINDEX - tryb graficzny OS w oknie tekstowym
|
|
282 $0294 - TXTMSC - adres pamiêci okna tekstowego
|
|
283 $029C - CRETRY - liczba powtórzeñ rozkazu operacji
|
|
284 $029D - HOLD3 - pomocniczy rejestr przejœciowy
|
|
285 $029E - SUBTMP - pomocniczy rejestr przejœciowy
|
|
286 $02A0 - DMASK - maska punktów obrazu
|
|
287 $02A2 - ESCFLG - znacznik klawisza ESC
|
|
288 $02A3 - TABMAP - mapa pozycji tabulacji
|
|
289 $02B2 - LOGMAP - mapa linii logicznych
|
|
290 $02B6 - INVFLG - znacznik klawisza inverse video
|
|
291 $02B7 - FILFLG - znacznik wype³niania obrazu
|
|
292 $02B8 - TMPROW - tymczasowy rejestr pozycji kursora
|
|
293 $02B9 - TMPCOL - tymczasowy rejestr pozycji kursora
|
|
294 $02BB - SCRFLG - znacznik przesuwu obrazu
|
|
295 $02BC - HOLD4 - pomocniczy rejestr przejœciowy
|
|
296 $02BD - DRETRY - liczba powtórzeñ wywo³añ urz¹dzenia
|
|
297 $02BE - SHFLOK - znacznik klawiszy SHIFT i CONTROL
|
|
298 $02BF - BOTSCR - liczba wierszy tekstu
|
|
299 $02C0 - COLPM0S - rejestr-cieñ COLPM0
|
|
300 $02C1 - COLPM1S - rejestr-cieñ COLPM1
|
|
301 $02C2 - COLPM2S - rejestr-cieñ COLPM2
|
|
302 $02C3 - COLPM3S - rejestr-cieñ COLPM3
|
|
303 $02C4 - COLPF0S - rejestr-cieñ COLPF0
|
|
304 $02C5 - COLPF1S - rejestr-cieñ COLPF1 ;gr.8 letters
|
|
305 $02C6 - COLPF2S - rejestr-cieñ COLPF2 ;gr.8 background
|
|
306 $02C7 - COLPF3S - rejestr-cieñ COLPF3
|
|
307 $02C8 - COLBAKS - rejestr-cieñ COLBAK
|
|
308 $02C9 - RUNADR - adres procedury nowego urz¹dzenia
|
|
309 $02CB - HIUSED - adres koñcowy procedury nowego urz¹dzenia
|
|
310 $02CF - GBYTEA - adres procedury nowego urz¹dzenia
|
|
311 $02D1 - LOADAD - adres wczytywania z nowego urz¹dzenia
|
|
312 $02D3 - ZLOADA - pomocniczy rejestr adresu wczytywania
|
|
313 $02D5 - DSCTLN - d³ugoœæ sektora dyskowego
|
|
314 $02DB - NOCLIK - znacznik dŸwiêku klawiatury
|
|
315 $02DE - PBPNT - licznik bufora drukarki
|
|
316 $02DF - PBUFSZ - d³ugoœæ bufora drukarki
|
|
317 $02E5 - MEMTOP - adres górnej granicy wolnej pamiêci RAM
|
|
318 $02E7 - MEMLO - adres dolnej granicy wolnej pamiêci RAM
|
|
319 $02E9 - HNDLOD - znacznik relokowalnej procedury obs³ugi I/O
|
|
320 $02EA - DVSTAT - dodatkowy rejestr statusu urz¹dzenia
|
|
321 $02EC - DVTMOT - dodatkowy rejestr Timeout urz¹dzenia
|
|
322 $02ED - REVNUM - numer wersji nowego urz¹dzenia
|
|
323 $02EE - CBAUD - prêdkoœæ transmisji z magnetofonu
|
|
324 $02F0 - CRSINH - znacznik widocznoœci kursora
|
|
325 $02F3 - CHACT - rejestr-cieñ CHRCTL
|
|
326 $02F4 - CHBAS - rejestr-cieñ CHBASE
|
|
327 $02F5 - NEWROW - nowa pozycja pionowa kursora
|
|
328 $02F6 - NEWCOL - nowa pozycja pozioma kursora
|
|
329 $02F8 - ROWINC - zmiana pionowej pozycji kursora
|
|
330 $02F9 - COLINC - zmiana poziomej pozycji kursora
|
|
331 $02FA - CHAR - kod wewnêtrzny znaku
|
|
332 $02FB - ATACHR - kod ATASCII znaku
|
|
333 $02FC - KBCODES - rejestr-cieñ KBCODE
|
|
334 $02FD - FILDAT - numer koloru dla wype³niania
|
|
335 $02FE - DSPFLG - znacznik wyœwietlania znaków kontrolnych
|
|
336 $02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu
|
|
337 $0300 - DDEVIC - kod identyfikacyjny urz¹dzenia
|
|
338 $0301 - DUNIT - numer identyfikacyjny urz¹dzenia
|
|
339 $0302 - DCMND - bajt rozkazu dla urz¹dzenia
|
|
340 $0303 - DSTATS - status urz¹dzenia
|
|
341 $0304 - DBUFA - adres bufora danych
|
|
342 $0306 - DTIMLO - wartoœæ Timeout dla urz¹dzenia
|
|
343 $0308 - DBYT - d³ugoœæ bufora danych
|
|
344 $030A - DAUX1 - rejestr pomocniczy dla operacji I/O
|
|
345 $030B - DAUX2 - rejestr pomocniczy dla operacji I/O
|
|
346 $030C - INTIM1 - rejestr czasu przy odczycie z magnetofonu
|
|
347 $030F - CASFLG - znacznik operacji z magnetofonem
|
|
348 $0310 - INTIM2 - rejestr czasu przy odczycie z magnetofonu
|
|
349 $0312 - TEMP1 - pomocniczy rejestr przejœciowy
|
|
350 $0313 - TEMP2 - pomocniczy rejestr przejœciowy
|
|
351 $0314 - PTIMOT - wartoϾ Timeout dla drukarki
|
|
352 $0315 - TEMP3 - pomocniczy rejestr przejœciowy
|
|
353 $0316 - SAVIO - rejestr przejœciowy dla operacji SIO
|
|
354 $0317 - TIMFLG - znacznik up³yniêcia czasu Timeout
|
|
355 $0318 - STACKP - rejestr wskaŸnika stosu dla SIO
|
|
356 $0319 - TSTAT - przejœciowy rejestr statusu SIO
|
|
357 $031A - HATABS - tabela wektorów procedur obs³ugi
|
|
358 $0340 - IOCB0 - blok kontroli I/O numer 0
|
|
359 $0350 - IOCB1 - blok kontroli I/O numer 1
|
|
360 $0360 - IOCB2 - blok kontroli I/O numer 2
|
|
361 $0370 - IOCB3 - blok kontroli I/O numer 3
|
|
362 $0380 - IOCB4 - blok kontroli I/O numer 4
|
|
363 $0390 - IOCB5 - blok kontroli I/O numer 5
|
|
364 $03A0 - IOCB6 - blok kontroli I/O numer 6
|
|
365 $03B0 - IOCB7 - blok kontroli I/O numer 7
|
|
366 $0340 - ICCHID - indeks wpisu urz¹dzenia w HATABS
|
|
367 $0341 - ICDNO - numer urz¹dzenia
|
|
368 $0342 - ICCMD - kod rozkazu operacji I/O
|
|
369 $0343 - ICSTAT - status operacji I/O
|
|
370 $0344 - ICBUFA - adres bufora danych dla operacji I/O
|
|
371 $0346 - ICPUTB - adres procedury przesy³ania danych
|
|
372 $0348 - ICBUFL - d³ugoœæ bufora danych dla operacji I/O
|
|
373 $034A - ICAX1 - rejestr pomocniczy dla operacji I/O
|
|
374 $034B - ICAX2 - rejestr pomocniczy dla operacji I/O
|
|
375 $034C - ICAX3 - rejestr pomocniczy dla operacji I/O
|
|
376 $034D - ICAX4 - rejestr pomocniczy dla operacji I/O
|
|
377 $034E - ICAX5 - rejestr pomocniczy dla operacji I/O
|
|
378 $034F - ICAX6 - rejestr pomocniczy dla operacji I/O
|
|
379 $03C0 - PRNBUF - bufor drukarki
|
|
380 $03E8 - SUPERF - znacznik stosowany przy odczycie klawiatury
|
|
381 $03E9 - CKEY - znacznik klawisza START przy zimnym starcie
|
|
382 $03EC - DERRF - znacznik b³êdu przy otwieraniu edytora
|
|
383 $03FB - CHLINK - rejestr elementów listy liniowej
|
|
384 $03FD - CSCB - bajty kontroli szybkoœci magnetofonu
|
|
385 $03FF - CRCB - bajt d³ugoœci rekordu magnetofonowego
|
|
386 $0400 - CASBUF - bufor magnetofonu
|
|
387 $047F - CASBEN - koniec bufora magnetofonu
|
|
388 $D000 - HPOSP0 - pozioma pozycja gracza 0 (Z)
|
|
389 $D000 - KOLM0PF - kolizja pocisku 0 z polem gry (O)
|
|
390 $D001 - HPOSP1 - pozioma pozycja gracza 1 (Z)
|
|
391 $D001 - KOLM1PF - kolizja pocisku 1 z polem gry (O)
|
|
392 $D002 - HPOSP2 - pozioma pozycja gracza 2 (Z)
|
|
393 $D002 - KOLM2PF - kolizja pocisku 2 z polem gry (O)
|
|
394 $D003 - HPOSP3 - pozioma pozycja gracza 3 (Z)
|
|
395 $D003 - KOLM3PF - kolizja pocisku 3 z polem gry (O)
|
|
396 $D004 - HPOSM0 - pozioma pozycja pocisku 0 (Z)
|
|
397 $D004 - KOLP0PF - kolizja gracza 0 z polem gry (O)
|
|
398 $D005 - HPOSM1 - pozioma pozycja pocisku 1 (Z)
|
|
399 $D005 - KOLP1PF - kolizja gracza 1 z polem gry (O)
|
|
400 $D006 - HPOSM2 - pozioma pozycja pocisku 2 (Z)
|
|
401 $D006 - KOLP2PF - kolizja gracza 2 z polem gry (O)
|
|
402 $D007 - HPOSM3 - pozioma pozycja pocisku 3 (Z)
|
|
403 $D007 - KOLP3PF - kolizja gracza 3 z polem gry (O)
|
|
404 $D008 - SIZEP0 - poziomy rozmiar gracza 0 (Z)
|
|
405 $D008 - KOLM0P - kolizja pocisku 0 z graczem (O)
|
|
406 $D009 - SIZEP1 - poziomy rozmiar gracza 1 (Z)
|
|
407 $D009 - KOLM1P - kolizja pocisku 1 z graczem (O)
|
|
408 $D00A - SIZEP2 - poziomy rozmiar gracza 2 (Z)
|
|
409 $D00A - KOLM2P - kolizja pocisku 2 z graczem (O)
|
|
410 $D00B - SIZEP3 - poziomy rozmiar gracza 3 (Z)
|
|
411 $D00B - KOLM3P - kolizja pocisku 3 z graczem (O)
|
|
412 $D00C - SIZEM - poziomy rozmiar pocisków (Z)
|
|
413 $D00C - KOLP0P - kolizja gracza 0 z innym graczem (O)
|
|
414 $D00D - GRAFP0 - rejestr grafiki gracza 0 (Z)
|
|
415 $D00D - KOLP1P - kolizja gracza 1 z innym graczem (O)
|
|
416 $D00E - GRAFP1 - rejestr grafiki gracza 1 (Z)
|
|
417 $D00E - KOLP2P - kolizja gracza 2 z innym graczem (O)
|
|
418 $D00F - GRAFP2 - rejestr grafiki gracza 2 (Z)
|
|
419 $D00F - KOLP3P - kolizja gracza 3 z innym graczem (O)
|
|
420 $D010 - GRAFP3 - rejestr grafiki gracza 3 (Z)
|
|
421 $D010 - TRIG0 - stan przycisku joysticka 0 (O)
|
|
422 $D011 - GRAFM - rejestr grafiki pocisków (Z)
|
|
423 $D011 - TRIG1 - stan przycisku joysticka 1 (O)
|
|
424 $D012 - COLPM0 - rejestr koloru gracza i pocisku 0 (Z)
|
|
425 $D013 - COLPM1 - rejestr koloru gracza i pocisku 1 (Z)
|
|
426 $D013 - TRIG3 - znacznik do³¹czenia cartridge'a (O)
|
|
427 $D014 - COLPM2 - rejestr koloru gracza i pocisku 2 (Z)
|
|
428 $D014 - PAL - znacznik systemu TV (O)
|
|
429 $D015 - COLPM3 - rejestr koloru gracza i pocisku 3 (Z)
|
|
430 $D016 - COLPF0 - rejestr koloru pola gry 0 (Z)
|
|
431 $D017 - COLPF1 - rejestr koloru pola gry 1 (Z)
|
|
432 $D018 - COLPF2 - rejestr koloru pola gry 2 (Z)
|
|
433 $D019 - COLPF3 - rejestr koloru pola gry 3 (Z)
|
|
434 $D01A - COLBAK - rejestr koloru t³a (Z)
|
|
435 $D01B - GTIACTL - rejestr kontroli uk³adu GTIA
|
|
436 $D01C - VDELAY - licznik opóŸnienia pionowego P/MG
|
|
437 $D01D - PMCNTL - rejestr kontroli graczy i pocisków
|
|
438 $D01E - HITCLR - rejestr kasowania rejestrów kolizji
|
|
439 $D01F - CONSOL - rejestr stanu klawiszy konsoli
|
|
440 $D1FF - PDVREG - rejestr wyboru nowego urz¹dzenia
|
|
441 $D200 - AUDF1 - czêstotliwoœæ pracy generatora 1 (Z)
|
|
442 $D200 - POT0 - rejestr po³o¿enia potencjometru 0 (O)
|
|
443 $D201 - AUDC1 - rejestr kontroli dŸwiêku generatora 1 (Z)
|
|
444 $D201 - POT1 - rejestr po³o¿enia potencjometru 1 (O)
|
|
445 $D202 - AUDF2 - czêstotliwoœæ pracy generatora 2 (Z)
|
|
446 $D202 - POT2 - rejestr po³o¿enia potencjometru 2 (O)
|
|
447 $D203 - AUDC2 - rejestr kontroli dŸwiêku generatora 2 (Z)
|
|
448 $D203 - POT3 - rejestr po³o¿enia potencjometru 3 (O)
|
|
449 $D204 - AUDF3 - czêstotliwoœæ pracy generatora 3 (Z)
|
|
450 $D205 - AUDC3 - rejestr kontroli dŸwiêku generatora 3 (Z)
|
|
451 $D206 - AUDF4 - czêstotliwoœæ pracy generatora 4 (Z)
|
|
452 $D207 - AUDC4 - rejestr kontroli dŸwiêku generatora 4 (Z)
|
|
453 $D208 - AUDCTL - rejestr kontroli generatorów dŸwiêku (Z)
|
|
454 $D208 - POTST - status odczytu potencjometrów (O)
|
|
455 $D209 - STIMER - rejestr zerowania liczników (Z)
|
|
456 $D209 - KBCODE - kod ostatnio naciœniêtego klawisza (O)
|
|
457 $D20A - SKSTRES - reset statusu z³¹cza szeregowego (Z)
|
|
458 $D20A - RANDOM - rejestr liczby losowej (O)
|
|
459 $D20B - POTG0 - znacznik przetwornika analogowo-cyfrowego (Z)
|
|
460 $D20D - SEROUT - szeregowy rejestr wyjœciowy (Z)
|
|
461 $D20D - SERIN - szeregowy rejestr wejœciowy (O)
|
|
462 $D20E - IRQEN - zezwolenia przerwañ IRQ (Z)
|
|
463 $D20E - IRQST - status przerwañ IRQ (O)
|
|
464 $D20F - SKCTL - rejestr kontroli z³¹cza szeregowego (Z)
|
|
465 $D20F - SKSTAT - rejestr statusu z³¹cza szeregowego (O)
|
|
466 $D300 - PORTA - port A uk³adu PIA
|
|
467 $D301 - PORTB - port B uk³adu PIA
|
|
468 $D302 - PACTL - rejestr kontroli portu A
|
|
469 $D303 - PBCTL - rejestr kontroli portu B
|
|
470 $D400 - DMACTL - rejestr kontroli dostêpu do pamiêci
|
|
471 $D401 - CHRCTL - rejestr kontroli wyœwietlania znaków
|
|
472 $D402 - DLPTR - adres programu ANTIC-a
|
|
473 $D404 - HSCROL - znacznik poziomego przesuwu obrazu
|
|
474 $D405 - VSCROL - znacznik pionowego przesuwu obrazu
|
|
475 $D407 - PMBASE - adres pamiêci graczy i pocisków
|
|
476 $D409 - CHBASE - adres zestawu znaków
|
|
477 $D40A - WSYNC - znacznik oczekiwania na synchronizacjê poziom¹
|
|
478 $D40B - VCOUNT - licznik linii obrazu
|
|
479 $D40C - LPENH - poziome po³o¿enie pióra œwietlengo
|
|
480 $D40D - LPENV - pionowe po³o¿enie pióra œwietlnego
|
|
481 $D40E - NMIEN - rejestr zezwoleñ na przerwania NMI
|
|
482 $D40F - NMIST - rejestr statusu przerwañ NMI
|
|
483 */
|
|
483
|
|
3 icl 'macro.asm'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\macro.asm
|
|
1 ;-------------------------------------
|
|
2 .MACRO ROLW
|
|
3 ROL :1
|
|
4 ROL :1+1
|
|
5 .ENDM
|
|
6 ;-------------------------------------
|
|
7 .MACRO ASLW
|
|
8 ASL :1
|
|
9 ROL :1+1
|
|
10 .ENDM
|
|
11 ;-------------------------------------
|
|
12 .MACRO RORW
|
|
13 ROR :1+1
|
|
14 ROR :1
|
|
15 .ENDM
|
|
16 ;-------------------------------------
|
|
17 .MACRO LSRW
|
|
18 LSR :1+1
|
|
19 ROR :1
|
|
20 .ENDM
|
|
21
|
|
22 ;-------------------------------------
|
|
23 .MACRO VMAIN ; Initialises Vertical Blank Interrupts
|
|
24 ; (works only with system interrupts ON)
|
|
25
|
|
26 ; VMAIN #WORD interrupt.vector
|
|
27 ; interrupt.vector:
|
|
28 ; 0 - VIMIRQ
|
|
29 ; 1 - TIMCNT1
|
|
30 ; 2 - TIMCNT2
|
|
31 ; 3 - TIMCNT3
|
|
32 ; 4 - TIMCNT4
|
|
33 ; 5 - TIMCNT5
|
|
34 ; 6 - VVBLKI
|
|
35 ; 7 - VVBLKD
|
|
36 ; 8 - TIMVEC1
|
|
37 ; 9 - TIMVEC2
|
|
38 LDY # <:1
|
|
39 LDX # >:1
|
|
40 LDA #:2
|
|
41 JSR SETVBV
|
|
42 .ENDM
|
|
43 ;-------------------------------------
|
|
44 .MACRO VDLI
|
|
45 ; VDLI #WORD
|
|
46 ; Initialises Display List Interrupts
|
|
47 LDY # <:1
|
|
48 LDX # >:1
|
|
49 LDA #$C0
|
|
50 STY $0200
|
|
51 STX $0201
|
|
52 STA NMIEN
|
|
53 .ENDM
|
|
54 ;-------------------------------------
|
|
55 .MACRO halt
|
|
56 ?stop
|
|
57 .if :1
|
|
58 lda RANDOM
|
|
59 and #:1
|
|
60 sta COLBAK
|
|
61 .endif
|
|
62 jmp ?stop
|
|
63 .ENDM
|
|
64 ;-------------------------------------
|
|
65 .MACRO KEY
|
|
66 ; KEY
|
|
67 ; waits for releasing and pressing "any key"
|
|
68 ; with OS on autorepeat works
|
|
69 PHA
|
|
70 ?CK1 LDA SKSTAT
|
|
71 AND #$04
|
|
72 BEQ ?CK1
|
|
73 ?CK LDA SKSTAT
|
|
74 AND #$04
|
|
75 BNE ?CK
|
|
76 PLA
|
|
77 .ENDM
|
|
78 ;-------------------------------------
|
|
79 .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
|
80 ;uses: A
|
|
81 LDA VCOUNT
|
|
82 STA WSYNC
|
|
83 STA WSYNC
|
|
84 STA WSYNC
|
|
85 @ CMP VCOUNT
|
|
86 BNE @-
|
|
87 .ENDM
|
|
88 ;-------------------------------------
|
|
89 .macro negw
|
|
90 ; negate the given word (0-a)
|
|
91 ;-------------------------------------
|
|
92 sec
|
|
93 lda #$00
|
|
94 sbc :1
|
|
95 sta :1
|
|
96 lda #$00
|
|
97 sbc :1+1
|
|
98 sta :1+1
|
|
99 .endm
|
|
100 ;-------------------------------------
|
|
101 .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl)
|
|
102 ;usage: randomize floor ceiling AND
|
|
103 ;uses: A
|
|
104
|
|
105 ?rand
|
|
106 lda random
|
|
107 .if :3
|
|
108 and #:3
|
|
109 .endif
|
|
110 cmp #:1 ;floor
|
|
111 bcc ?rand
|
|
112 cmp #:2+1 ;ceiling
|
|
113 bcs ?rand
|
|
114 .endm
|
|
115 ;-------------------------------------
|
|
116 .macro phx
|
|
117 txa
|
|
118 pha
|
|
119 .endm
|
|
120 ;-------------------------------------
|
|
121 .macro phy
|
|
122 tya
|
|
123 pha
|
|
124 .endm
|
|
125 ;-------------------------------------
|
|
126 .macro plx
|
|
127 pla
|
|
128 tax
|
|
129 .endm
|
|
130 ;-------------------------------------
|
|
131 .macro ply
|
|
132 pla
|
|
133 tay
|
|
134 .endm
|
|
135 ;-------------------------------------
|
|
136 .macro pause ;waits :1 number (byte) of frames
|
|
137 ;uses: AX
|
|
138 .if :1 > 0
|
|
139 ldx #:1
|
|
140 loop wait
|
|
141 dex
|
|
142 bne loop
|
|
143 .else
|
|
144 wait
|
|
145 .endif
|
|
146 .ENDM
|
|
147
|
|
4
|
|
5 .zpvar tmp, tmp0, tmp1, tmp2, tmp3 .word
|
|
6 = 0080 sw = $80 ;physical screen width in bytes (distance between beginnings of consecutive lines)
|
|
7 = 0040 sw_log = $40 ;logical screen width
|
|
8 = 0080 sh = 128 ;screen height in lines
|
|
9 = 4000 screen = $4000
|
|
10 = 9000 pmgraph = $9000
|
|
11 = 0080 TMP
|
|
11 = 0082 TMP0
|
|
11 = 0084 TMP1
|
|
11 = 0086 TMP2
|
|
11 = 0088 TMP3
|
|
11 org $2000
|
|
12 dl
|
|
13 FFFF> 2000-2253> 70 70 + .byte $70,$70,$70
|
|
14 2003 dl_addrs ;start of lines
|
|
15 .REPT sh
|
|
16 .BYTE $5F
|
|
17 .WORD SCREEN+#*SW
|
|
18 .ENDR
|
|
18 .ENDR
|
|
Source: REPT
|
|
16 2003 5F .BYTE $5F
|
|
16 2004 00 40 .WORD SCREEN+#*SW
|
|
16 2006 5F .BYTE $5F
|
|
16 2007 80 40 .WORD SCREEN+#*SW
|
|
16 2009 5F .BYTE $5F
|
|
16 200A 00 41 .WORD SCREEN+#*SW
|
|
16 200C 5F .BYTE $5F
|
|
16 200D 80 41 .WORD SCREEN+#*SW
|
|
16 200F 5F .BYTE $5F
|
|
16 2010 00 42 .WORD SCREEN+#*SW
|
|
16 2012 5F .BYTE $5F
|
|
16 2013 80 42 .WORD SCREEN+#*SW
|
|
16 2015 5F .BYTE $5F
|
|
16 2016 00 43 .WORD SCREEN+#*SW
|
|
16 2018 5F .BYTE $5F
|
|
16 2019 80 43 .WORD SCREEN+#*SW
|
|
16 201B 5F .BYTE $5F
|
|
16 201C 00 44 .WORD SCREEN+#*SW
|
|
16 201E 5F .BYTE $5F
|
|
16 201F 80 44 .WORD SCREEN+#*SW
|
|
16 2021 5F .BYTE $5F
|
|
16 2022 00 45 .WORD SCREEN+#*SW
|
|
16 2024 5F .BYTE $5F
|
|
16 2025 80 45 .WORD SCREEN+#*SW
|
|
16 2027 5F .BYTE $5F
|
|
16 2028 00 46 .WORD SCREEN+#*SW
|
|
16 202A 5F .BYTE $5F
|
|
16 202B 80 46 .WORD SCREEN+#*SW
|
|
16 202D 5F .BYTE $5F
|
|
16 202E 00 47 .WORD SCREEN+#*SW
|
|
16 2030 5F .BYTE $5F
|
|
16 2031 80 47 .WORD SCREEN+#*SW
|
|
16 2033 5F .BYTE $5F
|
|
16 2034 00 48 .WORD SCREEN+#*SW
|
|
16 2036 5F .BYTE $5F
|
|
16 2037 80 48 .WORD SCREEN+#*SW
|
|
16 2039 5F .BYTE $5F
|
|
16 203A 00 49 .WORD SCREEN+#*SW
|
|
16 203C 5F .BYTE $5F
|
|
16 203D 80 49 .WORD SCREEN+#*SW
|
|
16 203F 5F .BYTE $5F
|
|
16 2040 00 4A .WORD SCREEN+#*SW
|
|
16 2042 5F .BYTE $5F
|
|
16 2043 80 4A .WORD SCREEN+#*SW
|
|
16 2045 5F .BYTE $5F
|
|
16 2046 00 4B .WORD SCREEN+#*SW
|
|
16 2048 5F .BYTE $5F
|
|
16 2049 80 4B .WORD SCREEN+#*SW
|
|
16 204B 5F .BYTE $5F
|
|
16 204C 00 4C .WORD SCREEN+#*SW
|
|
16 204E 5F .BYTE $5F
|
|
16 204F 80 4C .WORD SCREEN+#*SW
|
|
16 2051 5F .BYTE $5F
|
|
16 2052 00 4D .WORD SCREEN+#*SW
|
|
16 2054 5F .BYTE $5F
|
|
16 2055 80 4D .WORD SCREEN+#*SW
|
|
16 2057 5F .BYTE $5F
|
|
16 2058 00 4E .WORD SCREEN+#*SW
|
|
16 205A 5F .BYTE $5F
|
|
16 205B 80 4E .WORD SCREEN+#*SW
|
|
16 205D 5F .BYTE $5F
|
|
16 205E 00 4F .WORD SCREEN+#*SW
|
|
16 2060 5F .BYTE $5F
|
|
16 2061 80 4F .WORD SCREEN+#*SW
|
|
16 2063 5F .BYTE $5F
|
|
16 2064 00 50 .WORD SCREEN+#*SW
|
|
16 2066 5F .BYTE $5F
|
|
16 2067 80 50 .WORD SCREEN+#*SW
|
|
16 2069 5F .BYTE $5F
|
|
16 206A 00 51 .WORD SCREEN+#*SW
|
|
16 206C 5F .BYTE $5F
|
|
16 206D 80 51 .WORD SCREEN+#*SW
|
|
16 206F 5F .BYTE $5F
|
|
16 2070 00 52 .WORD SCREEN+#*SW
|
|
16 2072 5F .BYTE $5F
|
|
16 2073 80 52 .WORD SCREEN+#*SW
|
|
16 2075 5F .BYTE $5F
|
|
16 2076 00 53 .WORD SCREEN+#*SW
|
|
16 2078 5F .BYTE $5F
|
|
16 2079 80 53 .WORD SCREEN+#*SW
|
|
16 207B 5F .BYTE $5F
|
|
16 207C 00 54 .WORD SCREEN+#*SW
|
|
16 207E 5F .BYTE $5F
|
|
16 207F 80 54 .WORD SCREEN+#*SW
|
|
16 2081 5F .BYTE $5F
|
|
16 2082 00 55 .WORD SCREEN+#*SW
|
|
16 2084 5F .BYTE $5F
|
|
16 2085 80 55 .WORD SCREEN+#*SW
|
|
16 2087 5F .BYTE $5F
|
|
16 2088 00 56 .WORD SCREEN+#*SW
|
|
16 208A 5F .BYTE $5F
|
|
16 208B 80 56 .WORD SCREEN+#*SW
|
|
16 208D 5F .BYTE $5F
|
|
16 208E 00 57 .WORD SCREEN+#*SW
|
|
16 2090 5F .BYTE $5F
|
|
16 2091 80 57 .WORD SCREEN+#*SW
|
|
16 2093 5F .BYTE $5F
|
|
16 2094 00 58 .WORD SCREEN+#*SW
|
|
16 2096 5F .BYTE $5F
|
|
16 2097 80 58 .WORD SCREEN+#*SW
|
|
16 2099 5F .BYTE $5F
|
|
16 209A 00 59 .WORD SCREEN+#*SW
|
|
16 209C 5F .BYTE $5F
|
|
16 209D 80 59 .WORD SCREEN+#*SW
|
|
16 209F 5F .BYTE $5F
|
|
16 20A0 00 5A .WORD SCREEN+#*SW
|
|
16 20A2 5F .BYTE $5F
|
|
16 20A3 80 5A .WORD SCREEN+#*SW
|
|
16 20A5 5F .BYTE $5F
|
|
16 20A6 00 5B .WORD SCREEN+#*SW
|
|
16 20A8 5F .BYTE $5F
|
|
16 20A9 80 5B .WORD SCREEN+#*SW
|
|
16 20AB 5F .BYTE $5F
|
|
16 20AC 00 5C .WORD SCREEN+#*SW
|
|
16 20AE 5F .BYTE $5F
|
|
16 20AF 80 5C .WORD SCREEN+#*SW
|
|
16 20B1 5F .BYTE $5F
|
|
16 20B2 00 5D .WORD SCREEN+#*SW
|
|
16 20B4 5F .BYTE $5F
|
|
16 20B5 80 5D .WORD SCREEN+#*SW
|
|
16 20B7 5F .BYTE $5F
|
|
16 20B8 00 5E .WORD SCREEN+#*SW
|
|
16 20BA 5F .BYTE $5F
|
|
16 20BB 80 5E .WORD SCREEN+#*SW
|
|
16 20BD 5F .BYTE $5F
|
|
16 20BE 00 5F .WORD SCREEN+#*SW
|
|
16 20C0 5F .BYTE $5F
|
|
16 20C1 80 5F .WORD SCREEN+#*SW
|
|
16 20C3 5F .BYTE $5F
|
|
16 20C4 00 60 .WORD SCREEN+#*SW
|
|
16 20C6 5F .BYTE $5F
|
|
16 20C7 80 60 .WORD SCREEN+#*SW
|
|
16 20C9 5F .BYTE $5F
|
|
16 20CA 00 61 .WORD SCREEN+#*SW
|
|
16 20CC 5F .BYTE $5F
|
|
16 20CD 80 61 .WORD SCREEN+#*SW
|
|
16 20CF 5F .BYTE $5F
|
|
16 20D0 00 62 .WORD SCREEN+#*SW
|
|
16 20D2 5F .BYTE $5F
|
|
16 20D3 80 62 .WORD SCREEN+#*SW
|
|
16 20D5 5F .BYTE $5F
|
|
16 20D6 00 63 .WORD SCREEN+#*SW
|
|
16 20D8 5F .BYTE $5F
|
|
16 20D9 80 63 .WORD SCREEN+#*SW
|
|
16 20DB 5F .BYTE $5F
|
|
16 20DC 00 64 .WORD SCREEN+#*SW
|
|
16 20DE 5F .BYTE $5F
|
|
16 20DF 80 64 .WORD SCREEN+#*SW
|
|
16 20E1 5F .BYTE $5F
|
|
16 20E2 00 65 .WORD SCREEN+#*SW
|
|
16 20E4 5F .BYTE $5F
|
|
16 20E5 80 65 .WORD SCREEN+#*SW
|
|
16 20E7 5F .BYTE $5F
|
|
16 20E8 00 66 .WORD SCREEN+#*SW
|
|
16 20EA 5F .BYTE $5F
|
|
16 20EB 80 66 .WORD SCREEN+#*SW
|
|
16 20ED 5F .BYTE $5F
|
|
16 20EE 00 67 .WORD SCREEN+#*SW
|
|
16 20F0 5F .BYTE $5F
|
|
16 20F1 80 67 .WORD SCREEN+#*SW
|
|
16 20F3 5F .BYTE $5F
|
|
16 20F4 00 68 .WORD SCREEN+#*SW
|
|
16 20F6 5F .BYTE $5F
|
|
16 20F7 80 68 .WORD SCREEN+#*SW
|
|
16 20F9 5F .BYTE $5F
|
|
16 20FA 00 69 .WORD SCREEN+#*SW
|
|
16 20FC 5F .BYTE $5F
|
|
16 20FD 80 69 .WORD SCREEN+#*SW
|
|
16 20FF 5F .BYTE $5F
|
|
16 2100 00 6A .WORD SCREEN+#*SW
|
|
16 2102 5F .BYTE $5F
|
|
16 2103 80 6A .WORD SCREEN+#*SW
|
|
16 2105 5F .BYTE $5F
|
|
16 2106 00 6B .WORD SCREEN+#*SW
|
|
16 2108 5F .BYTE $5F
|
|
16 2109 80 6B .WORD SCREEN+#*SW
|
|
16 210B 5F .BYTE $5F
|
|
16 210C 00 6C .WORD SCREEN+#*SW
|
|
16 210E 5F .BYTE $5F
|
|
16 210F 80 6C .WORD SCREEN+#*SW
|
|
16 2111 5F .BYTE $5F
|
|
16 2112 00 6D .WORD SCREEN+#*SW
|
|
16 2114 5F .BYTE $5F
|
|
16 2115 80 6D .WORD SCREEN+#*SW
|
|
16 2117 5F .BYTE $5F
|
|
16 2118 00 6E .WORD SCREEN+#*SW
|
|
16 211A 5F .BYTE $5F
|
|
16 211B 80 6E .WORD SCREEN+#*SW
|
|
16 211D 5F .BYTE $5F
|
|
16 211E 00 6F .WORD SCREEN+#*SW
|
|
16 2120 5F .BYTE $5F
|
|
16 2121 80 6F .WORD SCREEN+#*SW
|
|
16 2123 5F .BYTE $5F
|
|
16 2124 00 70 .WORD SCREEN+#*SW
|
|
16 2126 5F .BYTE $5F
|
|
16 2127 80 70 .WORD SCREEN+#*SW
|
|
16 2129 5F .BYTE $5F
|
|
16 212A 00 71 .WORD SCREEN+#*SW
|
|
16 212C 5F .BYTE $5F
|
|
16 212D 80 71 .WORD SCREEN+#*SW
|
|
16 212F 5F .BYTE $5F
|
|
16 2130 00 72 .WORD SCREEN+#*SW
|
|
16 2132 5F .BYTE $5F
|
|
16 2133 80 72 .WORD SCREEN+#*SW
|
|
16 2135 5F .BYTE $5F
|
|
16 2136 00 73 .WORD SCREEN+#*SW
|
|
16 2138 5F .BYTE $5F
|
|
16 2139 80 73 .WORD SCREEN+#*SW
|
|
16 213B 5F .BYTE $5F
|
|
16 213C 00 74 .WORD SCREEN+#*SW
|
|
16 213E 5F .BYTE $5F
|
|
16 213F 80 74 .WORD SCREEN+#*SW
|
|
16 2141 5F .BYTE $5F
|
|
16 2142 00 75 .WORD SCREEN+#*SW
|
|
16 2144 5F .BYTE $5F
|
|
16 2145 80 75 .WORD SCREEN+#*SW
|
|
16 2147 5F .BYTE $5F
|
|
16 2148 00 76 .WORD SCREEN+#*SW
|
|
16 214A 5F .BYTE $5F
|
|
16 214B 80 76 .WORD SCREEN+#*SW
|
|
16 214D 5F .BYTE $5F
|
|
16 214E 00 77 .WORD SCREEN+#*SW
|
|
16 2150 5F .BYTE $5F
|
|
16 2151 80 77 .WORD SCREEN+#*SW
|
|
16 2153 5F .BYTE $5F
|
|
16 2154 00 78 .WORD SCREEN+#*SW
|
|
16 2156 5F .BYTE $5F
|
|
16 2157 80 78 .WORD SCREEN+#*SW
|
|
16 2159 5F .BYTE $5F
|
|
16 215A 00 79 .WORD SCREEN+#*SW
|
|
16 215C 5F .BYTE $5F
|
|
16 215D 80 79 .WORD SCREEN+#*SW
|
|
16 215F 5F .BYTE $5F
|
|
16 2160 00 7A .WORD SCREEN+#*SW
|
|
16 2162 5F .BYTE $5F
|
|
16 2163 80 7A .WORD SCREEN+#*SW
|
|
16 2165 5F .BYTE $5F
|
|
16 2166 00 7B .WORD SCREEN+#*SW
|
|
16 2168 5F .BYTE $5F
|
|
16 2169 80 7B .WORD SCREEN+#*SW
|
|
16 216B 5F .BYTE $5F
|
|
16 216C 00 7C .WORD SCREEN+#*SW
|
|
16 216E 5F .BYTE $5F
|
|
16 216F 80 7C .WORD SCREEN+#*SW
|
|
16 2171 5F .BYTE $5F
|
|
16 2172 00 7D .WORD SCREEN+#*SW
|
|
16 2174 5F .BYTE $5F
|
|
16 2175 80 7D .WORD SCREEN+#*SW
|
|
16 2177 5F .BYTE $5F
|
|
16 2178 00 7E .WORD SCREEN+#*SW
|
|
16 217A 5F .BYTE $5F
|
|
16 217B 80 7E .WORD SCREEN+#*SW
|
|
16 217D 5F .BYTE $5F
|
|
16 217E 00 7F .WORD SCREEN+#*SW
|
|
16 2180 5F .BYTE $5F
|
|
16 2181 80 7F .WORD SCREEN+#*SW
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
19 2183 41 .byte $41
|
|
20 2184 00 20 .word DL
|
|
21 2186 start
|
|
22 2186 A9 23 8D 2F 02 mva #%00100011 DMACTLS
|
|
23 218B A9 00 8D 30 02 A9 + mwa #dl DLPTRS
|
|
24 2195 A9 0C 8D 6D 25 mva #12 move_scr.hscr_state ;hscroll initialisation
|
|
25 219A 8D 04 D4 sta HSCROL
|
|
26
|
|
27 219D A9 00 8D C5 02 mva #0 COLPF1S
|
|
28 21A2 A9 0F 8D C8 02 mva #$0F COLBAKS
|
|
29 21A7 A9 0F 8D C6 02 mva #$0f COLPF2S
|
|
30
|
|
31 21AC 20 55 22 jsr dl_addr_init
|
|
32 21AF 20 34 24 jsr sprites_init
|
|
33 21B2 pause 1
|
|
Macro: PAUSE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
3 21B2 A2 01 ldx #1
|
|
4 21B4 loop wait
|
|
Macro: WAIT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
2 21B4 AD 0B D4 LDA VCOUNT
|
|
3 21B7 8D 0A D4 STA WSYNC
|
|
4 21BA 8D 0A D4 STA WSYNC
|
|
5 21BD 8D 0A D4 STA WSYNC
|
|
6 21C0 CD 0B D4 @ CMP VCOUNT
|
|
7 21C3 D0 FB BNE @-
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
5 21C5 CA dex
|
|
6 21C6 D0 EC bne loop
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
34 21C8 20 C3 23 jsr ground_init
|
|
35
|
|
36 21CB A2 14 ldx #20
|
|
37 21CD A0 00 ldy #0
|
|
38 21CF 20 E4 23 jsr cactus
|
|
39 21D2 A2 1E ldx #30
|
|
40 21D4 A0 01 ldy #1
|
|
41 21D6 20 E4 23 jsr cactus
|
|
42 21D9 A2 28 ldx #40
|
|
43 21DB A0 02 ldy #2
|
|
44 21DD 20 E4 23 jsr cactus
|
|
45
|
|
46 21E0 A2 00 xx ldx #0 ; anim phaze
|
|
47 21E2 A0 36 yy ldy #54
|
|
48 21E4 20 6C 24 jsr dino_pm
|
|
49 21E7 EE E1 21 AD E1 21 inc:lda xx+1
|
|
50 21ED C9 03 cmp #3
|
|
51 21EF D0 05 sne
|
|
52 21F1 A9 00 8D E1 21 mva #0 xx+1
|
|
53 21F6 key
|
|
Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
4 21F6 48 PHA
|
|
5 21F7 AD 0F D2 ?CK1 LDA SKSTAT
|
|
6 21FA 29 04 AND #$04
|
|
7 21FC F0 F9 BEQ ?CK1
|
|
8 21FE AD 0F D2 ?CK LDA SKSTAT
|
|
9 2201 29 04 AND #$04
|
|
10 2203 D0 F9 BNE ?CK
|
|
11 2205 68 PLA
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
54 2206 20 51 25 jsr move_scr
|
|
55 2209 4C E0 21 jmp xx
|
|
56
|
|
57
|
|
58 220C llp
|
|
59 220C A9 00 8D 54 22 mva #0 ntmp
|
|
60 2211 lp
|
|
61 2211 AE 54 22 ldx ntmp
|
|
62 2214 A0 62 ldy #98
|
|
63 2216 20 8C 22 jsr dino
|
|
64 2219 key
|
|
Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
4 2219 48 PHA
|
|
5 221A AD 0F D2 ?CK1 LDA SKSTAT
|
|
6 221D 29 04 AND #$04
|
|
7 221F F0 F9 BEQ ?CK1
|
|
8 2221 AD 0F D2 ?CK LDA SKSTAT
|
|
9 2224 29 04 AND #$04
|
|
10 2226 D0 F9 BNE ?CK
|
|
11 2228 68 PLA
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
65 2229 20 0F 23 jsr dino_clear
|
|
66 222C key
|
|
Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
4 222C 48 PHA
|
|
5 222D AD 0F D2 ?CK1 LDA SKSTAT
|
|
6 2230 29 04 AND #$04
|
|
7 2232 F0 F9 BEQ ?CK1
|
|
8 2234 AD 0F D2 ?CK LDA SKSTAT
|
|
9 2237 29 04 AND #$04
|
|
10 2239 D0 F9 BNE ?CK
|
|
11 223B 68 PLA
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
67 223C EE 54 22 AD 54 22 inc:lda ntmp
|
|
68 2242 C9 03 cmp #3
|
|
69 2244 D0 CB bne lp
|
|
70 2246 4C 0C 22 jmp llp
|
|
71
|
|
72
|
|
73 2249 halt 03
|
|
Macro: HALT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
1 2249 ?stop
|
|
3 2249 AD 0A D2 lda RANDOM
|
|
4 224C 29 03 and #03
|
|
5 224E 8D 1A D0 sta COLBAK
|
|
7 2251 4C 49 22 jmp ?stop
|
|
Source: C:\jac\wudsn\Workspace\no_internet\ni.asm
|
|
74
|
|
75 02E0-02E1> 86 21 run start
|
|
76 2254-2B18> 00 ntmp .by 0
|
|
77
|
|
78 2255 icl 'procs.asm'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\procs.asm
|
|
1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm
|
|
2
|
|
3 2255 .proc dl_addr_init ;sets initial values for DL addressess
|
|
4 ;uses AXY, tmp0, tmp1
|
|
5 = 0082 _dl = tmp0
|
|
6 = 0084 _scr = tmp1
|
|
7
|
|
8 2255 A9 04 85 82 A9 20 + mwa #dl_addrs+1 _dl
|
|
9 225D A9 00 85 84 A9 40 + mwa #screen _scr
|
|
10
|
|
11 2265 A2 80 ldx #sh
|
|
12 2267 A0 00 @ ldy #0
|
|
13 2269 A5 84 lda _scr
|
|
14 226B 91 82 sta (_dl),y
|
|
15 226D A5 85 lda _scr+1
|
|
16 226F C8 iny
|
|
17 2270 91 82 sta (_dl),y
|
|
18 2272 18 A5 82 69 03 85 + adw _dl #3
|
|
19 227D 18 A5 84 69 80 85 + adw _scr #sw
|
|
20 2288 CA dex
|
|
21 2289 D0 DC bne @-
|
|
22 228B 60 rts
|
|
23 .endp
|
|
24
|
|
25 228C .proc dino ; dino to the screen
|
|
26 ; uses: AXY tmp0 tmp1 tmp2 tmp3
|
|
27 ; Y - ypos in lines
|
|
28 ; X - dino phase (0,1,..)
|
|
29
|
|
30 = 0080 _dino = tmp ; _underscore means pointer here and else
|
|
31 = 0084 _mask = tmp1 ; local vars for reusing zero page variables
|
|
32 = 0086 _scr = tmp2
|
|
33 = 0088 _back = tmp3
|
|
34 228C 8C 72 27 sty dino_save_y ;save for clearing
|
|
35 ; get line address offset
|
|
36 228F B9 A9 27 lda scr_addrs_l,y
|
|
37 2292 85 86 sta _scr
|
|
38 2294 B9 29 28 lda scr_addrs_h,y
|
|
39 2297 85 87 sta _scr+1
|
|
40 ; add x position (hardcoded, dino does not move)
|
|
41 2299 18 A5 86 69 0A 85 + adw _scr #10
|
|
42 ;was: mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen
|
|
43
|
|
44 22A4 BD 1E 27 lda dino_tab_l,x
|
|
45 22A7 85 80 sta _dino
|
|
46 22A9 BD 21 27 lda dino_tab_h,x
|
|
47 22AC 85 81 sta _dino+1
|
|
48
|
|
49 22AE BD 24 27 lda dino_mask_tab_l,x
|
|
50 22B1 85 84 sta _mask
|
|
51 22B3 BD 27 27 lda dino_mask_tab_h,x
|
|
52 22B6 85 85 sta _mask+1
|
|
53
|
|
54 22B8 A9 D6 85 84 A9 26 + mwa #dino_mask2 _mask
|
|
55 22C0 A9 2A 85 88 A9 27 + mwa #dino_back _back
|
|
56 22C8 A2 18 ldx #24
|
|
57 22CA loop1
|
|
58 22CA A0 00 ldy #0
|
|
59 22CC dn1
|
|
60 22CC B1 86 lda (_scr),y ; get screen contents
|
|
61 22CE 91 88 sta (_back),y ; save background for sprite removal
|
|
62 22D0 B1 84 lda (_mask),y ; mask
|
|
63 22D2 49 FF eor #$ff ; inverse, 'cause mads does not inverse OK with '*'
|
|
64 22D4 31 86 and (_scr),y ; get screen contents
|
|
65 22D6 11 80 ora (_dino),y
|
|
66 22D8 91 86 sta (_scr),y
|
|
67 22DA C8 iny
|
|
68 22DB C0 03 cpy #3
|
|
69 22DD D0 ED bne dn1
|
|
70 22DF 18 A5 80 69 03 85 + adw _dino #3
|
|
71 22EA 18 A5 84 69 03 85 + adw _mask #3
|
|
72 22F5 18 A5 88 69 03 85 + adw _back #3
|
|
73 2300 18 A5 86 69 80 85 + adw _scr #sw
|
|
74 230B CA dex
|
|
75 230C D0 BC bne loop1
|
|
76 230E 60 rts
|
|
77 .endp
|
|
78 ;----------
|
|
79 230F .proc dino_clear ; remove old dino
|
|
80 ; uses: AXY tmp2 tmp3
|
|
81 = 0086 _scr = tmp2
|
|
82 = 0088 _back = tmp3
|
|
83 230F AC 72 27 ldy dino_save_y ;ypos
|
|
84 ; get line address offset
|
|
85 2312 B9 A9 27 lda scr_addrs_l,y
|
|
86 2315 85 86 sta _scr
|
|
87 2317 B9 29 28 lda scr_addrs_h,y
|
|
88 231A 85 87 sta _scr+1
|
|
89 ; add x position (hardcoded, dino does not move)
|
|
90 231C 18 A5 86 69 0A 85 + adw _scr #10
|
|
91 ;mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen
|
|
92
|
|
93 2327 A9 2A 85 88 A9 27 + mwa #dino_back _back
|
|
94 232F A2 18 ldx #24
|
|
95 2331 loop1
|
|
96 2331 A0 00 ldy #0
|
|
97 2333 dn1
|
|
98 2333 B1 88 lda (_back),y ; give back background for sprite removal
|
|
99 2335 91 86 sta (_scr),y
|
|
100 2337 C8 iny
|
|
101 2338 C0 03 cpy #3
|
|
102 233A D0 F7 bne dn1
|
|
103 233C 18 A5 88 69 03 85 + adw _back #3
|
|
104 2347 18 A5 86 69 80 85 + adw _scr #sw
|
|
105 2352 CA dex
|
|
106 2353 D0 DC bne loop1
|
|
107 2355 60 rts
|
|
108 .endp
|
|
109 ;----------
|
|
110 2356 .proc ground ; ground breaking, i.e. drawing
|
|
111 ; uses: AXY tmp1 tmp2
|
|
112 ; X: x on screen in words (2 bytes)
|
|
113 ; Y: ground tile number (0 - plain ground)
|
|
114 = 0084 _gnd = tmp1
|
|
115 = 0086 _scr = tmp2
|
|
116
|
|
117 2356 B9 A3 27 lda gnd_tab_l,y
|
|
118 2359 85 84 sta _gnd
|
|
119 235B B9 A6 27 lda gnd_tab_h,y
|
|
120 235E 85 85 sta _gnd+1
|
|
121 2360 A9 00 85 86 A9 78 + mwa #screen+112*sw _scr ;112 is ypos of ground level
|
|
122 2368 8A txa
|
|
123 2369 0A asl ;add X to xpos on screen
|
|
124 236A 18 clc
|
|
125 236B 65 86 adc _scr
|
|
126 236D 85 86 sta _scr
|
|
127 236F 90 02 scc
|
|
128 2371 E6 87 inc _scr+1
|
|
129
|
|
130 2373 A2 08 ldx #8 ; tile height in bytes
|
|
131 2375 loop1
|
|
132 2375 A0 00 ldy #0
|
|
133 2377 @
|
|
134 2377 B1 84 lda (_gnd),y
|
|
135 2379 91 86 sta (_scr),y
|
|
136 237B C8 iny
|
|
137 237C C0 02 cpy #2 ; tile width in bytes
|
|
138 237E D0 F7 bne @-
|
|
139 2380 18 A5 84 69 02 85 + adw _gnd #2
|
|
140 238B 18 A5 86 69 80 85 + adw _scr #sw ;next screen line
|
|
141 2396 CA dex
|
|
142 2397 D0 DC bne loop1
|
|
143 ; add some debris below
|
|
144
|
|
145 2399 A2 06 ldx #6 ; debris height
|
|
146 239B loop2
|
|
147 239B A0 01 ldy #1
|
|
148 239D @
|
|
149 239D AD 0A D2 lda RANDOM
|
|
150 23A0 2D 0A D2 2D 0A D2 + :5 AND RANDOM
|
|
151 23AF 91 86 sta (_scr),y
|
|
152 23B1 88 dey
|
|
153 23B2 10 E9 bpl @-
|
|
154 23B4 18 A5 86 69 80 85 + adw _scr #sw ;next screen line
|
|
155 23BF CA dex
|
|
156 23C0 10 D9 bpl loop2
|
|
157
|
|
158 23C2 60 rts
|
|
159 .endp
|
|
160 23C3 .proc ground_init ;draws first 48 segments of a ground
|
|
161 23C3 A9 00 85 80 mva #0 tmp
|
|
162 23C7 ground_loop
|
|
163 23C7 A5 80 lda tmp
|
|
164 23C9 AA tax
|
|
165 23CA randomize 0 2 3
|
|
Macro: RANDOMIZE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm]
|
|
4 23CA ?rand
|
|
5 23CA AD 0A D2 lda random
|
|
7 23CD 29 03 and #3
|
|
9 23CF C9 00 cmp #0 ;floor
|
|
10 23D1 90 F7 bcc ?rand
|
|
11 23D3 C9 03 cmp #2+1 ;ceiling
|
|
12 23D5 B0 F3 bcs ?rand
|
|
Source: C:\jac\wudsn\Workspace\no_internet\procs.asm
|
|
166 23D7 A8 tay
|
|
167 23D8 20 56 23 jsr ground
|
|
168 23DB E6 80 inc tmp
|
|
169 23DD A5 80 lda tmp
|
|
170 23DF C9 18 cmp #24 ; screen width in wide mode /2
|
|
171 23E1 D0 E4 bne ground_loop
|
|
172 23E3 60 rts
|
|
173 .endp
|
|
174 ;----------
|
|
175 23E4 .proc cactus ; drawing cactii
|
|
176 ; uses: AXY tmp1 tmp2
|
|
177 ; X: x on screen in bytes
|
|
178 ; Y: cactus number
|
|
179 ; draws from bottom up, utilising the fact that .bmp is saved this way
|
|
180 ; updt.: was not able to load .bmp files for unknown reason, so the pics are flipped with WUDSN script
|
|
181
|
|
182 = 0084 _cact = tmp1
|
|
183 = 0086 _scr = tmp2
|
|
184
|
|
185 23E4 B9 13 2B lda cact_tab_l,y
|
|
186 23E7 85 84 sta _cact
|
|
187 23E9 B9 16 2B lda cact_tab_h,y
|
|
188 23EC 85 85 sta _cact+1
|
|
189 23EE A9 00 85 86 A9 7D + mwa #screen+122*sw _scr ;112 is ypos of bottom of the cactii
|
|
190 23F6 8A txa
|
|
191 23F7 18 clc
|
|
192 23F8 65 86 adc _scr
|
|
193 23FA 85 86 sta _scr
|
|
194 23FC 90 02 bcc no_inc
|
|
195 23FE E6 87 inc _scr+1
|
|
196 2400 no_inc
|
|
197
|
|
198
|
|
199 2400 B9 0D 2B lda cact_widths,y
|
|
200 2403 8D 33 24 sta cact_w ; width in bytes
|
|
201
|
|
202 2406 B9 10 2B lda cact_heights,y
|
|
203 2409 AA tax
|
|
204 240A loop
|
|
205 240A A0 00 ldy #0
|
|
206 240C @
|
|
207 240C B1 86 lda (_scr),y
|
|
208 240E 11 84 ora (_cact),y
|
|
209 2410 91 86 sta (_scr),y
|
|
210 2412 C8 iny
|
|
211 2413 CC 33 24 cpy cact_w
|
|
212 2416 D0 F4 bne @-
|
|
213 ;adw _cact cact_w ;!!!DOES NOT WORK :(((((
|
|
214 2418 18 clc
|
|
215 2419 AD 33 24 lda cact_w
|
|
216 241C 65 84 adc _cact
|
|
217 241E 85 84 sta _cact
|
|
218 2420 90 02 scc
|
|
219 2422 E6 85 inc _cact+1
|
|
220
|
|
221 2424 38 A5 86 E9 80 85 + sbw _scr #sw
|
|
222 242F CA dex
|
|
223 2430 D0 D8 bne loop
|
|
224 2432 60 rts
|
|
225 2433 00 cact_w .by 0
|
|
226 .endp
|
|
227 ;----------
|
|
228
|
|
229 2434 .proc sprites_init
|
|
230 ;setting up P/M graphics
|
|
231 2434 A9 90 lda #>pmgraph
|
|
232 2436 8D 07 D4 sta pmbase
|
|
233 2439 AD 2F 02 lda dmactls
|
|
234 243C 09 0C ora #%00001100 ; Players and Missiles single lined
|
|
235 243E 8D 2F 02 sta dmactls
|
|
236 2441 A9 03 lda #$03 ; P/M on
|
|
237 2443 8D 1D D0 sta pmcntl
|
|
238 2446 A9 00 lda #$00
|
|
239 2448 8D 0C D0 sta sizem ; there will be only M0, double width
|
|
240 244B 8D 08 D0 sta sizep0 ; P0-P3 widths
|
|
241 244E 8D 09 D0 sta sizep0+1
|
|
242 2451 8D 0A D0 sta sizep0+2
|
|
243 2454 8D 0B D0 sta sizep0+3
|
|
244 2457 A9 11 lda #$11 ; P/M priorities (bit 4 joins missiles), bit 0 - players on top
|
|
245 2459 8D 6F 02 sta gtictls
|
|
246 /*
|
|
247 ; temporary colours of sprites
|
|
248 mva #$52 COLPM0
|
|
249 mva #$34 COLPM1
|
|
250 mva #$76 COLPM2
|
|
251 mva #$90 COLPM3
|
|
252 mva #$B0 COLPF3S
|
|
253 */
|
|
253
|
|
254 = 002A dx = 42
|
|
255 245C A9 2A 8D 00 D0 mva #dx HPOSP0
|
|
256 2461 A9 32 8D 01 D0 mva #dx+8 HPOSP1
|
|
257 2466 A9 3A 8D 02 D0 MVA #dx+8*2 HPOSP2
|
|
258
|
|
259 246B 60 rts
|
|
260 .endp
|
|
261
|
|
262 246C .proc dino_pm
|
|
263 ; uses: AXY tmp tmp1 tmp2 tmp3
|
|
264 ; X: dino animation phase
|
|
265 ; Y: Y position of dino
|
|
266
|
|
267 = 0084 _dino = tmp1 ; _underscore means pointer here and else
|
|
268 = 0086 _dino_sav = tmp2 ; local vars for reusing zero page variables
|
|
269 = 0088 _spr = tmp3
|
|
270 ;tmp = tmp
|
|
271
|
|
272 246C AD 1B 25 8D 1C 25 mva dino_save_pm_y dino_save_pm_y_prev
|
|
273 2472 8C 1B 25 sty dino_save_pm_y ;save for clearing
|
|
274
|
|
275
|
|
276 2475 BD 1E 27 lda dino_tab_l,x
|
|
277 ;sta _dino
|
|
278 2478 85 86 sta _dino_sav
|
|
279 247A BD 21 27 lda dino_tab_h,x
|
|
280 ;sta _dino+1
|
|
281 247D 85 87 sta _dino_sav+1
|
|
282
|
|
283
|
|
284 247F A9 00 8D 1A 25 mva #0 counter
|
|
285
|
|
286 2484 loop0
|
|
287 ; sprite address calc
|
|
288 2484 A9 00 85 88 A9 92 + mwa #(pmgraph+$200) _spr ;1st sprite starts at PMBASE + $200
|
|
289 ;counter *$80
|
|
290 248C A9 80 85 80 A9 FF + mwa #-$80 tmp ;so first add gives "0"
|
|
291 2494 AC 1A 25 ldy counter
|
|
292 2497 @
|
|
293 2497 18 A5 80 69 80 85 + adw tmp #$80 ;tmp = counter*$80 - calc addr of the sprite to put gfx
|
|
294 24A2 88 dey
|
|
295 24A3 10 F2 bpl @-
|
|
296
|
|
297 24A5 18 A5 88 65 80 85 + adw _spr tmp
|
|
298 24B2 A5 88 85 80 A5 89 + mwa _spr tmp ; save address - it will be used in clearing and then drawing
|
|
299
|
|
300 24BA AD 1C 25 lda dino_save_pm_y_prev ;clearing old sprite, same way as drawing a new one
|
|
301 24BD 18 clc ;add ypos to the sprite address
|
|
302 24BE 65 88 adc _spr
|
|
303 24C0 85 88 sta _spr
|
|
304 ;scc
|
|
305 ;inc _spr+1 ;not necessary, sprites are not crossing pages
|
|
306
|
|
307 24C2 A0 00 ldy #0 ;delete old sprite here
|
|
308 24C4 98 tya
|
|
309 24C5 A2 18 ldx #24 ;dino height
|
|
310 24C7 @
|
|
311 24C7 91 88 sta (_spr),y
|
|
312 24C9 C8 iny
|
|
313 24CA CA dex
|
|
314 24CB D0 FA bne @-
|
|
315
|
|
316
|
|
317
|
|
318 ;--------------------------
|
|
319 24CD A5 80 85 88 A5 81 + mwa tmp _spr
|
|
320 24D5 AD 1B 25 lda dino_save_pm_y ;drawing sprite at a new position
|
|
321 24D8 18 clc ;add ypos to the sprite address
|
|
322 24D9 65 88 adc _spr
|
|
323 24DB 85 88 sta _spr
|
|
324 ;scc
|
|
325 ;inc _spr+1 ;not necessary, sprites are not crossing pages
|
|
326
|
|
327
|
|
328 24DD 18 clc ;beginning of the next column of dino to the sprite
|
|
329 24DE A5 86 lda _dino_sav ;0- first column, 1 - 2nd, 2 - 3rd
|
|
330 24E0 6D 1A 25 adc counter
|
|
331 24E3 85 84 sta _dino
|
|
332 ;bcc @+ ;needs to be removed as both bytes must be copied
|
|
333 24E5 A5 87 lda _dino_sav+1 ;original address
|
|
334 24E7 69 00 adc #0
|
|
335 24E9 85 85 sta _dino+1
|
|
336 ;@
|
|
337
|
|
338 24EB A0 00 ldy #0
|
|
339
|
|
340 24ED A2 18 ldx #24 ;dino height
|
|
341 24EF @
|
|
342 24EF B1 84 lda (_dino),y
|
|
343 24F1 91 88 sta (_spr),y
|
|
344 24F3 18 A5 84 69 03 85 + adw _dino #3 ;+3 ==> next line in dino
|
|
345 24FE 18 A5 88 69 01 85 + adw _spr #1
|
|
346 2509 CA dex
|
|
347 250A D0 E3 bne @-
|
|
348
|
|
349
|
|
350
|
|
351 250C EE 1A 25 AD 1A 25 inc:lda counter
|
|
352 2512 C9 03 cmp #3
|
|
353 2514 F0 03 4C 84 24 jne loop0
|
|
354
|
|
355
|
|
356
|
|
357 2519 60 rts
|
|
358 251A 00 counter .by 0
|
|
359 251B 00 dino_save_pm_y .by 0
|
|
360 251C 00 dino_save_pm_y_prev .by 0
|
|
361
|
|
362 .endp
|
|
363
|
|
364 251D .proc move_dl ;screen window one byte right
|
|
365 ;uses: AXY
|
|
366
|
|
367 251D EE 50 25 AD 50 25 inc:lda x_scr_offset
|
|
368 2523 C9 41 cmp #sw_log+1 ; is it end of the logical 2 screens?
|
|
369 2525 D0 08 bne @+
|
|
370 ;start anew
|
|
371 2527 A9 00 8D 50 25 mva #0 x_scr_offset
|
|
372 252C 20 55 22 jsr dl_addr_init
|
|
373 252F @
|
|
374 252F A9 04 8D 3C 25 A9 + mwa #dl_addrs+1 incr+1 ;self mod
|
|
375 2539 A2 80 ldx #sh
|
|
376 253B EE FF FF incr inc $ffff
|
|
377 253E 18 AD 3C 25 69 03 + adw incr+1 #3
|
|
378 254C CA dex
|
|
379 254D D0 EC bne incr
|
|
380 254F 60 rts
|
|
381 .endp
|
|
382 2550 00 x_scr_offset .by 0 ;where is the beginning of the screen
|
|
383
|
|
384 2551 .proc move_scr ;screen window one step (1/4 th of byte) right
|
|
385 ;uses: AXY
|
|
386 2551 CE 6D 25 AD 6D 25 dec:lda hscr_state
|
|
387 2557 8D 04 D4 sta HSCROL
|
|
388 255A C9 04 cmp #4
|
|
389 255C D0 0E bne @+
|
|
390 255E A9 0C 8D 6D 25 mva #12 hscr_state
|
|
391 2563 8D 04 D4 sta HSCROL
|
|
392 2566 20 1D 25 jsr move_dl
|
|
393 2569 20 1D 25 jsr move_dl
|
|
394 256C @
|
|
395 256C 60 rts
|
|
396 256D 00 hscr_state .by 0
|
|
397 .endp
|
|
79 256E icl 'artwork.asm'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm
|
|
2 ;-------------------------------------------------------------
|
|
3 ;24x24 pix = 3x3 chars (3x24 bytes)
|
|
4 .rept 3, #
|
|
5 DINO:1
|
|
6 INS 'art/dino:1.data'
|
|
7 .ENDR
|
|
7 .endr
|
|
Source: REPT
|
|
5 256E DINO0
|
|
5 256E 00 00 00 00 03 FC + INS 'art/dino0.data'
|
|
5 25B6 DINO1
|
|
5 25B6 00 00 00 00 03 FC + INS 'art/dino1.data'
|
|
5 25FE DINO2
|
|
5 25FE 00 00 00 00 03 FC + INS 'art/dino2.data'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
8
|
|
9 .rept 3, #
|
|
10 DINO_MASK:1
|
|
11 INS 'art/dino_mask:1.data'
|
|
12 .ENDR
|
|
12 .endr
|
|
Source: REPT
|
|
10 2646 DINO_MASK0
|
|
10 2646 FF F8 01 FF F0 00 + INS 'art/dino_mask0.data'
|
|
10 268E DINO_MASK1
|
|
10 268E FF F8 01 FF F0 00 + INS 'art/dino_mask1.data'
|
|
10 26D6 DINO_MASK2
|
|
10 26D6 00 07 FE 00 0F FF + INS 'art/dino_mask2.data'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
13
|
|
14 271E dino_tab_l
|
|
15 .rept 3, #
|
|
16 .BY <DINO:1
|
|
17 .ENDR
|
|
17 .endr
|
|
Source: REPT
|
|
16 271E 6E .BY <DINO0
|
|
16 271F B6 .BY <DINO1
|
|
16 2720 FE .BY <DINO2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
18 2721 dino_tab_h
|
|
19 .rept 3, #
|
|
20 .BY >DINO:1
|
|
21 .ENDR
|
|
21 .endr
|
|
Source: REPT
|
|
20 2721 25 .BY >DINO0
|
|
20 2722 25 .BY >DINO1
|
|
20 2723 25 .BY >DINO2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
22
|
|
23 2724 dino_mask_tab_l
|
|
24 .rept 3, #
|
|
25 .BY <DINO_MASK:1
|
|
26 .ENDR
|
|
26 .endr
|
|
Source: REPT
|
|
25 2724 46 .BY <DINO_MASK0
|
|
25 2725 8E .BY <DINO_MASK1
|
|
25 2726 D6 .BY <DINO_MASK2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
27 2727 dino_mask_tab_h
|
|
28 .rept 3, #
|
|
29 .BY >DINO_MASK:1
|
|
30 .ENDR
|
|
30 .endr
|
|
Source: REPT
|
|
29 2727 26 .BY >DINO_MASK0
|
|
29 2728 26 .BY >DINO_MASK1
|
|
29 2729 26 .BY >DINO_MASK2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
31
|
|
32 272A dino_back ; background save for dino sprite
|
|
33 272A 00 00 00 00 00 00 + :3*24 .by 0
|
|
34 2772 00 dino_save_y .by 0
|
|
35
|
|
36 ;------------------------------
|
|
37 ; ground pictures, 8x16 px = 2x1 chars (2x8 bytes)
|
|
38 .rept 3, #
|
|
39 GND_:1
|
|
40 INS 'art/gnd_:1.data'
|
|
41 .ENDR
|
|
41 .endr
|
|
Source: REPT
|
|
39 2773 GND_0
|
|
39 2773 00 00 00 00 00 00 + INS 'art/gnd_0.data'
|
|
39 2783 GND_1
|
|
39 2783 03 F0 06 18 1C 0C + INS 'art/gnd_1.data'
|
|
39 2793 GND_2
|
|
39 2793 00 00 00 00 00 00 + INS 'art/gnd_2.data'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
42 27A3 gnd_tab_l
|
|
43 .rept 3, #
|
|
44 .BY <GND_:1
|
|
45 .ENDR
|
|
45 .endr
|
|
Source: REPT
|
|
44 27A3 73 .BY <GND_0
|
|
44 27A4 83 .BY <GND_1
|
|
44 27A5 93 .BY <GND_2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
46 27A6 gnd_tab_h
|
|
47 .rept 3, #
|
|
48 .BY >GND_:1
|
|
49 .ENDR
|
|
49 .endr
|
|
Source: REPT
|
|
48 27A6 27 .BY >GND_0
|
|
48 27A7 27 .BY >GND_1
|
|
48 27A8 27 .BY >GND_2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
50 27A9 scr_addrs_l
|
|
51 27A9 00 80 00 80 00 80 + :sh .by <(screen+#*sw)
|
|
52 2829 scr_addrs_h
|
|
53 2829 40 40 41 41 42 42 + :sh .by >(screen+#*sw)
|
|
54 ;------------------------------
|
|
55 ; cacti pictures, height and width variable
|
|
56 ; cactX.data is flipped vertically
|
|
57 = 0003 cacti = 3
|
|
58
|
|
59 .rept cacti, #
|
|
60 CACT:1
|
|
61 INS 'art/cact:1.data'
|
|
62 .ENDR
|
|
62 .endr
|
|
Source: REPT
|
|
60 28A9 CACT0
|
|
60 28A9 00 00 00 00 03 E0 + INS 'art/cact0.data'
|
|
60 2935 CACT1
|
|
60 2935 00 00 00 00 00 7F + INS 'art/cact1.data'
|
|
60 29F5 CACT2
|
|
60 29F5 00 00 00 00 00 00 + INS 'art/cact2.data'
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
63
|
|
64 2B0D cact_widths ; widths of cactii in bytes
|
|
65 2B0D 04 04 08 .by 4, 4, 8
|
|
66 2B10 cact_heights ; heights of cactii in lines
|
|
67 2B10 23 30 23 .by 35,48,35
|
|
68 2B13 cact_tab_l
|
|
69 .rept cacti, #
|
|
70 .BY <CACT:1
|
|
71 .ENDR
|
|
71 .endr
|
|
Source: REPT
|
|
70 2B13 A9 .BY <CACT0
|
|
70 2B14 35 .BY <CACT1
|
|
70 2B15 F5 .BY <CACT2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
72 2B16 cact_tab_h
|
|
73 .rept cacti, #
|
|
74 .BY >CACT:1
|
|
75 .ENDR
|
|
75 .endr
|
|
Source: REPT
|
|
74 2B16 28 .BY >CACT0
|
|
74 2B17 29 .BY >CACT1
|
|
74 2B18 29 .BY >CACT2
|
|
Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm
|
|
76
|