home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
messroms.de
/
2007-01-13_www.messroms.de.zip
/
VZ200
/
TOOLS
/
DZ80.ZIP
/
z80.h
< prev
Wrap
C/C++ Source or Header
|
1999-06-15
|
2KB
|
95 lines
#define PACKED __attribute__((__packed__))
typedef int BOOL; // BOOL
typedef signed char OFS8; // offset
typedef unsigned char BYTE; // BYTE
typedef unsigned short WORD; // WORD
typedef unsigned int DWORD; // DWORD
typedef long long LLONG; // LLONG
typedef struct tagFLAG {// flag set
unsigned c:1; // carry
unsigned n:1; // negative
unsigned p:1; // parity/overflow
unsigned x:1; // unknown
unsigned h:1; // half carry
unsigned y:1; // unknown
unsigned z:1; // zero
unsigned s:1; // sign
} FLAG PACKED;
typedef union tagREG { // registers union
BYTE r8[2]; // low, high BYTE
WORD r16; // WORD (intel)
FLAG f; // flags
} REG PACKED;
typedef struct tagZ80 {
REG bc;
REG de;
REG hl;
REG sp;
REG af;
REG ix;
REG iy;
REG af2;
REG bc2;
REG de2;
REG hl2;
REG ri;
REG pc;
BYTE imode;
BYTE IEN;
BYTE data_tmp;
BYTE port_tmp;
DWORD addr_xy;
DWORD addr_jmp;
DWORD addr_src;
DWORD addr_dst;
BYTE data_xff[4];
} Z80;
#define BC z80->bc.r16
#define DE z80->de.r16
#define HL z80->hl.r16
#define AF z80->af.r16
#define IX z80->ix.r16
#define IY z80->iy.r16
#define SP z80->sp.r16
#define BC2 z80->bc2.r16
#define DE2 z80->de2.r16
#define HL2 z80->hl2.r16
#define AF2 z80->af2.r16
#define PC z80->pc.r16
#define B z80->bc.r8[1]
#define C z80->bc.r8[0]
#define D z80->de.r8[1]
#define E z80->de.r8[0]
#define H z80->hl.r8[1]
#define L z80->hl.r8[0]
#define A z80->af.r8[1]
#define F z80->af.f
#define I z80->ri.r8[1]
#define R z80->ri.r8[0]
#define HX z80->ix.r8[1]
#define LX z80->ix.r8[0]
#define HY z80->iy.r8[1]
#define LY z80->iy.r8[0]
#define HS z80->sp.r8[1]
#define LS z80->sp.r8[0]
#define fC z80->af.f.c
#define fN z80->af.f.n
#define fX z80->af.f.x
#define fH z80->af.f.h
#define fY z80->af.f.y
#define fP z80->af.f.p
#define fZ z80->af.f.z
#define fS z80->af.f.s
extern BYTE mem[0x10000];