www.pudn.com > ncdzsrc.rar > raze.h
/*
* RAZE-x86 Z80 emulator.
*
* Copyright (c) 1999 Richard Mitton
*
* This may only be distributed as part of the complete RAZE package.
* See RAZE.TXT for license information.
*/
#ifndef __RAZE_H_INCLUDED__
#define __RAZE_H_INCLUDED__
#ifdef __cplusplus
extern "C" {
#endif
/* Fix this as you need it */
#ifndef UBYTE
#define UBYTE unsigned char
#endif
#ifndef UWORD
#define UWORD unsigned short
#endif
/* Memory map constants */
#define Z80_MAP_DIRECT 0 /* Reads/writes are done directly */
#define Z80_MAP_HANDLED 1 /* Reads/writes use a function handler */
/* Z80 registers */
typedef enum {
Z80_REG_AF=0,
Z80_REG_BC,
Z80_REG_DE,
Z80_REG_HL,
Z80_REG_IX,
Z80_REG_IY,
Z80_REG_PC,
Z80_REG_SP,
Z80_REG_AF2,
Z80_REG_BC2,
Z80_REG_DE2,
Z80_REG_HL2,
Z80_REG_IFF1, /* boolean - 1 or 0 */
Z80_REG_IFF2, /* boolean - 1 or 0 */
Z80_REG_IR,
Z80_REG_IM, /* 0, 1, or 2 */
Z80_REG_IRQVector, /* 0x00 to 0xff */
Z80_REG_IRQLine, /* boolean - 1 or 0 */
Z80_REG_Halted /* boolean - 1 or 0 */
} z80_register;
/* Z80 main functions */
void z80_Reset(void);
int z80_emulate(int cycles);
void z80_raise_IRQ(UBYTE vector);
void z80_lower_IRQ(void);
void z80_cause_NMI(void);
/* Z80 context functions */
int z80_get_context_size(void);
void z80_set_context(void *context);
void z80_get_context(void *context);
UWORD z80_get_reg(z80_register reg);
void z80_set_reg(z80_register reg, UWORD value);
/* Z80 cycle functions */
int z80_get_cycles_elapsed(void);
void z80_stop_emulating(void);
void z80_skip_idle(void);
void z80_do_wait_states(int n);
/* Z80 I/O functions */
void z80_init_memmap(void);
void z80_map_fetch(UWORD start, UWORD end, UBYTE *memory);
void z80_map_read(UWORD start, UWORD end, UBYTE *memory);
void z80_map_write(UWORD start, UWORD end, UBYTE *memory);
void z80_add_read(UWORD start, UWORD end, int method, void *data);
void z80_add_write(UWORD start, UWORD end, int method, void *data);
void z80_set_in(UBYTE (*handler)(UWORD port));
void z80_set_out(void (*handler)(UWORD port, UBYTE value));
void z80_set_reti(void (*handler)(void));
void z80_set_fetch_callback(void (*handler)(UWORD pc));
void z80_end_memmap(void);
#ifdef __cplusplus
};
#endif
#endif /* __RAZE_H_INCLUDED__ */