]> git.sur5r.net Git - cc65/blob - libsrc/geos/inc/geosmac.ca65.inc
Minor comment adjustment.
[cc65] / libsrc / geos / inc / geosmac.ca65.inc
1
2 ;GEOS macros
3 ;reassembled for 6502TASM/MMS by Maciej 'YTM/Elysium' Witkowiak
4 ;4-2-99
5
6 ;28-6-99 - ca65 port
7 ;macro 'sub' renamed to 'ssub' due to 65816 mnemonics
8
9
10         .macro          LoadB dest, value
11         lda #value
12         sta dest
13         .endmacro
14
15         .macro          LoadW dest, value
16         LoadB dest+1, >(value)
17         LoadB dest+0, <(value)
18         .endmacro
19
20         .macro          MoveB source, dest
21         lda source
22         sta dest
23         .endmacro
24
25         .macro          MoveW source, dest
26         MoveB source+1, dest+1
27         MoveB source+0, dest+0
28         .endmacro
29
30         .macro          add source
31         clc
32         adc source
33         .endmacro
34
35         .macro          AddB source, dest
36         lda source
37         add dest
38         sta dest
39         .endmacro
40
41         .macro          AddW source, dest
42         AddB source+0, dest+0
43         lda source+1
44         adc dest+1
45         sta dest+1
46         .endmacro
47
48         .macro          AddVB value, dest
49         lda dest
50         clc
51         adc #(value)
52         sta dest
53         .endmacro
54
55         .macro          AddVW value, dest
56 .local Skip
57         AddVB <(value), dest+0
58         .if (>(value))=0
59             bcc Skip
60             inc dest+1
61         .else
62             lda #>(value)
63             adc dest+1
64             sta dest+1
65         .endif
66 Skip:
67         .endmacro
68
69         .macro          ssub source
70         sec
71         sbc source
72         .endmacro
73
74         .macro          SubB source, dest
75         lda dest
76         ssub source
77         sta dest
78         .endmacro
79
80         .macro          SubW source, dest
81         SubB source+0, dest+0
82         lda dest+1
83         sbc source+1
84         sta dest+1
85         .endmacro
86
87         .macro          SubVW value, dest
88         sec
89         lda dest+0
90         sbc #<(value)
91         sta dest+0
92         lda dest+1
93         sbc #>(value)
94         sta dest+1
95         .endmacro
96
97         .macro          CmpB source, dest
98         lda source
99         cmp dest
100         .endmacro
101
102         .macro          CmpBI source, immed
103         lda source
104         cmp #(immed)
105         .endmacro
106
107         .macro          CmpW source, dest
108 .local Skip     
109         CmpB source+1, dest+1
110         bne Skip
111         CmpB source+0, dest+0
112 Skip:
113         .endmacro
114
115         .macro          CmpWI source, immed
116 .local Skip
117         CmpBI source+1, >(immed)
118         bne Skip
119         CmpBI source+0, <(immed)
120 Skip:
121         .endmacro
122
123         .macro          PushB source
124         lda source
125         pha
126         .endmacro
127
128         .macro          PushW source
129         PushB source+1
130         PushB source+0
131         .endmacro
132
133         .macro          PopB dest
134         pla
135         sta dest
136         .endmacro
137
138         .macro          PopW dest
139         PopB dest+0
140         PopB dest+1
141         .endmacro
142
143         .macro          bra addr
144         clv
145         bvc addr
146         .endmacro
147
148         .macro          smb bitNumber, dest
149         pha
150         lda #(1 << bitNumber)
151         ora dest
152         sta dest
153         pla
154         .endmacro
155
156         .macro          smbf bitNumber, dest
157         lda #(1 << bitNumber)
158         ora dest
159         sta dest
160         .endmacro
161
162         .macro          rmb bitNumber, dest
163         pha
164         lda #(1 << bitNumber) ^ $ff 
165         and dest
166         sta dest
167         pla
168         .endmacro
169
170         .macro          rmbf bitNumber, dest
171         lda #(1 << bitNumber) ^ $ff
172         and dest
173         sta dest
174         .endmacro
175
176         .macro          bbs bitNumber, source, addr
177 .local Skip
178         php
179         pha
180         lda source
181         and #(1 << bitNumber)
182         beq Skip
183         pla
184         plp
185         bra addr
186 Skip:   pla
187         plp
188         .endmacro
189
190         .macro          bbsf bitNumber, source, addr
191         .if     bitNumber=7
192                 bit source
193                 bmi addr
194         .else
195                 .if bitNumber=6
196                     bit source
197                     bvs addr
198                 .else
199                     lda source
200                     and #(1 << bitNumber)
201                     bne addr
202                 .endif
203         .endif
204         .endmacro
205
206         .macro          bbr bitNumber, source, addr
207 .local Skip
208         php
209         pha
210         lda source
211         and #(1 << bitNumber)
212         bne Skip
213         pla
214         plp
215         bra addr
216 Skip:   pla
217         plp
218         .endmacro
219
220         .macro          bbrf bitNumber, source, addr
221         .if bitNumber=7
222             bit source
223             bpl addr
224         .else
225                 .if bitNumber=6
226                     bit source
227                     bvc addr
228                 .else
229                     lda source
230                     and #(1 << bitNumber)
231                     beq addr
232                 .endif
233         .endif
234         .endmacro
235
236 ;03.03.99 by Maciej Witkowiak
237
238         .macro          addv value
239         clc
240         adc #(value)
241         .endmacro
242
243         .macro          subv value
244         sec
245         sbc #(value)
246         .endmacro
247
248         .macro          bnex addr
249         txa
250         bne addr
251         .endmacro
252
253         .macro          beqx addr
254         txa
255         beq addr
256         .endmacro