view emulator/mem.c @ 25:45340c2a38c5

tidier and less buggier
author james <jb302@eecs.qmul.ac.uk>
date Fri, 28 Feb 2014 17:21:11 +0000
parents 50dd22c1ccba
children a542cd390efd
line wrap: on
line source
/* mem.c
 * functions for accessing emulator memory 
 * should tell the dbgi about changes in mem*/
#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];
            break;
        case 1:
            return registers.R[reg + 0x03];
            break;
    }
}

void
set_R(BYTE reg, _Bool bank, BYTE data) {
    switch(bank) {
        case 0:
            registers.R[reg] = data;
            break;
        case 1:
            registers.R[reg + 0x03] = data;
            break;
    }
}

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);
}