Mercurial > hg > ede
view emulator/mem.h @ 12:e9dc055a0f8b
emulator skeleton code
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Sat, 11 Jan 2014 02:33:32 +0000 |
parents | bba1e3a7877b |
children | 2b8eb2c86602 |
line wrap: on
line source
/* mem.h * emultor memory structure and access function definitions */ #ifndef MEM_H #define MEM_H /* data types * - 8 bit BYTE * - 16 bit WIDE */ typedef unsigned char BYTE; typedef unsigned short WIDE; /* emulator memory * - registers * - 64kB 16-bit main memory */ struct registers { /* 16 bit registers */ WIDE PC; /* DPTR */ BYTE DPH; BYTE DPL; /* SP */ BYTE SPH; BYTE SPL; /* 8 bit registers * bank 0: R[0x00 - 0x02] * bank 1: R[0x03 - 0x06] */ BYTE R[0x06]; BYTE A; BYTE flags; } registers; BYTE memory[0x10000]; /* memory access function definitions * - fetch() returns BYTE * - read_mem(WIDE) returns BYTE * - write_mem(WIDE, BYTE) * - set_PC(WIDE) * - get_PC() returns WIDE * - get_R(BYTE, BOOL) returns BYTE * - set_R(BYTE, BOOL, BYTE) * - get_A() returns BYTE * - set_A(BYTE) * - get_DPH() returns BYTE * - set_DPH(BYTE) * - get DPL() returns BYTE * - set_DPL(BYTE) * - get_SPH() returns BYTE * - set_SPH(BYTE) * - get_SPL() returns BYTE * - set_SPL(BYTE) * - get_flags() returns BYTE * - set_flags(BYTE) * - get_DPTR() returns WIDE * - set_DPTR(WIDE) * - get_SP() returns WIDE * - set_SP(WIDE) */ BYTE fetch(void); BYTE read_mem(WIDE addr); void write_mem(WIDE addr, BYTE data); WIDE get_PC(void); void set_PC(WIDE data); BYTE get_R(BYTE reg, _Bool bank); void set_R(BYTE reg, _Bool bank, BYTE data); BYTE get_A(void); void set_A(BYTE data); BYTE get_DPH(void); void set_DPH(BYTE data); BYTE get_DPL(void); void set_DPL(BYTE data); BYTE get_SPH(void); void set_SPH(BYTE data); BYTE get_SPL(void); void set_SPL(BYTE data); BYTE get_flags(void); void set_flags(BYTE data); WIDE get_DPTR(void); void set_DPTR(WIDE data); WIDE get_SP(void); void set_SP(WIDE data); #endif