]> git.sur5r.net Git - cc65/blob - libsrc/geos/inc/geosmac.ca65.inc
buggy rmb and rmbf macros (not used anywhere anyway ;)
[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         clc
58         lda #<value
59         adc dest+0
60         sta dest+0
61         .if (>value)=0
62             bcc Skip
63             inc dest+1
64         .else
65             lda #>value
66             adc dest+1
67             sta dest+1
68         .endif
69 Skip:
70         .endmacro
71
72         .macro          ssub source
73         sec
74         sbc source
75         .endmacro
76
77         .macro          SubB source, dest
78         lda dest
79         ssub source
80         sta dest
81         .endmacro
82
83         .macro          SubW source, dest
84         SubB source+0, dest+0
85         lda dest+1
86         sbc source+1
87         sta dest+1
88         .endmacro
89
90         .macro          SubVW value, dest
91         sec
92         lda dest+0
93         sbc #<value
94         sta dest+0
95         lda dest+1
96         sbc #>value
97         sta dest+1
98         .endmacro
99
100         .macro          CmpB source, dest
101         lda source
102         cmp dest
103         .endmacro
104
105         .macro          CmpBI source, immed
106         lda source
107         cmp #immed
108         .endmacro
109
110         .macro          CmpW source, dest
111 .local Skip     
112         CmpB source+1, dest+1
113         bne Skip
114         CmpB source+0, dest+0
115 Skip:
116         .endmacro
117
118         .macro          CmpWI source, immed
119 .local Skip
120         CmpBI source+1, >immed
121         bne Skip
122         CmpBI source+0, <immed
123 Skip:
124         .endmacro
125
126         .macro          PushB source
127         lda source
128         pha
129         .endmacro
130
131         .macro          PushW source
132         PushB source+1
133         PushB source+0
134         .endmacro
135
136         .macro          PopB dest
137         pla
138         sta dest
139         .endmacro
140
141         .macro          PopW dest
142         PopB dest+0
143         PopB dest+1
144         .endmacro
145
146         .macro          bra addr
147         clv
148         bvc addr
149         .endmacro
150
151         .macro          smb bitNumber, dest
152         pha
153         lda #(1 << bitNumber)
154         ora dest
155         sta dest
156         pla
157         .endmacro
158
159         .macro          smbf bitNumber, dest
160         lda #(1 << bitNumber)
161         ora dest
162         sta dest
163         .endmacro
164
165         .macro          rmb bitNumber, dest
166         pha
167         lda #(1 << bitNumber) ^ $ff 
168         and dest
169         sta dest
170         pla
171         .endmacro
172
173         .macro          rmbf bitNumber, dest
174         lda #(1 << bitNumber) ^ $ff
175         and dest
176         sta dest
177         .endmacro
178
179         .macro          bbs bitNumber, source, addr
180 .local Skip
181         php
182         pha
183         lda source
184         and #(1 << bitNumber)
185         beq Skip
186         pla
187         plp
188         bra addr
189 Skip:   pla
190         plp
191         .endmacro
192
193         .macro          bbsf bitNumber, source, addr
194         .if     bitNumber=7
195                 bit source
196                 bmi addr
197         .else
198                 .if bitNumber=6
199                     bit source
200                     bvs addr
201                 .else
202                     lda source
203                     and #(1 << bitNumber)
204                     bne addr
205                 .endif
206         .endif
207         .endmacro
208
209         .macro          bbr bitNumber, source, addr
210 .local Skip
211         php
212         pha
213         lda source
214         and #(1 << bitNumber)
215         bne Skip
216         pla
217         plp
218         bra addr
219 Skip:   pla
220         plp
221         .endmacro
222
223         .macro          bbrf bitNumber, source, addr
224         .if bitNumber=7
225             bit source
226             bpl addr
227         .else
228                 .if bitNumber=6
229                     bit source
230                     bvc addr
231                 .else
232                     lda source
233                     and #(1 << bitNumber)
234                     beq addr
235                 .endif
236         .endif
237         .endmacro
238
239 ;03.03.99 by Maciej Witkowiak
240
241         .macro          addv value
242         clc
243         adc #value
244         .endmacro
245
246         .macro          subv value
247         sec
248         sbc #value
249         .endmacro
250
251         .macro          bnex addr
252         txa
253         bne addr
254         .endmacro
255
256         .macro          beqx addr
257         txa
258         beq addr
259         .endmacro