view emulator/mem.h @ 11:bba1e3a7877b

(.Y.)
author james <jb302@eecs.qmul.ac.uk>
date Sun, 08 Dec 2013 18:50:57 +0000
parents 484a6777511b
children e9dc055a0f8b
line wrap: on
line source
// mem.h
#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 {
    // 8 bit registers
    BYTE A;
    BYTE R0;
    BYTE R1;
    BYTE R2;
    BYTE R3;
    BYTE flags;
    
    // 16 bit registers
    WIDE DPTR;
    WIDE SP;
    WIDE PC;
};

BYTE
memory[0x10000];

/*
 * memory access function definitions
 *  - read_mem(WIDE) returns BYTE
 *  - write_mem(WIDE, BYTE) 
 *  - fetch() returns BYTE
 *  - set_pc(WIDE)
 *  - get_reg(BYTE) returns BYTE
 *  - set_reg(BYTE, BYTE)
 *  - get_reg_wide(BYTE) returns WIDE
 *  - set_reg_wide(BYTE, WIDE)
 */

BYTE
read_mem(WIDE addr);

void
write_mem(WIDE addr, BYTE data);

BYTE
fetch(void);

void
set_pc(WIDE data);

BYTE
get_reg(BYTE reg);

void
set_reg(BYTE reg, BYTE data);

WIDE
get_reg_wide(BYTE reg);

void
set_reg_wide(BYTE reg, WIDE data);

#endif