mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
1100 lines
48 KiB
Plaintext
1100 lines
48 KiB
Plaintext
mads 2.1.3
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/program.asm
|
|
1 ; @com.wudsn.ide.asm.mainsourcefile=program.asm
|
|
2 ;Atari 8-bit Scorched Earth source code
|
|
3 ;---------------------------------------------------
|
|
4 ;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski
|
|
5 ;Warsaw 2000,2001,2002,2003,2009,2012,2013
|
|
6 ;you can contact us at pecus@poczta.fm or pirx@91.pl
|
|
7 ;home page of this project is http://pecus.pigwa.net/pliki/Atari/scorch/
|
|
8
|
|
9 ;this source code was compiled under OMC65 crossassembler
|
|
10 ;and on 2012-06-21 translated to mads
|
|
11 ;
|
|
12 ;game source code is split into 5+1 parts:
|
|
13 ;program.asm is the main game code (with many assorted routines)
|
|
14 ;grafproc.asm - graphics routines like line or circle
|
|
15 ;textproc.asm - text routines like list of weapons and shop
|
|
16 ;variables.asm - all non-zero page variables and constans
|
|
17 ;display.asm - display lists and text screen definitions
|
|
18 ;ai.asm - artificial stupidity of the computer players
|
|
19
|
|
20 ;we were trying to use as much macros and pseudoops as possible
|
|
21 ;they are defined in atari.hea and macro.hea files together with many
|
|
22 ;atari constans. This way it shoud be relatively easy to
|
|
23 ;port this code to e.g. C64
|
|
24 ;
|
|
25 ;After those N years of working on this piece of code
|
|
26 ;we are sure it would be much wiser to write it in C or
|
|
27 ;Action!, but on the other hand it is so much fun to type 150 chars
|
|
28 ;where you want to have y=ax+b :)
|
|
29 ;
|
|
30 ;originally most variables were in Polish, comments were sparse
|
|
31 ;but we wanted to release this piece of code to public
|
|
32 ;and due to being always short of time (to finish the game)
|
|
33 ;we decided it must go in 'English' to let other people work on it
|
|
34
|
|
35 .zpvar xdraw .word = $80 ;variable X for plot
|
|
36 .zpvar ydraw .word;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen)
|
|
37 .zpvar xbyte .word
|
|
38
|
|
39 .zpvar ybyte .word
|
|
40 .zpvar CharCode .byte
|
|
41 .zpvar fontind .word
|
|
42 .zpvar tanknr .byte
|
|
43 .zpvar TankSequencePointer .byte
|
|
44 .zpvar oldplot .word
|
|
45 .zpvar xc .word
|
|
46 .zpvar temp .word ;temporary word for the most embeded loops only
|
|
47 .zpvar temp2 .word;same as above
|
|
48 .zpvar tempXROLLER .word;same as above for XROLLER routine
|
|
49 ;(used also in result display routine)
|
|
50 .zpvar xtempDRAW .word ;same as above for XDRAW routine
|
|
51 .zpvar ytempDRAW .word ;same as above for XDRAW routine
|
|
52 ;--------------temps used in circle routine
|
|
53 .zpvar xi .word ;X (word) in draw routine
|
|
54 .zpvar fx .byte ;circle drawing variables
|
|
55 .zpvar yi .word ;Y (word) in draw routine
|
|
56 .zpvar fy .byte
|
|
57 .zpvar xk .word
|
|
58 .zpvar fs .byte
|
|
59 .zpvar yc .byte ;ycircle - temporary for circle
|
|
60 .zpvar dx .word
|
|
61 .zpvar tempor2 .byte
|
|
62 .zpvar dy .word
|
|
63 .zpvar tempor3 .word
|
|
64 .zpvar dd .word
|
|
65 .zpvar di .word
|
|
66 .zpvar dp .word
|
|
67 .zpvar modify .word
|
|
68 .zpvar weaponPointer .word
|
|
69
|
|
70 ;-------------------------------
|
|
71 ;constants
|
|
72 = 0096 FlyDelay = 150
|
|
73 = 00C8 screenheight = 200
|
|
74 = 0028 screenBytes = 40
|
|
75 = 0140 screenwidth = screenBytes*8
|
|
76 = 0030 margin = 48 ;mountain drawing Y variable margin
|
|
77 = 1010 display = $1010 ;kill dos with the casette recorder!
|
|
78 = 0006 MaxPlayers = 6
|
|
79
|
|
80 icl 'lib/atari.hea'
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/lib/atari.hea
|
|
1 .enum @dmactl
|
|
2 = 0000 blank = %00
|
|
3 = 0001 narrow = %01
|
|
4 = 0002 standard= %10
|
|
5 = 0003 wide = %11
|
|
6 = 0004 missiles= %100
|
|
7 = 0008 players = %1000
|
|
8 = 0010 lineX1 = %10000
|
|
9 = 0000 lineX2 = %00000
|
|
10 = 0020 dma = %100000
|
|
11 .ende
|
|
12
|
|
13 = 003F scr48 = @dmactl(wide|dma|players|missiles|lineX1) ;screen 48b
|
|
14 = 003E scr40 = @dmactl(standard|dma|players|missiles|lineX1) ;screen 40b
|
|
15 = 003D scr32 = @dmactl(narrow|dma|players|missiles|lineX1) ;screen 32b
|
|
16
|
|
17 .enum @pmcntl
|
|
18 = 0001 missiles= %1
|
|
19 = 0002 players = %10
|
|
20 = 0004 trigs = %100
|
|
21 .ende
|
|
22
|
|
23 .enum @gtictl
|
|
24 = 0000 prior0 = %0
|
|
25 = 0001 prior1 = %1
|
|
26 = 0002 prior2 = %10
|
|
27 = 0004 prior4 = %100
|
|
28 = 0008 prior8 = %1000
|
|
29 = 0010 ply5 = %10000 ; Fifth Player Enable
|
|
30 = 0020 mlc = %100000 ; Multiple Color Player Enable
|
|
31 = 0040 mode9 = %01000000
|
|
32 = 0080 mode10 = %10000000
|
|
33 = 00C0 mode11 = %11000000
|
|
34 .ende
|
|
35
|
|
36
|
|
37 * ---------------------------------------------------------------------------------------------
|
|
38 * --- GTIA
|
|
39 * ---------------------------------------------------------------------------------------------
|
|
40 = D000 HPOSP0 = $D000 ; pozioma pozycja gracza 0 (Z)
|
|
41 = D001 HPOSP1 = $D001 ; pozioma pozycja gracza 1 (Z)
|
|
42 = D002 HPOSP2 = $D002 ; pozioma pozycja gracza 2 (Z)
|
|
43 = D003 HPOSP3 = $D003 ; pozioma pozycja gracza 3 (Z)
|
|
44 = D004 HPOSM0 = $D004 ; pozioma pozycja pocisku 0 (Z)
|
|
45 = D005 HPOSM1 = $D005 ; pozioma pozycja pocisku 1 (Z)
|
|
46 = D006 HPOSM2 = $D006 ; pozioma pozycja pocisku 2 (Z)
|
|
47 = D007 HPOSM3 = $D007 ; pozioma pozycja pocisku 3 (Z)
|
|
48 = D008 SIZEP0 = $D008 ; poziomy rozmiar gracza 0 (Z)
|
|
49 = D009 SIZEP1 = $D009 ; poziomy rozmiar gracza 1 (Z)
|
|
50 = D00A SIZEP2 = $D00A ; poziomy rozmiar gracza 2 (Z)
|
|
51 = D00B SIZEP3 = $D00B ; poziomy rozmiar gracza 3 (Z)
|
|
52 = D00C SIZEM = $D00C ; poziomy rozmiar pocisk�w (Z)
|
|
53 = D00D GRAFP0 = $D00D ; rejestr grafiki gracza 0 (Z)
|
|
54 = D00E GRAFP1 = $D00E ; rejestr grafiki gracza 1 (Z)
|
|
55 = D00F GRAFP2 = $D00F ; rejestr grafiki gracza 2 (Z)
|
|
56 = D010 GRAFP3 = $D010 ; rejestr grafiki gracza 3 (Z)
|
|
57 = D011 GRAFM = $D011 ; rejestr grafiki pocisk�w (Z)
|
|
58 = D012 COLPM0 = $D012 ; rejestr koloru gracza i pocisku 0 (Z)
|
|
59 = D013 COLPM1 = $D013 ; rejestr koloru gracza i pocisku 1 (Z)
|
|
60 = D014 COLPM2 = $D014 ; rejestr koloru gracza i pocisku 2 (Z)
|
|
61 = D015 COLPM3 = $D015 ; rejestr koloru gracza i pocisku 3 (Z)
|
|
62 = D016 COLPF0 = $D016 ; rejestr koloru pola gry 0 (Z)
|
|
63 = D017 COLPF1 = $D017 ; rejestr koloru pola gry 1 (Z)
|
|
64 = D018 COLPF2 = $D018 ; rejestr koloru pola gry 2 (Z)
|
|
65 = D019 COLPF3 = $D019 ; rejestr koloru pola gry 3 (Z)
|
|
66 = D01A COLBAK = $D01A ; rejestr koloru t�a (Z)
|
|
67
|
|
68 = D016 COLOR0 = colpf0
|
|
69 = D017 COLOR1 = colpf1
|
|
70 = D018 COLOR2 = colpf2
|
|
71 = D019 COLOR3 = colpf3
|
|
72
|
|
73 = D000 KOLM0PF = $D000 ; kolizja pocisku 0 z polem gry (O)
|
|
74 = D001 KOLM1PF = $D001 ; kolizja pocisku 1 z polem gry (O)
|
|
75 = D002 KOLM2PF = $D002 ; kolizja pocisku 2 z polem gry (O)
|
|
76 = D003 KOLM3PF = $D003 ; kolizja pocisku 3 z polem gry (O)
|
|
77 = D004 KOLP0PF = $D004 ; kolizja gracza 0 z polem gry (O)
|
|
78 = D005 KOLP1PF = $D005 ; kolizja gracza 1 z polem gry (O)
|
|
79 = D006 KOLP2PF = $D006 ; kolizja gracza 2 z polem gry (O)
|
|
80 = D007 KOLP3PF = $D007 ; kolizja gracza 3 z polem gry (O)
|
|
81 = D008 KOLM0P = $D008 ; kolizja pocisku 0 z graczem (O)
|
|
82 = D009 KOLM1P = $D009 ; kolizja pocisku 1 z graczem (O)
|
|
83 = D00A KOLM2P = $D00A ; kolizja pocisku 2 z graczem (O)
|
|
84 = D00B KOLM3P = $D00B ; kolizja pocisku 3 z graczem (O)
|
|
85 = D00C KOLP0P = $D00C ; kolizja gracza 0 z innym graczem (O)
|
|
86 = D00D KOLP1P = $D00D ; kolizja gracza 1 z innym graczem (O)
|
|
87 = D00E KOLP2P = $D00E ; kolizja gracza 2 z innym graczem (O)
|
|
88 = D00F KOLP3P = $D00F ; kolizja gracza 3 z innym graczem (O)
|
|
89 = D010 TRIG0 = $D010 ; stan przycisku joysticka 0 (O)
|
|
90 = D011 TRIG1 = $D011 ; stan przycisku joysticka 1 (O)
|
|
91 = D013 TRIG3 = $D013 ; znacznik do��czenia cartridge-a (O)
|
|
92 = D014 PAL = $D014 ; znacznik systemu TV (O)
|
|
93
|
|
94 = D01B GTICTL = $D01B ; rejestr kontroli uk�adu GTIA
|
|
95 = D01B GTIACTL = gtictl
|
|
96
|
|
97 = D01C VDELAY = $D01C ; licznik op�nienia pionowego P/MG
|
|
98 = D01D PMCNTL = $D01D ; rejestr kontroli graczy i pocisk�w
|
|
99 = D01E HITCLR = $D01E ; rejestr kasowania rejestr�w kolizji
|
|
100 = D01F CONSOL = $D01F ; rejestr stanu klawiszy konsoli Start (bit 0), Select (bit 1), Option (bit 2)
|
|
101
|
|
102 * ---------------------------------------------------------------------------------------------
|
|
103 * --- POKEY
|
|
104 * ---------------------------------------------------------------------------------------------
|
|
105
|
|
106 = 0010 IRQENS = $0010 ; rejestr-cie� IRQEN
|
|
107 = 0011 IRQSTAT = $0011 ; rejestr-cie� IRQST
|
|
108
|
|
109 = D204 AUDF3 = $D204 ; cz�stotliwo�� pracy generatora 3 (Z)
|
|
110 = D208 AUDCTL = $D208 ; rejestr kontroli generator�w d�wi�ku (Z)
|
|
111 = D209 STIMER = $D209 ; rejestr zerowania licznik�w (Z)
|
|
112 = D209 KBCODE = $D209 ; kod ostatnio naci�ni�tego klawisza (O)
|
|
113 = D20A SKSTRES = $D20A ; rejestr statusu z��cza szeregowego (Z)
|
|
114 = D20A RANDOM = $D20A ; rejestr liczby losowej (O)
|
|
115 = D20D SEROUT = $D20D ; szeregowy rejestr wyj�ciowy (Z)
|
|
116 = D20D SERIN = $D20D ; szeregowy rejestr wej�ciowy (O)
|
|
117 = D20E IRQEN = $D20E ; zezwolenie przerwa� IRQ (Z)
|
|
118 = D20E IRQST = $D20E ; status przerwa� IRQ (O)
|
|
119 = D20F SKCTL = $D20F ; rejestr kontroli z��cza szeregowego (Z)
|
|
120 = D20F SKSTAT = $D20F ; rejestr statusu z��cza szeregowego (O)
|
|
121
|
|
122 * ---------------------------------------------------------------------------------------------
|
|
123 * --- PIA
|
|
124 * ---------------------------------------------------------------------------------------------
|
|
125 = D300 PORTA = $D300 ; port A uk�adu PIA
|
|
126 = D301 PORTB = $D301 ; port B uk�adu PIA
|
|
127 = D302 PACTL = $D302 ; rejestr kontroli portu A
|
|
128 = D303 PBCTL = $D303 ; rejestr kontroli portu B
|
|
129
|
|
130 * ---------------------------------------------------------------------------------------------
|
|
131 * --- ANTIC
|
|
132 * ---------------------------------------------------------------------------------------------
|
|
133 = D400 DMACTL = $D400 ; rejestr kontroli dost�pu do pami�ci
|
|
134 = D401 CHRCTL = $D401 ; rejestr kontroli wy�wietlania znak�w
|
|
135 = D402 DLPTR = $D402 ; adres programu ANTIC-a
|
|
136 = D404 HSCROL = $D404 ; znacznik poziomego przesuwu obrazu
|
|
137 = D405 VSCROL = $D405 ; znacznik pionowego przesuwu obrazu
|
|
138 = D407 PMBASE = $D407 ; adres pami�ci graczy i pocisk�w
|
|
139 = D409 CHBASE = $D409 ; adres zestawu znak�w
|
|
140 = D40A WSYNC = $D40A ; znacznik oczekiwania na synchronizacj� poziom�
|
|
141 = D40B VCOUNT = $D40B ; licznik linii obrazu
|
|
142 = D40C LPENH = $D40C ; poziome po�o�enie pi�ra �wietlengo
|
|
143 = D40D LPENV = $D40D ; pionowe po�o�enie pi�ra �wietlnego
|
|
144 = D40E NMIEN = $D40E ; rejestr zezwole� na przerwania NMI
|
|
145 = D40F NMIST = $D40F ; rejestr statusu przerwa� NMI
|
|
146
|
|
147 ;-------------------------------------
|
|
148 ;additional system variables
|
|
149 ;-------------------------------------
|
|
150 = 02C0 COLPM0S = $02C0 ;- - rejestr-cie� COLPM0
|
|
151 = 02C1 COLPM1S = $02C1 ;- - rejestr-cie� COLPM1
|
|
152 = 02C2 COLPM2S = $02C2 ;- - rejestr-cie� COLPM2
|
|
153 = 02C3 COLPM3S = $02C3 ;- - rejestr-cie� COLPM3
|
|
154 = 02C4 COLPF0S = $02C4 ;- - rejestr-cie� COLPF0
|
|
155 = 02C5 COLPF1S = $02C5 ;- - rejestr-cie� COLPF1
|
|
156 = 02C6 COLPF2S = $02C6 ;- - rejestr-cie� COLPF2
|
|
157 = 02C7 COLPF3S = $02C7 ;- - rejestr-cie� COLPF3
|
|
158
|
|
159 = 02C8 COLBAKS = $02C8
|
|
160 = 026F GTICTLS = $026F ;- - rejestr-cie� GTIACTL
|
|
161
|
|
162 = 022F DMACTLS = $022F ;- - rejestr kontroli dost�pu do pami�ci - cie�
|
|
163 = 0230 DLPTRS = $0230 ;- - adres programu ANTIC-a - cie�
|
|
164 = 02F4 CHBAS = $02F4 ;- - rejestr-cie� CHBASE
|
|
165 = 02FC KBCODES = $02FC ;- - rejestr-cie� KBCODE
|
|
166
|
|
167 = E45C SETVBV = $E45C
|
|
168 = E462 XITVBV = $E462
|
|
169 = E45F SYSVBV = $E45F
|
|
170 = 0012 RTCLOK = $0012
|
|
171
|
|
172 = 02E5 MEMTOP = $02E5 ;- - adres g�rnej granicy wolnej pami�ci RAM
|
|
173 = 02E7 MEMLO = $02E7 ;- - adres dolnej granicy wolnej pami�ci RAM
|
|
174
|
|
175 = 0278 JSTICK0 = $0278 ;- - po�o�enie joysticka 0
|
|
176 = 0279 JSTICK1 = $0279 ;- JSTICK1 - po�o�enie joysticka 1
|
|
177 = 027A JSTICK2 = $027A ;- JSTICK2 - po�o�enie joysticka 0
|
|
178 = 027B JSTICK3 = $027B ;- JSTICK3 - po�o�enie joysticka 1
|
|
179 = 027C PTRIG0 = $027C ;- PTRIG0 - przycisk potencjometru 0
|
|
180 = 027D PTRIG1 = $027D ;- PTRIG1 - przycisk potencjometru 1
|
|
181 = 0284 TRIG0S = $0284 ;- TRIG0S - przycisk joysticka 0, rejestr-cie� TRIG0
|
|
182 = 0285 TRIG1S = $0285 ;- TRIG1S - przycisk joysticka 1, rejestr-cie� TRIG1
|
|
183 = 0286 TRIG2S = $0286 ;- TRIG2S - rejestr-cie� TRIG0
|
|
184 = 0287 TRIG3S = $0287 ;- TRIG3S - rejestr-cie� TRIG1
|
|
185
|
|
186
|
|
187 /*
|
|
188 Rejestry OS w pami�ci RAM
|
|
189
|
|
190 $08 - WARMST - znacznik gor�cego startu
|
|
191 $0E - APPMHI - najwy�szy adres RAM zaj�ty przez program
|
|
192 $10 - IRQENS - rejestr-cie� IRQEN
|
|
193 $11 - IRQSTAT - rejestr-cie� IRQST
|
|
194 $12 - RTCLOK - zegar czasu rzeczywistego
|
|
195 $15 - BUFADR - adres bufora dla operacji dyskowych
|
|
196 $17 - ICCOMT - rejestr przej�ciowy kodu operacji I/O
|
|
197 $20 - ZIOCB - zerostronicowy blok kontroli I/O
|
|
198 $20 - ICHIDZ - indeks wpisu urz�dzenia w HATABS
|
|
199 $21 - ICDNOZ - numer urz�dzenia
|
|
200 $22 - ICCOMZ - kod operacji wej�cia/wyj�cia
|
|
201 $23 - ICSTZ - status operacji wej�cia/wyj�cia
|
|
202 $24 - ICBAZ - adres bufora danych dla operacji I/O
|
|
203 $26 - ICPTZ - adres procedury obs�ugi dla operacji
|
|
204 $28 - ICBLZ - d�ugo�� bufora danych dla operacji I/O
|
|
205 $2A - ICAX1Z - rejestr pomocniczy ZIOCB
|
|
206 $2B - ICAX2Z - rejestr pomocniczy ZIOCB
|
|
207 $2C - ICAX3Z - rejestr pomocniczy ZIOCB
|
|
208 $2D - ICAX4Z - rejestr pomocniczy ZIOCB
|
|
209 $2E - ICAX5Z - rejestr pomocniczy ZIOCB
|
|
210 $2F - ICAX6Z - rejestr pomocniczy ZIOCB
|
|
211 $30 - STATUS - status aktualnej operacji SIO
|
|
212 $31 - CHKSUM - suma kontrolna dla operacji SIO
|
|
213 $32 - BUFR - adres bufora danych dla SIO
|
|
214 $34 - BUFEN - adres ko�ca bufora danych dla SIO
|
|
215 $36 - LTEMP - pomocniczy wektor odczytu listy liniowej
|
|
216 $38 - BUFRFL - znacznik zape�nienia bufora SIO
|
|
217 $39 - RECVND - znacznik ko�ca odczytu
|
|
218 $3A - XMTDON - znacznik ko�ca transmisji
|
|
219 $3B - CHKSNT - znacznik nadania sumy kontrolnej
|
|
220 $3C - NOCKSM - znacznik braku sumy kontrolnej
|
|
221 $3D - BPTR - licznik bufora magnetofonu
|
|
222 $3E - GAPTYP - znacznik d�ugo�ci przerwy mi�dzy blokami
|
|
223 $3F - FEOF - znacznik ko�ca zbioru
|
|
224 $40 - FREQ - licznik d�wi�ku przy otwarciu magnetofonu
|
|
225 $41 - IOSNDEN - znacznik d�wi�ku przy transmisji
|
|
226 $42 - CRITIC - znacznik krytycznych czasowo operacji I/O
|
|
227 $4A - ZCHAIN - rejestr nast�pstwa listy liniowej
|
|
228 $4C - DSTAT - status klawiatury i ekranu
|
|
229 $50 - TEMP - pomocniczy rejestr przej�ciowy
|
|
230 $51 - HOLD1 - pomocniczy rejestr przej�ciowy
|
|
231 $52 - LMARGIN - lewy margines obrazu
|
|
232 $53 - RMARGIN - prawy margines obrazu
|
|
233 $54 - ROWCRS - pionowa pozycja kursora
|
|
234 $55 - COLCRS - pozioma pozycja kursora
|
|
235 $57 - DINDEX - numer trybu graficznego OS
|
|
236 $58 - SAVMSC - adres pami�ci obrazu
|
|
237 $5A - OLDROW - poprzednia pionowa pozycja kursora
|
|
238 $5B - OLDCOL - poprzednia pozioma pozycja kursora
|
|
239 $5D - OLDCHR - poprzedni znak na ekranie
|
|
240 $5E - OLDADR - poprzedni adres znaku na ekranie
|
|
241 $60 - FKDEFP - wektor tabeli definicji klawiszy F1-F4
|
|
242 $62 - PALNTS - wska�nik systemu TV
|
|
243 $63 - LOGCOL - adres kursora w wierszu logicznym
|
|
244 $64 - ADRESS - rejestr adresowy dla procedur edytora
|
|
245 $66 - MLTTMP - pomocniczy rejestr przej�ciowy
|
|
246 $68 - SAVADR - pomocniczy rejestr adresowy
|
|
247 $6A - RAMTOP - liczba stron pami�ci RAM
|
|
248 $6B - BUFCNT - licznik bufora edytora
|
|
249 $6C - BUFSTR - adres bufora dla edytora
|
|
250 $6E - BITMSK - maska bitowa do wy�wietlenia znaku
|
|
251 $6F - SHFAMT - liczba przesuni�� punktu
|
|
252 $70 - ROWAC - aktualny wiersz przy rysowaniu
|
|
253 $72 - COLAC - aktualna kolumna przy rysowaniu
|
|
254 $74 - ENDPT - znacznik ko�ca rysowanej linii
|
|
255 $76 - DELTAR - przyrost pionowej pozycji kursora
|
|
256 $77 - DELTAC - przyrost poziomej pozycji kursora
|
|
257 $79 - KEYDEFP - wektor tabeli definicji klawiszy
|
|
258 $7B - SWPFLG - znacznik kursora w trybach z oknem
|
|
259 $7C - HOLDCH - przechowywanie warto�ci znaku
|
|
260 $7D - INSDAT - rejestr pomocniczy edytora
|
|
261 $7E - COUNTR - licznik pami�ci obrazu dla DOSCR i DRAW
|
|
262 $0100 - STACK - stos mikroprocesora 6502
|
|
263 $0200 - DLIV - wektor przerwania programu ANTIC-a
|
|
264 $0210 - VTIMR1 - wektor przerwania licznika 1 POKEY-a
|
|
265 $0212 - VTIMR2 - wektor przerwania licznika 2 POKEY-a
|
|
266 $0214 - VTIMR4 - wektor przerwania licznika 4 POKEY-a
|
|
267 $0218 - TIMCNT1 - pierwszy licznik systemu
|
|
268 $0226 - TIMVEC1 - wektor przerwania licznika TIMCNT1
|
|
269 $022A - TIMFLG3 - znacznik wyzerowania licznika TIMCNT3
|
|
270 $022F - DMACTLS - rejestr-cie� DMACTL
|
|
271 $0230 - DLPTRS - rejestr-cie� DLPTR
|
|
272 $0232 - SKCTLS - rejestr-cie� SKCTL
|
|
273 $0233 - LCOUNT - licznik odczytu dla nowego urz�dzenia
|
|
274 $0234 - LPENHS - rejestr-cie� LPENH
|
|
275 $0235 - LPENVS - rejestr-cie� LPENV
|
|
276 $023A - CDEVIC - kod urz�dzenia dla SIO
|
|
277 $023B - CCMND - kod operacji dla SIO
|
|
278 $023C - CAUX1 - pierwszy bajt pomocniczy dla SIO
|
|
279 $023D - CAUX2 - drugi bajt pomocniczy dla SIO
|
|
280 $023E - TEMP - tymczasowy rejestr odpowiedzi urz�dzenia
|
|
281 $023F - ERRFLG - znacznik b��du operacji SIO
|
|
282 $0244 - COLDST - znacznik zimnego startu systemu
|
|
283 $0245 - RECLEN - d�ugo�� rekordu z nowego urz�dzenia
|
|
284 $0246 - DSKTIM - warto�� Timeout dla stacji dysk�w
|
|
285 $0247 - PDVMSK - maska obecno�ci nowych urz�dze�
|
|
286 $0248 - PDVRS - rejestr-cie� PDVREG
|
|
287 $024A - RELADR - adres procedury przemieszczalnej
|
|
288 $024C - PPTMPA - rejestr przechowania zawarto�ci akumulatora
|
|
289 $024D - PPTMPX - rejestr przechowania zawarto�ci rejestru X
|
|
290 $026B - CHSPTR - wektor nieu�ywanego zestawu znak�w
|
|
291 $026C - VSFLAG - znacznik przesuwu pionowego obrazu
|
|
292 $026E - FINE - znacznik delikatnego przesuwu obrazu
|
|
293 $026F - GTICTLS - rejestr-cie� GTIACTL
|
|
294 $0270 - PADDL0 - rejestr-cie� POT0
|
|
295 $0278 - JSTICK0 - po�o�enie joysticka 0
|
|
296 $0279 - JSTICK1 - po�o�enie joysticka 1
|
|
297 $027A - JSTICK2 - po�o�enie joysticka 0
|
|
298 $027B - JSTICK3 - po�o�enie joysticka 1
|
|
299 $027C - PTRIG0 - przycisk potencjometru 0
|
|
300 $027D - PTRIG1 - przycisk potencjometru 1
|
|
301 $0284 - TRIG0S - przycisk joysticka 0, rejestr-cie� TRIG0
|
|
302 $0285 - TRIG1S - przycisk joysticka 1, rejestr-cie� TRIG1
|
|
303 $0286 - TRIG2S - rejestr-cie� TRIG0
|
|
304 $0287 - TRIG3S - rejestr-cie� TRIG1
|
|
305 $0288 - HIBYTE - indeks operacji nowego urz�dzenia
|
|
306 $0289 - WMODE - znacznik sposobu dost�pu do magnetofonu
|
|
307 $028A - BLIM - d�ugo�� bufora magnetofonu
|
|
308 $028E - NEWADR - adres procedury nowego urz�dzenia
|
|
309 $0290 - TXTROW - wiersz kursora w oknie tekstowym
|
|
310 $0291 - TXTCOL - kolumna kursora w oknie tekstowym
|
|
311 $0293 - TINDEX - tryb graficzny OS w oknie tekstowym
|
|
312 $0294 - TXTMSC - adres pami�ci okna tekstowego
|
|
313 $029C - CRETRY - liczba powt�rze� rozkazu operacji
|
|
314 $029D - HOLD3 - pomocniczy rejestr przej�ciowy
|
|
315 $029E - SUBTMP - pomocniczy rejestr przej�ciowy
|
|
316 $02A0 - DMASK - maska punkt�w obrazu
|
|
317 $02A2 - ESCFLG - znacznik klawisza ESC
|
|
318 $02A3 - TABMAP - mapa pozycji tabulacji
|
|
319 $02B2 - LOGMAP - mapa linii logicznych
|
|
320 $02B6 - INVFLG - znacznik klawisza inverse video
|
|
321 $02B7 - FILFLG - znacznik wype�niania obrazu
|
|
322 $02B8 - TMPROW - tymczasowy rejestr pozycji kursora
|
|
323 $02B9 - TMPCOL - tymczasowy rejestr pozycji kursora
|
|
324 $02BB - SCRFLG - znacznik przesuwu obrazu
|
|
325 $02BC - HOLD4 - pomocniczy rejestr przej�ciowy
|
|
326 $02BD - DRETRY - liczba powt�rze� wywo�a� urz�dzenia
|
|
327 $02BE - SHFLOK - znacznik klawiszy SHIFT i CONTROL
|
|
328 $02BF - BOTSCR - liczba wierszy tekstu
|
|
329 $02C0 - COLPM0S - rejestr-cie� COLPM0
|
|
330 $02C1 - COLPM1S - rejestr-cie� COLPM1
|
|
331 $02C2 - COLPM2S - rejestr-cie� COLPM2
|
|
332 $02C3 - COLPM3S - rejestr-cie� COLPM3
|
|
333 $02C4 - COLPF0S - rejestr-cie� COLPF0
|
|
334 $02C5 - COLPF1S - rejestr-cie� COLPF1 ;gr.8 letters
|
|
335 $02C6 - COLPF2S - rejestr-cie� COLPF2 ;gr.8 background
|
|
336 $02C7 - COLPF3S - rejestr-cie� COLPF3
|
|
337 $02C8 - COLBAKS - rejestr-cie� COLBAK
|
|
338 $02C9 - RUNADR - adres procedury nowego urz�dzenia
|
|
339 $02CB - HIUSED - adres ko�cowy procedury nowego urz�dzenia
|
|
340 $02CF - GBYTEA - adres procedury nowego urz�dzenia
|
|
341 $02D1 - LOADAD - adres wczytywania z nowego urz�dzenia
|
|
342 $02D3 - ZLOADA - pomocniczy rejestr adresu wczytywania
|
|
343 $02D5 - DSCTLN - d�ugo�� sektora dyskowego
|
|
344 $02DB - NOCLIK - znacznik d�wi�ku klawiatury
|
|
345 $02DE - PBPNT - licznik bufora drukarki
|
|
346 $02DF - PBUFSZ - d�ugo�� bufora drukarki
|
|
347 $02E5 - MEMTOP - adres g�rnej granicy wolnej pami�ci RAM
|
|
348 $02E7 - MEMLO - adres dolnej granicy wolnej pami�ci RAM
|
|
349 $02E9 - HNDLOD - znacznik relokowalnej procedury obs�ugi I/O
|
|
350 $02EA - DVSTAT - dodatkowy rejestr statusu urz�dzenia
|
|
351 $02EC - DVTMOT - dodatkowy rejestr Timeout urz�dzenia
|
|
352 $02ED - REVNUM - numer wersji nowego urz�dzenia
|
|
353 $02EE - CBAUD - pr�dko�� transmisji z magnetofonu
|
|
354 $02F0 - CRSINH - znacznik widoczno�ci kursora
|
|
355 $02F3 - CHACT - rejestr-cie� CHRCTL
|
|
356 $02F4 - CHBAS - rejestr-cie� CHBASE
|
|
357 $02F5 - NEWROW - nowa pozycja pionowa kursora
|
|
358 $02F6 - NEWCOL - nowa pozycja pozioma kursora
|
|
359 $02F8 - ROWINC - zmiana pionowej pozycji kursora
|
|
360 $02F9 - COLINC - zmiana poziomej pozycji kursora
|
|
361 $02FA - CHAR - kod wewn�trzny znaku
|
|
362 $02FB - ATACHR - kod ATASCII znaku
|
|
363 $02FC - KBCODES - rejestr-cie� KBCODE
|
|
364 $02FD - FILDAT - numer koloru dla wype�niania
|
|
365 $02FE - DSPFLG - znacznik wy�wietlania znak�w kontrolnych
|
|
366 $02FF - SSFLAG - znacznik start/stop dla przesuwu obrazu
|
|
367 $0300 - DDEVIC - kod identyfikacyjny urz�dzenia
|
|
368 $0301 - DUNIT - numer identyfikacyjny urz�dzenia
|
|
369 $0302 - DCMND - bajt rozkazu dla urz�dzenia
|
|
370 $0303 - DSTATS - status urz�dzenia
|
|
371 $0304 - DBUFA - adres bufora danych
|
|
372 $0306 - DTIMLO - warto�� Timeout dla urz�dzenia
|
|
373 $0308 - DBYT - d�ugo�� bufora danych
|
|
374 $030A - DAUX1 - rejestr pomocniczy dla operacji I/O
|
|
375 $030B - DAUX2 - rejestr pomocniczy dla operacji I/O
|
|
376 $030C - INTIM1 - rejestr czasu przy odczycie z magnetofonu
|
|
377 $030F - CASFLG - znacznik operacji z magnetofonem
|
|
378 $0310 - INTIM2 - rejestr czasu przy odczycie z magnetofonu
|
|
379 $0312 - TEMP1 - pomocniczy rejestr przej�ciowy
|
|
380 $0313 - TEMP2 - pomocniczy rejestr przej�ciowy
|
|
381 $0314 - PTIMOT - warto�� Timeout dla drukarki
|
|
382 $0315 - TEMP3 - pomocniczy rejestr przej�ciowy
|
|
383 $0316 - SAVIO - rejestr przej�ciowy dla operacji SIO
|
|
384 $0317 - TIMFLG - znacznik up�yni�cia czasu Timeout
|
|
385 $0318 - STACKP - rejestr wska�nika stosu dla SIO
|
|
386 $0319 - TSTAT - przej�ciowy rejestr statusu SIO
|
|
387 $031A - HATABS - tabela wektor�w procedur obs�ugi
|
|
388 $0340 - IOCB0 - blok kontroli I/O numer 0
|
|
389 $0350 - IOCB1 - blok kontroli I/O numer 1
|
|
390 $0360 - IOCB2 - blok kontroli I/O numer 2
|
|
391 $0370 - IOCB3 - blok kontroli I/O numer 3
|
|
392 $0380 - IOCB4 - blok kontroli I/O numer 4
|
|
393 $0390 - IOCB5 - blok kontroli I/O numer 5
|
|
394 $03A0 - IOCB6 - blok kontroli I/O numer 6
|
|
395 $03B0 - IOCB7 - blok kontroli I/O numer 7
|
|
396 $0340 - ICCHID - indeks wpisu urz�dzenia w HATABS
|
|
397 $0341 - ICDNO - numer urz�dzenia
|
|
398 $0342 - ICCMD - kod rozkazu operacji I/O
|
|
399 $0343 - ICSTAT - status operacji I/O
|
|
400 $0344 - ICBUFA - adres bufora danych dla operacji I/O
|
|
401 $0346 - ICPUTB - adres procedury przesy�ania danych
|
|
402 $0348 - ICBUFL - d�ugo�� bufora danych dla operacji I/O
|
|
403 $034A - ICAX1 - rejestr pomocniczy dla operacji I/O
|
|
404 $034B - ICAX2 - rejestr pomocniczy dla operacji I/O
|
|
405 $034C - ICAX3 - rejestr pomocniczy dla operacji I/O
|
|
406 $034D - ICAX4 - rejestr pomocniczy dla operacji I/O
|
|
407 $034E - ICAX5 - rejestr pomocniczy dla operacji I/O
|
|
408 $034F - ICAX6 - rejestr pomocniczy dla operacji I/O
|
|
409 $03C0 - PRNBUF - bufor drukarki
|
|
410 $03E8 - SUPERF - znacznik stosowany przy odczycie klawiatury
|
|
411 $03E9 - CKEY - znacznik klawisza START przy zimnym starcie
|
|
412 $03EC - DERRF - znacznik b��du przy otwieraniu edytora
|
|
413 $03FB - CHLINK - rejestr element�w listy liniowej
|
|
414 $03FD - CSCB - bajty kontroli szybko�ci magnetofonu
|
|
415 $03FF - CRCB - bajt d�ugo�ci rekordu magnetofonowego
|
|
416 $0400 - CASBUF - bufor magnetofonu
|
|
417 $047F - CASBEN - koniec bufora magnetofonu
|
|
418 $D000 - HPOSP0 - pozioma pozycja gracza 0 (Z)
|
|
419 $D000 - KOLM0PF - kolizja pocisku 0 z polem gry (O)
|
|
420 $D001 - HPOSP1 - pozioma pozycja gracza 1 (Z)
|
|
421 $D001 - KOLM1PF - kolizja pocisku 1 z polem gry (O)
|
|
422 $D002 - HPOSP2 - pozioma pozycja gracza 2 (Z)
|
|
423 $D002 - KOLM2PF - kolizja pocisku 2 z polem gry (O)
|
|
424 $D003 - HPOSP3 - pozioma pozycja gracza 3 (Z)
|
|
425 $D003 - KOLM3PF - kolizja pocisku 3 z polem gry (O)
|
|
426 $D004 - HPOSM0 - pozioma pozycja pocisku 0 (Z)
|
|
427 $D004 - KOLP0PF - kolizja gracza 0 z polem gry (O)
|
|
428 $D005 - HPOSM1 - pozioma pozycja pocisku 1 (Z)
|
|
429 $D005 - KOLP1PF - kolizja gracza 1 z polem gry (O)
|
|
430 $D006 - HPOSM2 - pozioma pozycja pocisku 2 (Z)
|
|
431 $D006 - KOLP2PF - kolizja gracza 2 z polem gry (O)
|
|
432 $D007 - HPOSM3 - pozioma pozycja pocisku 3 (Z)
|
|
433 $D007 - KOLP3PF - kolizja gracza 3 z polem gry (O)
|
|
434 $D008 - SIZEP0 - poziomy rozmiar gracza 0 (Z)
|
|
435 $D008 - KOLM0P - kolizja pocisku 0 z graczem (O)
|
|
436 $D009 - SIZEP1 - poziomy rozmiar gracza 1 (Z)
|
|
437 $D009 - KOLM1P - kolizja pocisku 1 z graczem (O)
|
|
438 $D00A - SIZEP2 - poziomy rozmiar gracza 2 (Z)
|
|
439 $D00A - KOLM2P - kolizja pocisku 2 z graczem (O)
|
|
440 $D00B - SIZEP3 - poziomy rozmiar gracza 3 (Z)
|
|
441 $D00B - KOLM3P - kolizja pocisku 3 z graczem (O)
|
|
442 $D00C - SIZEM - poziomy rozmiar pocisk�w (Z)
|
|
443 $D00C - KOLP0P - kolizja gracza 0 z innym graczem (O)
|
|
444 $D00D - GRAFP0 - rejestr grafiki gracza 0 (Z)
|
|
445 $D00D - KOLP1P - kolizja gracza 1 z innym graczem (O)
|
|
446 $D00E - GRAFP1 - rejestr grafiki gracza 1 (Z)
|
|
447 $D00E - KOLP2P - kolizja gracza 2 z innym graczem (O)
|
|
448 $D00F - GRAFP2 - rejestr grafiki gracza 2 (Z)
|
|
449 $D00F - KOLP3P - kolizja gracza 3 z innym graczem (O)
|
|
450 $D010 - GRAFP3 - rejestr grafiki gracza 3 (Z)
|
|
451 $D010 - TRIG0 - stan przycisku joysticka 0 (O)
|
|
452 $D011 - GRAFM - rejestr grafiki pocisk�w (Z)
|
|
453 $D011 - TRIG1 - stan przycisku joysticka 1 (O)
|
|
454 $D012 - COLPM0 - rejestr koloru gracza i pocisku 0 (Z)
|
|
455 $D013 - COLPM1 - rejestr koloru gracza i pocisku 1 (Z)
|
|
456 $D013 - TRIG3 - znacznik do��czenia cartridge'a (O)
|
|
457 $D014 - COLPM2 - rejestr koloru gracza i pocisku 2 (Z)
|
|
458 $D014 - PAL - znacznik systemu TV (O)
|
|
459 $D015 - COLPM3 - rejestr koloru gracza i pocisku 3 (Z)
|
|
460 $D016 - COLPF0 - rejestr koloru pola gry 0 (Z)
|
|
461 $D017 - COLPF1 - rejestr koloru pola gry 1 (Z)
|
|
462 $D018 - COLPF2 - rejestr koloru pola gry 2 (Z)
|
|
463 $D019 - COLPF3 - rejestr koloru pola gry 3 (Z)
|
|
464 $D01A - COLBAK - rejestr koloru t�a (Z)
|
|
465 $D01B - GTIACTL - rejestr kontroli uk�adu GTIA
|
|
466 $D01C - VDELAY - licznik op�nienia pionowego P/MG
|
|
467 $D01D - PMCNTL - rejestr kontroli graczy i pocisk�w
|
|
468 $D01E - HITCLR - rejestr kasowania rejestr�w kolizji
|
|
469 $D01F - CONSOL - rejestr stanu klawiszy konsoli
|
|
470 $D1FF - PDVREG - rejestr wyboru nowego urz�dzenia
|
|
471 $D200 - AUDF1 - cz�stotliwo�� pracy generatora 1 (Z)
|
|
472 $D200 - POT0 - rejestr po�o�enia potencjometru 0 (O)
|
|
473 $D201 - AUDC1 - rejestr kontroli d�wi�ku generatora 1 (Z)
|
|
474 $D201 - POT1 - rejestr po�o�enia potencjometru 1 (O)
|
|
475 $D202 - AUDF2 - cz�stotliwo�� pracy generatora 2 (Z)
|
|
476 $D202 - POT2 - rejestr po�o�enia potencjometru 2 (O)
|
|
477 $D203 - AUDC2 - rejestr kontroli d�wi�ku generatora 2 (Z)
|
|
478 $D203 - POT3 - rejestr po�o�enia potencjometru 3 (O)
|
|
479 $D204 - AUDF3 - cz�stotliwo�� pracy generatora 3 (Z)
|
|
480 $D205 - AUDC3 - rejestr kontroli d�wi�ku generatora 3 (Z)
|
|
481 $D206 - AUDF4 - cz�stotliwo�� pracy generatora 4 (Z)
|
|
482 $D207 - AUDC4 - rejestr kontroli d�wi�ku generatora 4 (Z)
|
|
483 $D208 - AUDCTL - rejestr kontroli generator�w d�wi�ku (Z)
|
|
484 $D208 - POTST - status odczytu potencjometr�w (O)
|
|
485 $D209 - STIMER - rejestr zerowania licznik�w (Z)
|
|
486 $D209 - KBCODE - kod ostatnio naci�ni�tego klawisza (O)
|
|
487 $D20A - SKSTRES - reset statusu z��cza szeregowego (Z)
|
|
488 $D20A - RANDOM - rejestr liczby losowej (O)
|
|
489 $D20B - POTG0 - znacznik przetwornika analogowo-cyfrowego (Z)
|
|
490 $D20D - SEROUT - szeregowy rejestr wyj�ciowy (Z)
|
|
491 $D20D - SERIN - szeregowy rejestr wej�ciowy (O)
|
|
492 $D20E - IRQEN - zezwolenia przerwa� IRQ (Z)
|
|
493 $D20E - IRQST - status przerwa� IRQ (O)
|
|
494 $D20F - SKCTL - rejestr kontroli z��cza szeregowego (Z)
|
|
495 $D20F - SKSTAT - rejestr statusu z��cza szeregowego (O)
|
|
496 $D300 - PORTA - port A uk�adu PIA
|
|
497 $D301 - PORTB - port B uk�adu PIA
|
|
498 $D302 - PACTL - rejestr kontroli portu A
|
|
499 $D303 - PBCTL - rejestr kontroli portu B
|
|
500 $D400 - DMACTL - rejestr kontroli dost�pu do pami�ci
|
|
501 $D401 - CHRCTL - rejestr kontroli wy�wietlania znak�w
|
|
502 $D402 - DLPTR - adres programu ANTIC-a
|
|
503 $D404 - HSCROL - znacznik poziomego przesuwu obrazu
|
|
504 $D405 - VSCROL - znacznik pionowego przesuwu obrazu
|
|
505 $D407 - PMBASE - adres pami�ci graczy i pocisk�w
|
|
506 $D409 - CHBASE - adres zestawu znak�w
|
|
507 $D40A - WSYNC - znacznik oczekiwania na synchronizacj� poziom�
|
|
508 $D40B - VCOUNT - licznik linii obrazu
|
|
509 $D40C - LPENH - poziome po�o�enie pi�ra �wietlengo
|
|
510 $D40D - LPENV - pionowe po�o�enie pi�ra �wietlnego
|
|
511 $D40E - NMIEN - rejestr zezwole� na przerwania NMI
|
|
512 $D40F - NMIST - rejestr statusu przerwa� NMI
|
|
513 */
|
|
513
|
|
513 = 0080 XDRAW
|
|
513 = 0082 YDRAW
|
|
513 = 0084 XBYTE
|
|
513 = 0086 YBYTE
|
|
513 = 0088 CHARCODE
|
|
513 = 0089 FONTIND
|
|
513 = 008B TANKNR
|
|
513 = 008C TANKSEQUENCEPOINTER
|
|
513 = 008D OLDPLOT
|
|
513 = 008F XC
|
|
513 = 0091 TEMP
|
|
513 = 0093 TEMP2
|
|
513 = 0095 TEMPXROLLER
|
|
513 = 0097 XTEMPDRAW
|
|
513 = 0099 YTEMPDRAW
|
|
513 = 009B XI
|
|
513 = 009D FX
|
|
513 = 009E YI
|
|
513 = 00A0 FY
|
|
513 = 00A1 XK
|
|
513 = 00A3 FS
|
|
513 = 00A4 YC
|
|
513 = 00A5 DX
|
|
513 = 00A7 TEMPOR2
|
|
513 = 00A8 DY
|
|
513 = 00AA TEMPOR3
|
|
513 = 00AC DD
|
|
513 = 00AE DI
|
|
513 = 00B0 DP
|
|
513 = 00B2 MODIFY
|
|
513 = 00B4 WEAPONPOINTER
|
|
81 icl 'lib/macro.hea'
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/lib/macro.hea
|
|
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 /*
|
|
58 lda RANDOM
|
|
59 and #$05
|
|
60 sta COLBAK
|
|
61 */
|
|
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
|
|
79 ; WAIT
|
|
80 ; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
|
81 LDA VCOUNT
|
|
82 STA WSYNC
|
|
83 STA WSYNC
|
|
84 STA WSYNC
|
|
85 ?WA CMP VCOUNT
|
|
86 BNE ?WA
|
|
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
|
|
102 ;usage: randomize floor ceiling
|
|
103 ;returns (in A) a random .byte between "floor" and "ceiling"
|
|
104 ?rand
|
|
105 lda random
|
|
106 cmp #:1 ;floor
|
|
107 bcc ?rand
|
|
108 cmp #:2+1 ;ceiling
|
|
109 bcs ?rand
|
|
110 .endm
|
|
111 ;-------------------------------------
|
|
112 .macro phx
|
|
113 txa
|
|
114 pha
|
|
115 .endm
|
|
116 ;-------------------------------------
|
|
117 .macro phy
|
|
118 tya
|
|
119 pha
|
|
120 .endm
|
|
121 ;-------------------------------------
|
|
122 .macro plx
|
|
123 pla
|
|
124 tax
|
|
125 .endm
|
|
126 ;-------------------------------------
|
|
127 .macro ply
|
|
128 pla
|
|
129 tay
|
|
130 .endm
|
|
131 ;-------------------------------------
|
|
132 .macro pause
|
|
133 ;waits :1 number (byte) of frames
|
|
134 ldx #:1
|
|
135 ?PAUSELOOP
|
|
136 wait
|
|
137 dex
|
|
138 bne ?PAUSELOOP
|
|
139 .ENDM
|
|
140
|
|
82
|
|
83 icl 'artwork/HIMARS14.asm'
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
1 /***************************************/
|
|
2 /* Use MADS http://mads.atari8.info/ */
|
|
3 /* Mode: DLI (char mode) */
|
|
4 /***************************************/
|
|
5
|
|
6 ;icl "HIMARS14.h"
|
|
7 ;ICL '../lib/atari.hea'
|
|
8
|
|
9 org $f0
|
|
10
|
|
11 = 00F0 fcnt .ds 2
|
|
12 = 00F2 fadr .ds 2
|
|
13 = 00F4 fhlp .ds 2
|
|
14 = 00F6 cloc .ds 1
|
|
15 = 00F7 regA .ds 1
|
|
16 = 00F8 regX .ds 1
|
|
17 = 00F9 regY .ds 1
|
|
18
|
|
19 = 0028 WIDTH = 40
|
|
20 = 001E HEIGHT = 30
|
|
21
|
|
22 ; --- BASIC switch OFF
|
|
23 org $2000\ mva #$ff portb\ rts\ ini $2000
|
|
23 ORG $2000
|
|
23 FFFF> 2000-2005> A9 FF + MVA #$FF PORTB
|
|
23 2005 60 RTS
|
|
23 02E2-02E3> 00 20 INI $2000
|
|
24
|
|
25 ; --- MAIN PROGRAM
|
|
26 org $2000
|
|
27 2000-2482> F0 ant dta $F0
|
|
28 2001 42 23 20 02 02 02 + dta $42,a(scr),$02,$02,$02,$02,$02,$02,$02,$02,$02,$82,$02,$02,$02,$02,$82
|
|
29 2013 02 02 02 82 82 82 + dta $02,$02,$02,$82,$82,$82,$02,$82,$02,$02,$02,$82,$70
|
|
30 2020 41 00 20 dta $41,a(ant)
|
|
31
|
|
32 2023 00 00 00 00 00 00 + scr ins "HIMARS14.scr"
|
|
33
|
|
34 = 2483 .ds 2*40
|
|
35
|
|
36 24D3 .ALIGN $0400
|
|
37 2800-396E> 00 00 00 00 + fnt ins "HIMARS14.fnt"
|
|
38
|
|
39 ift USESPRITES
|
|
40 .ALIGN $0800
|
|
41 pmg .ds $0300
|
|
42 ift FADECHR = 0
|
|
43 SPRITES
|
|
44 els
|
|
45 .ds $500
|
|
46 eif
|
|
47 eif
|
|
48
|
|
49 3800 main
|
|
50 ; --- init PMG
|
|
51
|
|
52 ift USESPRITES
|
|
53 mva >pmg pmbase ;missiles and players data address
|
|
54 mva #$03 pmcntl ;enable players and missiles
|
|
55 eif
|
|
56
|
|
57 3800 A5 14 C5 14 F0 FC lda:cmp:req $14 ;wait 1 frame
|
|
58
|
|
59 3806 78 sei ;stop IRQ interrupts
|
|
60 3807 A9 00 8D 0E D4 mva #$00 nmien ;stop NMI interrupts
|
|
61 380C 8D 00 D4 sta dmactl
|
|
62 380F A9 FE 8D 01 D3 mva #$fe portb ;switch off ROM to get 16k more ram
|
|
63
|
|
64 3814 A9 E1 8D FA FF A9 + mwa #NMI $fffa ;new NMI handler
|
|
65
|
|
66 381E A9 C0 8D 0E D4 mva #$c0 nmien ;switch on NMI+DLI again
|
|
67
|
|
68 ift CHANGES ;if label CHANGES defined
|
|
69
|
|
70 3823 AD 10 D0 _lp lda trig0 ; FIRE #0
|
|
71 3826 F0 13 beq stop
|
|
72
|
|
73 3828 AD 11 D0 lda trig1 ; FIRE #1
|
|
74 382B F0 0E beq stop
|
|
75
|
|
76 382D AD 1F D0 lda consol ; START
|
|
77 3830 29 01 and #1
|
|
78 3832 F0 07 beq stop
|
|
79
|
|
80 3834 AD 0F D2 lda skctl
|
|
81 3837 29 04 and #$04
|
|
82 3839 D0 E8 bne _lp ;wait to press any key; here you can put any own routine
|
|
83
|
|
84 els
|
|
85
|
|
86 null jmp DLI.dli1 ;CPU is busy here, so no more routines allowed
|
|
87
|
|
88 eif
|
|
89
|
|
90
|
|
91 383B stop
|
|
92 383B A9 00 8D 1D D0 mva #$00 pmcntl ;PMG disabled
|
|
93 3840 AA tax
|
|
94 3841 9D 00 D0 E8 D0 FA sta:rne hposp0,x+
|
|
95
|
|
96 3847 A9 FF 8D 01 D3 mva #$ff portb ;ROM switch on
|
|
97 384C A9 40 8D 0E D4 mva #$40 nmien ;only NMI interrupts, DLI disabled
|
|
98 3851 58 cli ;IRQ enabled
|
|
99
|
|
100 3852 60 rts ;return to ... DOS
|
|
101
|
|
102 ; --- DLI PROGRAM
|
|
103
|
|
104 3853 .local DLI
|
|
105
|
|
106 = 3853 ?old_dli = *
|
|
107
|
|
108 ift !CHANGES
|
|
109
|
|
110 dli1 lda trig0 ; FIRE #0
|
|
111 beq stop
|
|
112
|
|
113 lda trig1 ; FIRE #1
|
|
114 beq stop
|
|
115
|
|
116 lda consol ; START
|
|
117 and #1
|
|
118 beq stop
|
|
119
|
|
120 lda skctl
|
|
121 and #$04
|
|
122 beq stop
|
|
123
|
|
124 lda vcount
|
|
125 cmp #$02
|
|
126 bne dli1
|
|
127
|
|
128 :3 sta wsync
|
|
129
|
|
130 DLINEW dli10
|
|
131
|
|
132 eif
|
|
133
|
|
134 3853 dli_start
|
|
135
|
|
136 3853 dli10
|
|
137 3853 85 F7 sta regA
|
|
138
|
|
139 3855 A9 04 c4 lda #$04
|
|
140 3857 8D 0A D4 sta wsync ;line=8
|
|
141 385A 8D 16 D0 sta color0
|
|
142 385D 8D 1B D0 sta gtictl
|
|
143 3860 DLINEW DLI.dli2 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 3860 A9 68 8D E7 38 mva <DLI.DLI2 NMI.dliv
|
|
7 3865 A5 F7 lda regA
|
|
18 3867 40 rti
|
|
20 = 3868 .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
144
|
|
145 3868 dli2
|
|
146 3868 85 F7 sta regA
|
|
147 386A A9 2C lda >fnt+$400*$01
|
|
148 386C 8D 0A D4 sta wsync ;line=96
|
|
149 386F 8D 09 D4 sta chbase
|
|
150 3872 DLINEW dli3 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 3872 A9 7A 8D E7 38 mva <DLI3 NMI.dliv
|
|
7 3877 A5 F7 lda regA
|
|
18 3879 40 rti
|
|
20 = 387A .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
151
|
|
152 387A dli3
|
|
153 387A 85 F7 sta regA
|
|
154 387C A9 30 lda >fnt+$400*$02
|
|
155 387E 8D 0A D4 sta wsync ;line=136
|
|
156 3881 8D 09 D4 sta chbase
|
|
157 3884 DLINEW dli4 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 3884 A9 8C 8D E7 38 mva <DLI4 NMI.dliv
|
|
7 3889 A5 F7 lda regA
|
|
18 388B 40 rti
|
|
20 = 388C .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
158
|
|
159 388C dli4
|
|
160 388C 85 F7 sta regA
|
|
161 388E A9 2C lda >fnt+$400*$01
|
|
162 3890 8D 0A D4 sta wsync ;line=168
|
|
163 3893 8D 09 D4 sta chbase
|
|
164 3896 DLINEW dli5 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 3896 A9 9E 8D E7 38 mva <DLI5 NMI.dliv
|
|
7 389B A5 F7 lda regA
|
|
18 389D 40 rti
|
|
20 = 389E .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
165
|
|
166 389E dli5
|
|
167 389E 85 F7 sta regA
|
|
168 38A0 A9 30 lda >fnt+$400*$02
|
|
169 38A2 8D 0A D4 sta wsync ;line=176
|
|
170 38A5 8D 09 D4 sta chbase
|
|
171 38A8 DLINEW dli6 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 38A8 A9 B0 8D E7 38 mva <DLI6 NMI.dliv
|
|
7 38AD A5 F7 lda regA
|
|
18 38AF 40 rti
|
|
20 = 38B0 .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
172
|
|
173 38B0 dli6
|
|
174 38B0 85 F7 sta regA
|
|
175 38B2 A9 34 lda >fnt+$400*$03
|
|
176 38B4 8D 0A D4 sta wsync ;line=184
|
|
177 38B7 8D 09 D4 sta chbase
|
|
178 38BA DLINEW dli7 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 38BA A9 C2 8D E7 38 mva <DLI7 NMI.dliv
|
|
7 38BF A5 F7 lda regA
|
|
18 38C1 40 rti
|
|
20 = 38C2 .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
179
|
|
180 38C2 dli7
|
|
181 38C2 85 F7 sta regA
|
|
182 38C4 A9 28 lda >fnt+$400*$00
|
|
183 38C6 8D 0A D4 sta wsync ;line=200
|
|
184 38C9 8D 09 D4 sta chbase
|
|
185 38CC DLINEW dli11 1 0 0
|
|
Macro: DLINEW [Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm]
|
|
1 38CC A9 D4 8D E7 38 mva <DLI11 NMI.dliv
|
|
7 38D1 A5 F7 lda regA
|
|
18 38D3 40 rti
|
|
20 = 38D4 .def ?old_dli = *
|
|
Source: /home/pkalinowski/Seafile/atari/projects/scorch_src/artwork/HIMARS14.asm
|
|
186
|
|
187 38D4 dli11
|
|
188 38D4 85 F7 sta regA
|
|
189
|
|
190 38D6 A9 01 lda #$01
|
|
191 38D8 8D 0A D4 sta wsync ;line=232
|
|
192 38DB 8D 1B D0 sta gtictl
|
|
193
|
|
194 38DE A5 F7 lda regA
|
|
195 38E0 40 rti
|
|
196
|
|
197 .endl
|
|
198
|
|
199 ; ---
|
|
200
|
|
201 = 0001 CHANGES = 1
|
|
202 = 0000 FADECHR = 0
|
|
203
|
|
204 = 007F SCHR = 127
|
|
205
|
|
206 ; ---
|
|
207
|
|
208 38E1 .proc NMI
|
|
209
|
|
210 38E1 2C 0F D4 bit nmist
|
|
211 38E4 10 03 bpl VBL
|
|
212
|
|
213 38E6 4C 53 38 jmp DLI.dli_start
|
|
214 = 38E7 dliv equ *-2
|
|
215
|
|
216 38E9 VBL
|
|
217 38E9 85 F7 sta regA
|
|
218 38EB 86 F8 stx regX
|
|
219 38ED 84 F9 sty regY
|
|
220
|
|
221 38EF 8D 0F D4 sta nmist ;reset NMI flag
|
|
222
|
|
223 38F2 A9 00 8D 02 D4 A9 + mwa #ant dlptr ;ANTIC address program
|
|
224
|
|
225 38FC A9 32 8D 00 D4 mva #@dmactl(standard|dma|lineX1) dmactl ;set new screen width
|
|
226
|
|
227 3901 E6 F6 inc cloc ;little timer
|
|
228
|
|
229 ; Initial values
|
|
230
|
|
231 3903 A9 28 lda >fnt+$400*$00
|
|
232 3905 8D 09 D4 sta chbase
|
|
233 3908 A9 00 c0 lda #$00
|
|
234 390A 8D 1A D0 sta colbak
|
|
235 390D A9 02 lda #$02
|
|
236 390F 8D 01 D4 sta chrctl
|
|
237 3912 A9 01 lda #$01
|
|
238 3914 8D 1B D0 sta gtictl
|
|
239 3917 A9 0C c1 lda #$0C
|
|
240 3919 8D 17 D0 sta color1
|
|
241 391C A9 02 c2 lda #$02
|
|
242 391E 8D 18 D0 sta color2
|
|
243 3921 A9 0E c3 lda #$0E
|
|
244 3923 8D 19 D0 sta color3
|
|
245 3926 A9 00 x0 lda #$00
|
|
246 3928 8D 00 D0 sta hposp0
|
|
247 392B 8D 01 D0 sta hposp1
|
|
248 392E 8D 02 D0 sta hposp2
|
|
249 3931 8D 03 D0 sta hposp3
|
|
250 3934 8D 04 D0 sta hposm0
|
|
251 3937 8D 05 D0 sta hposm1
|
|
252 393A 8D 06 D0 sta hposm2
|
|
253 393D 8D 07 D0 sta hposm3
|
|
254 3940 8D 08 D0 sta sizep0
|
|
255 3943 8D 09 D0 sta sizep1
|
|
256 3946 8D 0A D0 sta sizep2
|
|
257 3949 8D 0B D0 sta sizep3
|
|
258 394C 8D 0C D0 sta sizem
|
|
259 394F 8D 12 D0 sta colpm0
|
|
260 3952 8D 13 D0 sta colpm1
|
|
261 3955 8D 14 D0 sta colpm2
|
|
262 3958 8D 15 D0 sta colpm3
|
|
263 395B 8D 16 D0 sta color0
|
|
264
|
|
265 395E A9 53 8D E7 38 A9 + mwa #DLI.dli_start dliv ;set the first address of DLI interrupt
|
|
266
|
|
267 ;this area is for yours routines
|
|
268
|
|
269 3968 quit
|
|
270 3968 A5 F7 lda regA
|
|
271 396A A6 F8 ldx regX
|
|
272 396C A4 F9 ldy regY
|
|
273 396E 40 rti
|
|
274
|
|
275 .endp
|
|
276
|
|
277 ; ---
|
|
278 02E2-02E3> 00 38 ini main
|
|
279 ; ---
|
|
280
|