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