aboutsummaryrefslogtreecommitdiff
path: root/c64/cpu.h
blob: 4db4591b325ad8c06505029601d50e8a4462287c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// cpu.h
//
// 20050125 Markku Alén

#ifndef __CPU_H__
#define __CPU_H__ 1

extern unsigned int cycles;

void init_cpu(int (*cpu_read)(int), void (*cpu_write)(int, int), int (*cpu_read_page)(int), void (*cpu_write_page)(int, int), void (*cpu_jam)(int, int));

extern void (*reset_cpu)(void);
extern void (*raise_nmi)(void);
extern void (*raise_irq)(void);
extern void (*exec_cpu)(void);

void set_c_flag(int enable);
void set_z_flag(int enable);
void set_pc(int addr);

int get_pc(void);
int get_a(void);
int get_x(void);
int get_y(void);

typedef struct __trap
{
	struct __trap *next_trap;
	int addr;
	int org[3];
	int (*handler)(void);
}trap_t;

#define TRAP_INIT(ADDR, D1, D2, D3, HANDLER)	{ 0, ADDR, D1, D2, D3, HANDLER }

void install_traps(int cnt, trap_t *tbl, void (*poke)(int, int), int (*peek)(int));

#endif