Mercurial > hg > ede
view emulator/mem.c @ 14:2b8eb2c86602
Major update to assembler design, now handles labels proper.
Next step unit test
Added boot procedure and experimental function look up table to emulator
Started implementing operations
tested SET and CLR operations with success
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Wed, 29 Jan 2014 20:11:07 +0000 |
parents | e9dc055a0f8b |
children | 26044ed126fb |
line wrap: on
line source
/* mem.c * functions for accessing emulator memory */ #include "mem.h" BYTE fetch(void) { return memory[registers.PC]; } BYTE read_mem(WIDE addr) { return memory[addr]; } void write_mem(WIDE addr, BYTE data) { memory[addr] = data; } BYTE get_R(BYTE reg, _Bool bank) { switch(bank) { case 0: return registers.R[reg]; case 1: return registers.R[reg + 0x03]; } } void set_R(BYTE reg, _Bool bank, BYTE data) { switch(bank) { case 0: registers.R[reg] = data; case 1: registers.R[reg + 0x03] = data; } } WIDE get_DPTR(void) { return (((WIDE)registers.DPH) << 8) | registers.DPL; } void set_DPTR(WIDE data) { registers.DPH = (BYTE)((data & 0xFF00) >> 8); registers.DPL = (BYTE)(data & 0x00FF); } WIDE get_SP(void) { return (((WIDE)registers.SPH) << 8) | registers.SPL; } void set_SP(WIDE data) { registers.SPH = (BYTE)((data & 0xFF00) >> 8); registers.SPL = (BYTE)(data & 0x00FF); }