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 24 ; VMAIN #WORD,interrupt.vector 25 ; interrupt.vector: 26 ; 0 - VIMIRQ 27 ; 1 - TIMCNT1 28 ; 2 - TIMCNT2 29 ; 3 - TIMCNT3 30 ; 4 - TIMCNT4 31 ; 5 - TIMCNT5 32 ; 6 - VVBLKI 33 ; 7 - VVBLKD 34 ; 8 - TIMVEC1 35 ; 9 - TIMVEC2 36 ; Initialises Vertical Blank Interrupts 37 ; (works only with system interrupts ON) 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 PHA 69 ?CK1 LDA SKSTAT 70 AND #$04 71 BEQ ?CK1 72 ?CK LDA SKSTAT 73 AND #$04 74 BNE ?CK 75 PLA 76 .ENDM 77 ;------------------------------------- 78 .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC)) 79 ;uses: A 80 LDA VCOUNT 81 STA WSYNC 82 STA WSYNC 83 STA WSYNC 84 @ CMP VCOUNT 85 BNE @- 86 .ENDM 87 ;------------------------------------- 88 .macro negw 89 ; negate the given word (0-a) 90 ;------------------------------------- 91 sec 92 lda #$00 93 sbc :1 94 sta :1 95 lda #$00 96 sbc :1+1 97 sta :1+1 98 .endm 99 ;------------------------------------- 100 .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl) 101 ;usage: randomize floor ceiling AND 102 ;uses: A 103 104 ?rand 105 lda random 106 .if :3 107 and #:3 108 .endif 109 cmp #:1 ;floor 110 bcc ?rand 111 cmp #:2+1 ;ceiling 112 bcs ?rand 113 .endm 114 ;------------------------------------- 115 .macro phx 116 txa 117 pha 118 .endm 119 ;------------------------------------- 120 .macro phy 121 tya 122 pha 123 .endm 124 ;------------------------------------- 125 .macro plx 126 pla 127 tax 128 .endm 129 ;------------------------------------- 130 .macro ply 131 pla 132 tay 133 .endm 134 ;------------------------------------- 135 .macro pause ;waits :1 number (byte) of frames 136 ;uses: AX 137 .if :1 > 0 138 ldx #:1 139 loop wait 140 dex 141 bne loop 142 .else 143 wait 144 .endif 145 .ENDM 146 4 5 .zpvar tmp, tmp0, tmp1, tmp2, tmp3 .word 6 = 0080 sw = $80 ;screen width in bytes 7 = 0080 sh = 128 ; screen height in lines 8 = 4000 screen = $4000 9 = 9000 pmgraph = $9000 10 = 0080 TMP 10 = 0082 TMP0 10 = 0084 TMP1 10 = 0086 TMP2 10 = 0088 TMP3 10 org $2000 11 dl 12 FFFF> 2000-2250> 70 70 + .byte $70,$70,$70 13 2003 dl_addrs ;start of lines 14 .REPT sh 15 .BYTE $5F 16 .WORD SCREEN+#*SW 17 .ENDR 17 .ENDR Source: REPT 15 2003 5F .BYTE $5F 15 2004 00 40 .WORD SCREEN+#*SW 15 2006 5F .BYTE $5F 15 2007 80 40 .WORD SCREEN+#*SW 15 2009 5F .BYTE $5F 15 200A 00 41 .WORD SCREEN+#*SW 15 200C 5F .BYTE $5F 15 200D 80 41 .WORD SCREEN+#*SW 15 200F 5F .BYTE $5F 15 2010 00 42 .WORD SCREEN+#*SW 15 2012 5F .BYTE $5F 15 2013 80 42 .WORD SCREEN+#*SW 15 2015 5F .BYTE $5F 15 2016 00 43 .WORD SCREEN+#*SW 15 2018 5F .BYTE $5F 15 2019 80 43 .WORD SCREEN+#*SW 15 201B 5F .BYTE $5F 15 201C 00 44 .WORD SCREEN+#*SW 15 201E 5F .BYTE $5F 15 201F 80 44 .WORD SCREEN+#*SW 15 2021 5F .BYTE $5F 15 2022 00 45 .WORD SCREEN+#*SW 15 2024 5F .BYTE $5F 15 2025 80 45 .WORD SCREEN+#*SW 15 2027 5F .BYTE $5F 15 2028 00 46 .WORD SCREEN+#*SW 15 202A 5F .BYTE $5F 15 202B 80 46 .WORD SCREEN+#*SW 15 202D 5F .BYTE $5F 15 202E 00 47 .WORD SCREEN+#*SW 15 2030 5F .BYTE $5F 15 2031 80 47 .WORD SCREEN+#*SW 15 2033 5F .BYTE $5F 15 2034 00 48 .WORD SCREEN+#*SW 15 2036 5F .BYTE $5F 15 2037 80 48 .WORD SCREEN+#*SW 15 2039 5F .BYTE $5F 15 203A 00 49 .WORD SCREEN+#*SW 15 203C 5F .BYTE $5F 15 203D 80 49 .WORD SCREEN+#*SW 15 203F 5F .BYTE $5F 15 2040 00 4A .WORD SCREEN+#*SW 15 2042 5F .BYTE $5F 15 2043 80 4A .WORD SCREEN+#*SW 15 2045 5F .BYTE $5F 15 2046 00 4B .WORD SCREEN+#*SW 15 2048 5F .BYTE $5F 15 2049 80 4B .WORD SCREEN+#*SW 15 204B 5F .BYTE $5F 15 204C 00 4C .WORD SCREEN+#*SW 15 204E 5F .BYTE $5F 15 204F 80 4C .WORD SCREEN+#*SW 15 2051 5F .BYTE $5F 15 2052 00 4D .WORD SCREEN+#*SW 15 2054 5F .BYTE $5F 15 2055 80 4D .WORD SCREEN+#*SW 15 2057 5F .BYTE $5F 15 2058 00 4E .WORD SCREEN+#*SW 15 205A 5F .BYTE $5F 15 205B 80 4E .WORD SCREEN+#*SW 15 205D 5F .BYTE $5F 15 205E 00 4F .WORD SCREEN+#*SW 15 2060 5F .BYTE $5F 15 2061 80 4F .WORD SCREEN+#*SW 15 2063 5F .BYTE $5F 15 2064 00 50 .WORD SCREEN+#*SW 15 2066 5F .BYTE $5F 15 2067 80 50 .WORD SCREEN+#*SW 15 2069 5F .BYTE $5F 15 206A 00 51 .WORD SCREEN+#*SW 15 206C 5F .BYTE $5F 15 206D 80 51 .WORD SCREEN+#*SW 15 206F 5F .BYTE $5F 15 2070 00 52 .WORD SCREEN+#*SW 15 2072 5F .BYTE $5F 15 2073 80 52 .WORD SCREEN+#*SW 15 2075 5F .BYTE $5F 15 2076 00 53 .WORD SCREEN+#*SW 15 2078 5F .BYTE $5F 15 2079 80 53 .WORD SCREEN+#*SW 15 207B 5F .BYTE $5F 15 207C 00 54 .WORD SCREEN+#*SW 15 207E 5F .BYTE $5F 15 207F 80 54 .WORD SCREEN+#*SW 15 2081 5F .BYTE $5F 15 2082 00 55 .WORD SCREEN+#*SW 15 2084 5F .BYTE $5F 15 2085 80 55 .WORD SCREEN+#*SW 15 2087 5F .BYTE $5F 15 2088 00 56 .WORD SCREEN+#*SW 15 208A 5F .BYTE $5F 15 208B 80 56 .WORD SCREEN+#*SW 15 208D 5F .BYTE $5F 15 208E 00 57 .WORD SCREEN+#*SW 15 2090 5F .BYTE $5F 15 2091 80 57 .WORD SCREEN+#*SW 15 2093 5F .BYTE $5F 15 2094 00 58 .WORD SCREEN+#*SW 15 2096 5F .BYTE $5F 15 2097 80 58 .WORD SCREEN+#*SW 15 2099 5F .BYTE $5F 15 209A 00 59 .WORD SCREEN+#*SW 15 209C 5F .BYTE $5F 15 209D 80 59 .WORD SCREEN+#*SW 15 209F 5F .BYTE $5F 15 20A0 00 5A .WORD SCREEN+#*SW 15 20A2 5F .BYTE $5F 15 20A3 80 5A .WORD SCREEN+#*SW 15 20A5 5F .BYTE $5F 15 20A6 00 5B .WORD SCREEN+#*SW 15 20A8 5F .BYTE $5F 15 20A9 80 5B .WORD SCREEN+#*SW 15 20AB 5F .BYTE $5F 15 20AC 00 5C .WORD SCREEN+#*SW 15 20AE 5F .BYTE $5F 15 20AF 80 5C .WORD SCREEN+#*SW 15 20B1 5F .BYTE $5F 15 20B2 00 5D .WORD SCREEN+#*SW 15 20B4 5F .BYTE $5F 15 20B5 80 5D .WORD SCREEN+#*SW 15 20B7 5F .BYTE $5F 15 20B8 00 5E .WORD SCREEN+#*SW 15 20BA 5F .BYTE $5F 15 20BB 80 5E .WORD SCREEN+#*SW 15 20BD 5F .BYTE $5F 15 20BE 00 5F .WORD SCREEN+#*SW 15 20C0 5F .BYTE $5F 15 20C1 80 5F .WORD SCREEN+#*SW 15 20C3 5F .BYTE $5F 15 20C4 00 60 .WORD SCREEN+#*SW 15 20C6 5F .BYTE $5F 15 20C7 80 60 .WORD SCREEN+#*SW 15 20C9 5F .BYTE $5F 15 20CA 00 61 .WORD SCREEN+#*SW 15 20CC 5F .BYTE $5F 15 20CD 80 61 .WORD SCREEN+#*SW 15 20CF 5F .BYTE $5F 15 20D0 00 62 .WORD SCREEN+#*SW 15 20D2 5F .BYTE $5F 15 20D3 80 62 .WORD SCREEN+#*SW 15 20D5 5F .BYTE $5F 15 20D6 00 63 .WORD SCREEN+#*SW 15 20D8 5F .BYTE $5F 15 20D9 80 63 .WORD SCREEN+#*SW 15 20DB 5F .BYTE $5F 15 20DC 00 64 .WORD SCREEN+#*SW 15 20DE 5F .BYTE $5F 15 20DF 80 64 .WORD SCREEN+#*SW 15 20E1 5F .BYTE $5F 15 20E2 00 65 .WORD SCREEN+#*SW 15 20E4 5F .BYTE $5F 15 20E5 80 65 .WORD SCREEN+#*SW 15 20E7 5F .BYTE $5F 15 20E8 00 66 .WORD SCREEN+#*SW 15 20EA 5F .BYTE $5F 15 20EB 80 66 .WORD SCREEN+#*SW 15 20ED 5F .BYTE $5F 15 20EE 00 67 .WORD SCREEN+#*SW 15 20F0 5F .BYTE $5F 15 20F1 80 67 .WORD SCREEN+#*SW 15 20F3 5F .BYTE $5F 15 20F4 00 68 .WORD SCREEN+#*SW 15 20F6 5F .BYTE $5F 15 20F7 80 68 .WORD SCREEN+#*SW 15 20F9 5F .BYTE $5F 15 20FA 00 69 .WORD SCREEN+#*SW 15 20FC 5F .BYTE $5F 15 20FD 80 69 .WORD SCREEN+#*SW 15 20FF 5F .BYTE $5F 15 2100 00 6A .WORD SCREEN+#*SW 15 2102 5F .BYTE $5F 15 2103 80 6A .WORD SCREEN+#*SW 15 2105 5F .BYTE $5F 15 2106 00 6B .WORD SCREEN+#*SW 15 2108 5F .BYTE $5F 15 2109 80 6B .WORD SCREEN+#*SW 15 210B 5F .BYTE $5F 15 210C 00 6C .WORD SCREEN+#*SW 15 210E 5F .BYTE $5F 15 210F 80 6C .WORD SCREEN+#*SW 15 2111 5F .BYTE $5F 15 2112 00 6D .WORD SCREEN+#*SW 15 2114 5F .BYTE $5F 15 2115 80 6D .WORD SCREEN+#*SW 15 2117 5F .BYTE $5F 15 2118 00 6E .WORD SCREEN+#*SW 15 211A 5F .BYTE $5F 15 211B 80 6E .WORD SCREEN+#*SW 15 211D 5F .BYTE $5F 15 211E 00 6F .WORD SCREEN+#*SW 15 2120 5F .BYTE $5F 15 2121 80 6F .WORD SCREEN+#*SW 15 2123 5F .BYTE $5F 15 2124 00 70 .WORD SCREEN+#*SW 15 2126 5F .BYTE $5F 15 2127 80 70 .WORD SCREEN+#*SW 15 2129 5F .BYTE $5F 15 212A 00 71 .WORD SCREEN+#*SW 15 212C 5F .BYTE $5F 15 212D 80 71 .WORD SCREEN+#*SW 15 212F 5F .BYTE $5F 15 2130 00 72 .WORD SCREEN+#*SW 15 2132 5F .BYTE $5F 15 2133 80 72 .WORD SCREEN+#*SW 15 2135 5F .BYTE $5F 15 2136 00 73 .WORD SCREEN+#*SW 15 2138 5F .BYTE $5F 15 2139 80 73 .WORD SCREEN+#*SW 15 213B 5F .BYTE $5F 15 213C 00 74 .WORD SCREEN+#*SW 15 213E 5F .BYTE $5F 15 213F 80 74 .WORD SCREEN+#*SW 15 2141 5F .BYTE $5F 15 2142 00 75 .WORD SCREEN+#*SW 15 2144 5F .BYTE $5F 15 2145 80 75 .WORD SCREEN+#*SW 15 2147 5F .BYTE $5F 15 2148 00 76 .WORD SCREEN+#*SW 15 214A 5F .BYTE $5F 15 214B 80 76 .WORD SCREEN+#*SW 15 214D 5F .BYTE $5F 15 214E 00 77 .WORD SCREEN+#*SW 15 2150 5F .BYTE $5F 15 2151 80 77 .WORD SCREEN+#*SW 15 2153 5F .BYTE $5F 15 2154 00 78 .WORD SCREEN+#*SW 15 2156 5F .BYTE $5F 15 2157 80 78 .WORD SCREEN+#*SW 15 2159 5F .BYTE $5F 15 215A 00 79 .WORD SCREEN+#*SW 15 215C 5F .BYTE $5F 15 215D 80 79 .WORD SCREEN+#*SW 15 215F 5F .BYTE $5F 15 2160 00 7A .WORD SCREEN+#*SW 15 2162 5F .BYTE $5F 15 2163 80 7A .WORD SCREEN+#*SW 15 2165 5F .BYTE $5F 15 2166 00 7B .WORD SCREEN+#*SW 15 2168 5F .BYTE $5F 15 2169 80 7B .WORD SCREEN+#*SW 15 216B 5F .BYTE $5F 15 216C 00 7C .WORD SCREEN+#*SW 15 216E 5F .BYTE $5F 15 216F 80 7C .WORD SCREEN+#*SW 15 2171 5F .BYTE $5F 15 2172 00 7D .WORD SCREEN+#*SW 15 2174 5F .BYTE $5F 15 2175 80 7D .WORD SCREEN+#*SW 15 2177 5F .BYTE $5F 15 2178 00 7E .WORD SCREEN+#*SW 15 217A 5F .BYTE $5F 15 217B 80 7E .WORD SCREEN+#*SW 15 217D 5F .BYTE $5F 15 217E 00 7F .WORD SCREEN+#*SW 15 2180 5F .BYTE $5F 15 2181 80 7F .WORD SCREEN+#*SW Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 18 2183 41 .byte $41 19 2184 00 20 .word DL 20 2186 start 21 2186 A9 23 8D 2F 02 mva #%00100011 DMACTLS 22 218B A9 00 8D 30 02 A9 + mwa #dl DLPTRS 23 2195 A9 0C 8D 20 25 mva #12 move_scr.hscr_state ;hscroll initialisation 24 219A 8D 04 D4 sta HSCROL 25 26 219D A9 00 8D C5 02 mva #0 COLPF1S 27 21A2 A9 0F 8D C8 02 mva #$0F COLBAKS 28 21A7 A9 0F 8D C6 02 mva #$0f COLPF2S 29 30 31 21AC 20 FA 23 jsr sprites_init 32 21AF pause 1 Macro: PAUSE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 3 21AF A2 01 ldx #1 4 21B1 loop wait Macro: WAIT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 2 21B1 AD 0B D4 LDA VCOUNT 3 21B4 8D 0A D4 STA WSYNC 4 21B7 8D 0A D4 STA WSYNC 5 21BA 8D 0A D4 STA WSYNC 6 21BD CD 0B D4 @ CMP VCOUNT 7 21C0 D0 FB BNE @- Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 5 21C2 CA dex 6 21C3 D0 EC bne loop Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 33 21C5 20 89 23 jsr ground_init 34 35 21C8 A2 14 ldx #20 36 21CA A0 00 ldy #0 37 21CC 20 AA 23 jsr cactus 38 21CF A2 1E ldx #30 39 21D1 A0 01 ldy #1 40 21D3 20 AA 23 jsr cactus 41 21D6 A2 28 ldx #40 42 21D8 A0 02 ldy #2 43 21DA 20 AA 23 jsr cactus 44 45 21DD A2 00 xx ldx #0 ; anim phaze 46 21DF A0 36 yy ldy #54 47 21E1 20 32 24 jsr dino_pm 48 21E4 EE DE 21 AD DE 21 inc:lda xx+1 49 21EA C9 03 cmp #3 50 21EC D0 05 sne 51 21EE A9 00 8D DE 21 mva #0 xx+1 52 21F3 key Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 3 21F3 48 PHA 4 21F4 AD 0F D2 ?CK1 LDA SKSTAT 5 21F7 29 04 AND #$04 6 21F9 F0 F9 BEQ ?CK1 7 21FB AD 0F D2 ?CK LDA SKSTAT 8 21FE 29 04 AND #$04 9 2200 D0 F9 BNE ?CK 10 2202 68 PLA Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 53 2203 20 04 25 jsr move_scr 54 2206 4C DD 21 jmp xx 55 56 57 2209 llp 58 2209 A9 00 8D 51 22 mva #0 ntmp 59 220E lp 60 220E AE 51 22 ldx ntmp 61 2211 A0 62 ldy #98 62 2213 20 52 22 jsr dino 63 2216 key Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 3 2216 48 PHA 4 2217 AD 0F D2 ?CK1 LDA SKSTAT 5 221A 29 04 AND #$04 6 221C F0 F9 BEQ ?CK1 7 221E AD 0F D2 ?CK LDA SKSTAT 8 2221 29 04 AND #$04 9 2223 D0 F9 BNE ?CK 10 2225 68 PLA Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 64 2226 20 D5 22 jsr dino_clear 65 2229 key Macro: KEY [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 3 2229 48 PHA 4 222A AD 0F D2 ?CK1 LDA SKSTAT 5 222D 29 04 AND #$04 6 222F F0 F9 BEQ ?CK1 7 2231 AD 0F D2 ?CK LDA SKSTAT 8 2234 29 04 AND #$04 9 2236 D0 F9 BNE ?CK 10 2238 68 PLA Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 66 2239 EE 51 22 AD 51 22 inc:lda ntmp 67 223F C9 03 cmp #3 68 2241 D0 CB bne lp 69 2243 4C 09 22 jmp llp 70 71 72 2246 halt 03 Macro: HALT [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 1 2246 ?stop 3 2246 AD 0A D2 lda RANDOM 4 2249 29 03 and #03 5 224B 8D 1A D0 sta COLBAK 7 224E 4C 46 22 jmp ?stop Source: C:\jac\wudsn\Workspace\no_internet\ni.asm 73 74 02E0-02E1> 86 21 run start 75 2251-2ACB> 00 ntmp .by 0 76 77 2252 icl 'procs.asm' Source: C:\jac\wudsn\Workspace\no_internet\procs.asm 1 ; @com.wudsn.ide.asm.mainsourcefile=ni.asm 2 3 2252 .proc dino ; dino to the screen 4 ; uses: AXY tmp0 tmp1 tmp2 tmp3 5 ; Y - ypos in lines 6 ; X - dino phase (0,1,..) 7 8 = 0080 _dino = tmp ; _underscore means pointer here and else 9 = 0084 _mask = tmp1 ; local vars for reusing zero page variables 10 = 0086 _scr = tmp2 11 = 0088 _back = tmp3 12 2252 8C 25 27 sty dino_save_y ;save for clearing 13 ; get line address offset 14 2255 B9 5C 27 lda scr_addrs_l,y 15 2258 85 86 sta _scr 16 225A B9 DC 27 lda scr_addrs_h,y 17 225D 85 87 sta _scr+1 18 ; add x position (hardcoded, dino does not move) 19 225F 18 A5 86 69 0A 85 + adw _scr #10 20 ;was: mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen 21 22 226A BD D1 26 lda dino_tab_l,x 23 226D 85 80 sta _dino 24 226F BD D4 26 lda dino_tab_h,x 25 2272 85 81 sta _dino+1 26 27 2274 BD D7 26 lda dino_mask_tab_l,x 28 2277 85 84 sta _mask 29 2279 BD DA 26 lda dino_mask_tab_h,x 30 227C 85 85 sta _mask+1 31 32 227E A9 89 85 84 A9 26 + mwa #dino_mask2 _mask 33 2286 A9 DD 85 88 A9 26 + mwa #dino_back _back 34 228E A2 18 ldx #24 35 2290 loop1 36 2290 A0 00 ldy #0 37 2292 dn1 38 2292 B1 86 lda (_scr),y ; get screen contents 39 2294 91 88 sta (_back),y ; save background for sprite removal 40 2296 B1 84 lda (_mask),y ; mask 41 2298 49 FF eor #$ff ; inverse, 'cause mads does not inverse OK with '*' 42 229A 31 86 and (_scr),y ; get screen contents 43 229C 11 80 ora (_dino),y 44 229E 91 86 sta (_scr),y 45 22A0 C8 iny 46 22A1 C0 03 cpy #3 47 22A3 D0 ED bne dn1 48 22A5 18 A5 80 69 03 85 + adw _dino #3 49 22B0 18 A5 84 69 03 85 + adw _mask #3 50 22BB 18 A5 88 69 03 85 + adw _back #3 51 22C6 18 A5 86 69 80 85 + adw _scr #sw 52 22D1 CA dex 53 22D2 D0 BC bne loop1 54 22D4 60 rts 55 .endp 56 ;---------- 57 22D5 .proc dino_clear ; remove old dino 58 ; uses: AXY tmp2 tmp3 59 = 0086 _scr = tmp2 60 = 0088 _back = tmp3 61 22D5 AC 25 27 ldy dino_save_y ;ypos 62 ; get line address offset 63 22D8 B9 5C 27 lda scr_addrs_l,y 64 22DB 85 86 sta _scr 65 22DD B9 DC 27 lda scr_addrs_h,y 66 22E0 85 87 sta _scr+1 67 ; add x position (hardcoded, dino does not move) 68 22E2 18 A5 86 69 0A 85 + adw _scr #10 69 ;mwa #screen+10+96*sw scr_ ;10 = xpos, 96 == ypos on the screen 70 71 22ED A9 DD 85 88 A9 26 + mwa #dino_back _back 72 22F5 A2 18 ldx #24 73 22F7 loop1 74 22F7 A0 00 ldy #0 75 22F9 dn1 76 22F9 B1 88 lda (_back),y ; give back background for sprite removal 77 22FB 91 86 sta (_scr),y 78 22FD C8 iny 79 22FE C0 03 cpy #3 80 2300 D0 F7 bne dn1 81 2302 18 A5 88 69 03 85 + adw _back #3 82 230D 18 A5 86 69 80 85 + adw _scr #sw 83 2318 CA dex 84 2319 D0 DC bne loop1 85 231B 60 rts 86 .endp 87 ;---------- 88 231C .proc ground ; ground breaking, i.e. drawing 89 ; uses: AXY tmp1 tmp2 90 ; X: x on screen in words (2 bytes) 91 ; Y: ground tile number (0 - plain ground) 92 = 0084 _gnd = tmp1 93 = 0086 _scr = tmp2 94 95 231C B9 56 27 lda gnd_tab_l,y 96 231F 85 84 sta _gnd 97 2321 B9 59 27 lda gnd_tab_h,y 98 2324 85 85 sta _gnd+1 99 2326 A9 00 85 86 A9 78 + mwa #screen+112*sw _scr ;112 is ypos of ground level 100 232E 8A txa 101 232F 0A asl ;add X to xpos on screen 102 2330 18 clc 103 2331 65 86 adc _scr 104 2333 85 86 sta _scr 105 2335 90 02 scc 106 2337 E6 87 inc _scr+1 107 108 2339 A2 08 ldx #8 ; tile height in bytes 109 233B loop1 110 233B A0 00 ldy #0 111 233D @ 112 233D B1 84 lda (_gnd),y 113 233F 91 86 sta (_scr),y 114 2341 C8 iny 115 2342 C0 02 cpy #2 ; tile width in bytes 116 2344 D0 F7 bne @- 117 2346 18 A5 84 69 02 85 + adw _gnd #2 118 2351 18 A5 86 69 80 85 + adw _scr #sw ;next screen line 119 235C CA dex 120 235D D0 DC bne loop1 121 ; add some debris below 122 123 235F A2 06 ldx #6 ; debris height 124 2361 loop2 125 2361 A0 01 ldy #1 126 2363 @ 127 2363 AD 0A D2 lda RANDOM 128 2366 2D 0A D2 2D 0A D2 + :5 AND RANDOM 129 2375 91 86 sta (_scr),y 130 2377 88 dey 131 2378 10 E9 bpl @- 132 237A 18 A5 86 69 80 85 + adw _scr #sw ;next screen line 133 2385 CA dex 134 2386 10 D9 bpl loop2 135 136 2388 60 rts 137 .endp 138 2389 .proc ground_init ;draws first 48 segments of a ground 139 2389 A9 00 85 80 mva #0 tmp 140 238D ground_loop 141 238D A5 80 lda tmp 142 238F AA tax 143 2390 randomize 0 2 3 Macro: RANDOMIZE [Source: C:\jac\wudsn\Workspace\no_internet\macro.asm] 4 2390 ?rand 5 2390 AD 0A D2 lda random 7 2393 29 03 and #3 9 2395 C9 00 cmp #0 ;floor 10 2397 90 F7 bcc ?rand 11 2399 C9 03 cmp #2+1 ;ceiling 12 239B B0 F3 bcs ?rand Source: C:\jac\wudsn\Workspace\no_internet\procs.asm 144 239D A8 tay 145 239E 20 1C 23 jsr ground 146 23A1 E6 80 inc tmp 147 23A3 A5 80 lda tmp 148 23A5 C9 18 cmp #24 ; screen width in wide mode /2 149 23A7 D0 E4 bne ground_loop 150 23A9 60 rts 151 .endp 152 ;---------- 153 23AA .proc cactus ; drawing cactii 154 ; uses: AXY tmp1 tmp2 155 ; X: x on screen in bytes 156 ; Y: cactus number 157 ; draws from bottom up, utilising the fact that .bmp is saved this way 158 ; updt.: was not able to load .bmp files for unknown reason, so the pics are flipped with WUDSN script 159 160 = 0084 _cact = tmp1 161 = 0086 _scr = tmp2 162 163 23AA B9 C6 2A lda cact_tab_l,y 164 23AD 85 84 sta _cact 165 23AF B9 C9 2A lda cact_tab_h,y 166 23B2 85 85 sta _cact+1 167 23B4 A9 00 85 86 A9 7D + mwa #screen+122*sw _scr ;112 is ypos of bottom of the cactii 168 23BC 8A txa 169 23BD 18 clc 170 23BE 65 86 adc _scr 171 23C0 85 86 sta _scr 172 23C2 90 02 bcc no_inc 173 23C4 E6 87 inc _scr+1 174 23C6 no_inc 175 176 177 23C6 B9 C0 2A lda cact_widths,y 178 23C9 8D F9 23 sta cact_w ; width in bytes 179 180 23CC B9 C3 2A lda cact_heights,y 181 23CF AA tax 182 23D0 loop 183 23D0 A0 00 ldy #0 184 23D2 @ 185 23D2 B1 86 lda (_scr),y 186 23D4 11 84 ora (_cact),y 187 23D6 91 86 sta (_scr),y 188 23D8 C8 iny 189 23D9 CC F9 23 cpy cact_w 190 23DC D0 F4 bne @- 191 ;adw _cact cact_w ;!!!DOES NOT WORK :((((( 192 23DE 18 clc 193 23DF AD F9 23 lda cact_w 194 23E2 65 84 adc _cact 195 23E4 85 84 sta _cact 196 23E6 90 02 scc 197 23E8 E6 85 inc _cact+1 198 199 23EA 38 A5 86 E9 80 85 + sbw _scr #sw 200 23F5 CA dex 201 23F6 D0 D8 bne loop 202 23F8 60 rts 203 23F9 00 cact_w .by 0 204 .endp 205 ;---------- 206 207 23FA .proc sprites_init 208 ;setting up P/M graphics 209 23FA A9 90 lda #>pmgraph 210 23FC 8D 07 D4 sta pmbase 211 23FF AD 2F 02 lda dmactls 212 2402 09 0C ora #%00001100 ; Players and Missiles single lined 213 2404 8D 2F 02 sta dmactls 214 2407 A9 03 lda #$03 ; P/M on 215 2409 8D 1D D0 sta pmcntl 216 240C A9 00 lda #$00 217 240E 8D 0C D0 sta sizem ; there will be only M0, double width 218 2411 8D 08 D0 sta sizep0 ; P0-P3 widths 219 2414 8D 09 D0 sta sizep0+1 220 2417 8D 0A D0 sta sizep0+2 221 241A 8D 0B D0 sta sizep0+3 222 241D A9 11 lda #$11 ; P/M priorities (bit 4 joins missiles), bit 0 - players on top 223 241F 8D 6F 02 sta gtictls 224 /* 225 ; temporary colours of sprites 226 mva #$52 COLPM0 227 mva #$34 COLPM1 228 mva #$76 COLPM2 229 mva #$90 COLPM3 230 mva #$B0 COLPF3S 231 */ 231 232 = 002A dx = 42 233 2422 A9 2A 8D 00 D0 mva #dx HPOSP0 234 2427 A9 32 8D 01 D0 mva #dx+8 HPOSP1 235 242C A9 3A 8D 02 D0 MVA #dx+8*2 HPOSP2 236 237 2431 60 rts 238 .endp 239 240 2432 .proc dino_pm 241 ; uses: AXY tmp tmp1 tmp2 tmp3 242 ; X: dino animation phase 243 ; Y: Y position of dino 244 245 = 0084 _dino = tmp1 ; _underscore means pointer here and else 246 = 0086 _dino_sav = tmp2 ; local vars for reusing zero page variables 247 = 0088 _spr = tmp3 248 ;tmp = tmp 249 250 2432 AD E1 24 8D E2 24 mva dino_save_pm_y dino_save_pm_y_prev 251 2438 8C E1 24 sty dino_save_pm_y ;save for clearing 252 253 254 243B BD D1 26 lda dino_tab_l,x 255 ;sta _dino 256 243E 85 86 sta _dino_sav 257 2440 BD D4 26 lda dino_tab_h,x 258 ;sta _dino+1 259 2443 85 87 sta _dino_sav+1 260 261 262 2445 A9 00 8D E0 24 mva #0 counter 263 264 244A loop0 265 ; sprite address calc 266 244A A9 00 85 88 A9 92 + mwa #(pmgraph+$200) _spr ;1st sprite starts at PMBASE + $200 267 ;counter *$80 268 2452 A9 80 85 80 A9 FF + mwa #-$80 tmp ;so first add gives "0" 269 245A AC E0 24 ldy counter 270 245D @ 271 245D 18 A5 80 69 80 85 + adw tmp #$80 ;tmp = counter*$80 - calc addr of the sprite to put gfx 272 2468 88 dey 273 2469 10 F2 bpl @- 274 275 246B 18 A5 88 65 80 85 + adw _spr tmp 276 2478 A5 88 85 80 A5 89 + mwa _spr tmp ; save address - it will be used in clearing and then drawing 277 278 2480 AD E2 24 lda dino_save_pm_y_prev ;clearing old sprite, same way as drawing a new one 279 2483 18 clc ;add ypos to the sprite address 280 2484 65 88 adc _spr 281 2486 85 88 sta _spr 282 ;scc 283 ;inc _spr+1 ;not necessary, sprites are not crossing pages 284 285 2488 A0 00 ldy #0 ;delete old sprite here 286 248A 98 tya 287 248B A2 18 ldx #24 ;dino height 288 248D @ 289 248D 91 88 sta (_spr),y 290 248F C8 iny 291 2490 CA dex 292 2491 D0 FA bne @- 293 294 295 296 ;-------------------------- 297 2493 A5 80 85 88 A5 81 + mwa tmp _spr 298 249B AD E1 24 lda dino_save_pm_y ;drawing sprite at a new position 299 249E 18 clc ;add ypos to the sprite address 300 249F 65 88 adc _spr 301 24A1 85 88 sta _spr 302 ;scc 303 ;inc _spr+1 ;not necessary, sprites are not crossing pages 304 305 306 24A3 18 clc ;beginning of the next column of dino to the sprite 307 24A4 A5 86 lda _dino_sav ;0- first column, 1 - 2nd, 2 - 3rd 308 24A6 6D E0 24 adc counter 309 24A9 85 84 sta _dino 310 ;bcc @+ ;needs to be removed as both bytes must be copied 311 24AB A5 87 lda _dino_sav+1 ;original address 312 24AD 69 00 adc #0 313 24AF 85 85 sta _dino+1 314 ;@ 315 316 24B1 A0 00 ldy #0 317 318 24B3 A2 18 ldx #24 ;dino height 319 24B5 @ 320 24B5 B1 84 lda (_dino),y 321 24B7 91 88 sta (_spr),y 322 24B9 18 A5 84 69 03 85 + adw _dino #3 ;+3 ==> next line in dino 323 24C4 18 A5 88 69 01 85 + adw _spr #1 324 24CF CA dex 325 24D0 D0 E3 bne @- 326 327 328 329 24D2 EE E0 24 AD E0 24 inc:lda counter 330 24D8 C9 03 cmp #3 331 24DA F0 03 4C 4A 24 jne loop0 332 333 334 335 24DF 60 rts 336 24E0 00 counter .by 0 337 24E1 00 dino_save_pm_y .by 0 338 24E2 00 dino_save_pm_y_prev .by 0 339 340 .endp 341 342 24E3 .proc move_dl ;screen window one byte right 343 ;uses: AXY 344 345 24E3 A9 04 8D F0 24 A9 + mwa #dl_addrs+1 incr+1 ;self mod 346 24ED A2 80 ldx #sh 347 24EF EE FF FF incr inc $ffff 348 24F2 18 AD F0 24 69 03 + adw incr+1 #3 349 2500 CA dex 350 2501 D0 EC bne incr 351 2503 60 rts 352 .endp 353 354 2504 .proc move_scr ;screen window one step (1/4 th of byte) right 355 2504 CE 20 25 AD 20 25 dec:lda hscr_state 356 250A 8D 04 D4 sta HSCROL 357 250D C9 04 cmp #4 358 250F D0 0E bne @+ 359 2511 A9 0C 8D 20 25 mva #12 hscr_state 360 2516 8D 04 D4 sta HSCROL 361 2519 20 E3 24 jsr move_dl 362 251C 20 E3 24 jsr move_dl 363 251F @ 364 251F 60 rts 365 2520 00 hscr_state .by 0 366 .endp 78 2521 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 2521 DINO0 5 2521 00 00 00 00 03 FC + INS 'art/dino0.data' 5 2569 DINO1 5 2569 00 00 00 00 03 FC + INS 'art/dino1.data' 5 25B1 DINO2 5 25B1 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 25F9 DINO_MASK0 10 25F9 FF F8 01 FF F0 00 + INS 'art/dino_mask0.data' 10 2641 DINO_MASK1 10 2641 FF F8 01 FF F0 00 + INS 'art/dino_mask1.data' 10 2689 DINO_MASK2 10 2689 00 07 FE 00 0F FF + INS 'art/dino_mask2.data' Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 13 14 26D1 dino_tab_l 15 .rept 3, # 16 .BY DINO:1 21 .ENDR 21 .endr Source: REPT 20 26D4 25 .BY >DINO0 20 26D5 25 .BY >DINO1 20 26D6 25 .BY >DINO2 Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 22 23 26D7 dino_mask_tab_l 24 .rept 3, # 25 .BY DINO_MASK:1 30 .ENDR 30 .endr Source: REPT 29 26DA 25 .BY >DINO_MASK0 29 26DB 26 .BY >DINO_MASK1 29 26DC 26 .BY >DINO_MASK2 Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 31 32 26DD dino_back ; background save for dino sprite 33 26DD 00 00 00 00 00 00 + :3*24 .by 0 34 2725 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 2726 GND_0 39 2726 00 00 00 00 00 00 + INS 'art/gnd_0.data' 39 2736 GND_1 39 2736 03 F0 06 18 1C 0C + INS 'art/gnd_1.data' 39 2746 GND_2 39 2746 00 00 00 00 00 00 + INS 'art/gnd_2.data' Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 42 2756 gnd_tab_l 43 .rept 3, # 44 .BY GND_:1 49 .ENDR 49 .endr Source: REPT 48 2759 27 .BY >GND_0 48 275A 27 .BY >GND_1 48 275B 27 .BY >GND_2 Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 50 275C scr_addrs_l 51 275C 00 80 00 80 00 80 + :sh .by <(screen+#*sw) 52 27DC scr_addrs_h 53 27DC 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 285C CACT0 60 285C 00 00 00 00 03 E0 + INS 'art/cact0.data' 60 28E8 CACT1 60 28E8 00 00 00 00 00 7F + INS 'art/cact1.data' 60 29A8 CACT2 60 29A8 00 00 00 00 00 00 + INS 'art/cact2.data' Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 63 64 2AC0 cact_widths ; widths of cactii in bytes 65 2AC0 04 04 08 .by 4, 4, 8 66 2AC3 cact_heights ; heights of cactii in lines 67 2AC3 23 30 23 .by 35,48,35 68 2AC6 cact_tab_l 69 .rept cacti, # 70 .BY CACT:1 75 .ENDR 75 .endr Source: REPT 74 2AC9 28 .BY >CACT0 74 2ACA 28 .BY >CACT1 74 2ACB 29 .BY >CACT2 Source: C:\jac\wudsn\Workspace\no_internet\artwork.asm 76