|
|
1.1 root 1: /*
2: * RAZE-x86 Z80 emulator.
3: *
4: * Copyright (c) 1999 Richard Mitton
5: *
6: * This may only be distributed as part of the complete RAZE package.
7: * See RAZE.TXT for license information.
8: */
9:
10: #ifndef __RAZE_H_INCLUDED__
11: #define __RAZE_H_INCLUDED__
12:
13: #ifdef __cplusplus
14: extern "C" {
15: #endif
16:
17: /* Fix this as you need it */
18: #ifndef UBYTE
19: #define UBYTE unsigned char
20: #endif
21: #ifndef UWORD
22: #define UWORD unsigned short
23: #endif
24:
25: /* Memory map constants */
26: #define Z80_MAP_DIRECT 0 /* Reads/writes are done directly */
27: #define Z80_MAP_HANDLED 1 /* Reads/writes use a function handler */
28:
29: /* Z80 registers */
30: typedef enum {
31: Z80_REG_AF=0,
32: Z80_REG_BC,
33: Z80_REG_DE,
34: Z80_REG_HL,
35: Z80_REG_IX,
36: Z80_REG_IY,
37: Z80_REG_PC,
38: Z80_REG_SP,
39: Z80_REG_AF2,
40: Z80_REG_BC2,
41: Z80_REG_DE2,
42: Z80_REG_HL2,
43: Z80_REG_IFF1, /* boolean - 1 or 0 */
44: Z80_REG_IFF2, /* boolean - 1 or 0 */
45: Z80_REG_IR,
46: Z80_REG_IM, /* 0, 1, or 2 */
47: Z80_REG_IRQVector, /* 0x00 to 0xff */
48: Z80_REG_IRQLine, /* boolean - 1 or 0 */
49: Z80_REG_Halted /* boolean - 1 or 0 */
50: } z80_register;
51:
52: /* Z80 main functions */
53: void z80_reset(void);
54: int z80_emulate(int cycles);
55: void z80_raise_IRQ(UBYTE vector);
56: void z80_lower_IRQ(void);
57: void z80_cause_NMI(void);
58:
59: /* Z80 context functions */
60: int z80_get_context_size(void);
61: void z80_set_context(void *context);
62: void z80_get_context(void *context);
63: UWORD z80_get_reg(z80_register reg);
64: void z80_set_reg(z80_register reg, UWORD value);
65:
66: /* Z80 cycle functions */
67: int z80_get_cycles_elapsed(void);
68: void z80_stop_emulating(void);
69: void z80_skip_idle(void);
70: void z80_do_wait_states(int n);
71:
72: /* Z80 I/O functions */
73: void z80_init_memmap(void);
74: void z80_map_fetch(UWORD start, UWORD end, UBYTE *memory);
75: void z80_map_read(UWORD start, UWORD end, UBYTE *memory);
76: void z80_map_write(UWORD start, UWORD end, UBYTE *memory);
77: void z80_add_read(UWORD start, UWORD end, int method, void *data);
78: void z80_add_write(UWORD start, UWORD end, int method, void *data);
79: void z80_set_in(UBYTE (*handler)(UWORD port));
80: void z80_set_out(void (*handler)(UWORD port, UBYTE value));
81: void z80_set_reti(void (*handler)(void));
82: void z80_set_fetch_callback(void (*handler)(UWORD pc));
83: void z80_end_memmap(void);
84:
85: #ifdef __cplusplus
86: };
87: #endif
88:
89: #endif /* __RAZE_H_INCLUDED__ */
90:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.