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__ */