1 /****************************************************************************
2  h6280.h
3  Function protoypes for simulated execution routines
4  ****************************************************************************/
5 
6 #ifndef H6280_H_
7 #define H6280_H_
8 
9 #include "cleantyp.h"
10 
11 /********************************************/
12 /* function parameters:                     */
13 /* --------------------                     */
14 /* - address (16-bit unsigned),             */
15 /* - pointer to buffer @ program counter    */
16 /********************************************/
17 
18 extern void exe_instruct(void);
19 extern void exe_go(void);
20 
21 extern int adc_abs(void);
22 extern int adc_absx(void);
23 extern int adc_absy(void);
24 extern int adc_imm(void);
25 extern int adc_zp(void);
26 extern int adc_zpind(void);
27 extern int adc_zpindx(void);
28 extern int adc_zpindy(void);
29 extern int adc_zpx(void);
30 extern int and_abs(void);
31 extern int and_absx(void);
32 extern int and_absy(void);
33 extern int and_imm(void);
34 extern int and_zp(void);
35 extern int and_zpind(void);
36 extern int and_zpindx(void);
37 extern int and_zpindy(void);
38 extern int and_zpx(void);
39 extern int asl_a(void);
40 extern int asl_abs(void);
41 extern int asl_absx(void);
42 extern int asl_zp(void);
43 extern int asl_zpx(void);
44 extern int bbr0(void);
45 extern int bbr1(void);
46 extern int bbr2(void);
47 extern int bbr3(void);
48 extern int bbr4(void);
49 extern int bbr5(void);
50 extern int bbr6(void);
51 extern int bbr7(void);
52 extern int bbs0(void);
53 extern int bbs1(void);
54 extern int bbs2(void);
55 extern int bbs3(void);
56 extern int bbs4(void);
57 extern int bbs5(void);
58 extern int bbs6(void);
59 extern int bbs7(void);
60 extern int bcc(void);
61 extern int bcs(void);
62 extern int beq(void);
63 extern int bit_abs(void);
64 extern int bit_absx(void);
65 extern int bit_imm(void);
66 extern int bit_zp(void);
67 extern int bit_zpx(void);
68 extern int bmi(void);
69 extern int bne(void);
70 extern int bpl(void);
71 extern int bra(void);
72 extern int brek(void);
73 extern int bsr(void);
74 extern int bvc(void);
75 extern int bvs(void);
76 extern int cla(void);
77 extern int clc(void);
78 extern int cld(void);
79 extern int cli(void);
80 extern int clv(void);
81 extern int clx(void);
82 extern int cly(void);
83 extern int cmp_abs(void);
84 extern int cmp_absx(void);
85 extern int cmp_absy(void);
86 extern int cmp_imm(void);
87 extern int cmp_zp(void);
88 extern int cmp_zpind(void);
89 extern int cmp_zpindx(void);
90 extern int cmp_zpindy(void);
91 extern int cmp_zpx(void);
92 extern int cpx_abs(void);
93 extern int cpx_imm(void);
94 extern int cpx_zp(void);
95 extern int cpy_abs(void);
96 extern int cpy_imm(void);
97 extern int cpy_zp(void);
98 extern int dec_a(void);
99 extern int dec_abs(void);
100 extern int dec_absx(void);
101 extern int dec_zp(void);
102 extern int dec_zpx(void);
103 extern int dex(void);
104 extern int dey(void);
105 extern int eor_abs(void);
106 extern int eor_absx(void);
107 extern int eor_absy(void);
108 extern int eor_imm(void);
109 extern int eor_zp(void);
110 extern int eor_zpind(void);
111 extern int eor_zpindx(void);
112 extern int eor_zpindy(void);
113 extern int eor_zpx(void);
114 extern int halt(void);
115 extern int inc_a(void);
116 extern int inc_abs(void);
117 extern int inc_absx(void);
118 extern int inc_zp(void);
119 extern int inc_zpx(void);
120 extern int inx(void);
121 extern int iny(void);
122 extern int jmp(void);
123 extern int jmp_absind(void);
124 extern int jmp_absindx(void);
125 extern int jsr(void);
126 extern int lda_abs(void);
127 extern int lda_absx(void);
128 extern int lda_absy(void);
129 extern int lda_imm(void);
130 extern int lda_zp(void);
131 extern int lda_zpind(void);
132 extern int lda_zpindx(void);
133 extern int lda_zpindy(void);
134 extern int lda_zpx(void);
135 extern int ldx_abs(void);
136 extern int ldx_absy(void);
137 extern int ldx_imm(void);
138 extern int ldx_zp(void);
139 extern int ldx_zpy(void);
140 extern int ldy_abs(void);
141 extern int ldy_absx(void);
142 extern int ldy_imm(void);
143 extern int ldy_zp(void);
144 extern int ldy_zpx(void);
145 extern int lsr_a(void);
146 extern int lsr_abs(void);
147 extern int lsr_absx(void);
148 extern int lsr_zp(void);
149 extern int lsr_zpx(void);
150 extern int nop(void);
151 extern int ora_abs(void);
152 extern int ora_absx(void);
153 extern int ora_absy(void);
154 extern int ora_imm(void);
155 extern int ora_zp(void);
156 extern int ora_zpind(void);
157 extern int ora_zpindx(void);
158 extern int ora_zpindy(void);
159 extern int ora_zpx(void);
160 extern int pha(void);
161 extern int php(void);
162 extern int phx(void);
163 extern int phy(void);
164 extern int pla(void);
165 extern int plp(void);
166 extern int plx(void);
167 extern int ply(void);
168 extern int rmb0(void);
169 extern int rmb1(void);
170 extern int rmb2(void);
171 extern int rmb3(void);
172 extern int rmb4(void);
173 extern int rmb5(void);
174 extern int rmb6(void);
175 extern int rmb7(void);
176 extern int rol_a(void);
177 extern int rol_abs(void);
178 extern int rol_absx(void);
179 extern int rol_zp(void);
180 extern int rol_zpx(void);
181 extern int ror_a(void);
182 extern int ror_abs(void);
183 extern int ror_absx(void);
184 extern int ror_zp(void);
185 extern int ror_zpx(void);
186 extern int rti(void);
187 extern int rts(void);
188 extern int sax(void);
189 extern int say(void);
190 extern int sbc_abs(void);
191 extern int sbc_absx(void);
192 extern int sbc_absy(void);
193 extern int sbc_imm(void);
194 extern int sbc_zp(void);
195 extern int sbc_zpind(void);
196 extern int sbc_zpindx(void);
197 extern int sbc_zpindy(void);
198 extern int sbc_zpx(void);
199 extern int sec(void);
200 extern int sed(void);
201 extern int sei(void);
202 extern int set(void);
203 extern int smb0(void);
204 extern int smb1(void);
205 extern int smb2(void);
206 extern int smb3(void);
207 extern int smb4(void);
208 extern int smb5(void);
209 extern int smb6(void);
210 extern int smb7(void);
211 extern int st0(void);
212 extern int st1(void);
213 extern int st2(void);
214 extern int sta_abs(void);
215 extern int sta_absx(void);
216 extern int sta_absy(void);
217 extern int sta_zp(void);
218 extern int sta_zpind(void);
219 extern int sta_zpindx(void);
220 extern int sta_zpindy(void);
221 extern int sta_zpx(void);
222 extern int stx_abs(void);
223 extern int stx_zp(void);
224 extern int stx_zpy(void);
225 extern int sty_abs(void);
226 extern int sty_zp(void);
227 extern int sty_zpx(void);
228 extern int stz_abs(void);
229 extern int stz_absx(void);
230 extern int stz_zp(void);
231 extern int stz_zpx(void);
232 extern int sxy(void);
233 extern int tai(void);
234 extern int tam(void);
235 extern int tax(void);
236 extern int tay(void);
237 extern int tdd(void);
238 extern int tia(void);
239 extern int tii(void);
240 extern int tin(void);
241 extern int tma(void);
242 extern int trb_abs(void);
243 extern int trb_zp(void);
244 extern int tsb_abs(void);
245 extern int tsb_zp(void);
246 extern int tstins_abs(void);
247 extern int tstins_absx(void);
248 extern int tstins_zp(void);
249 extern int tstins_zpx(void);
250 extern int tsx(void);
251 extern int txa(void);
252 extern int txs(void);
253 extern int tya(void);
254 
255 #define INT_NONE        0            /* No interrupt required      */
256 #define INT_IRQ         1            /* Standard IRQ interrupt     */
257 #define INT_NMI         2            /* Non-maskable interrupt     */
258 #define INT_QUIT        3            /* Exit the emulation         */
259 #define	INT_TIMER       4
260 #define	INT_IRQ2        8
261 
262 #define	VEC_RESET	0xFFFE
263 #define	VEC_NMI		0xFFFC
264 #define	VEC_TIMER	0xFFFA
265 #define	VEC_IRQ		0xFFF8
266 #define	VEC_IRQ2	0xFFF6
267 #define	VEC_BRK		0xFFF6
268 
269 extern UChar flnz_list[256];
270 
271 inline UChar imm_operand(UInt16 addr);
272 inline UChar get_8bit_zp(UChar zp_addr);
273 inline UInt16 get_16bit_zp(UChar zp_addr);
274 inline void put_8bit_zp(UChar zp_addr, UChar byte);
275 
276 #if !defined(INLINED_ACCESSORS)
277 #define get_8bit_addr(addr) Rd6502((addr))
278 #define put_8bit_addr(addr,byte) Wr6502((addr),(byte))
279 #define get_16bit_addr(addr) (Rd6502(addr) + (Rd6502(addr + 1) << 8))
280 #else
281 inline UChar get_8bit_addr(UInt16 addr);
282 inline void put_8bit_addr(UInt16 addr, UChar byte);
283 inline UInt16 get_16bit_addr(UInt16 addr);
284 #endif
285 
286 #endif
287