view emulator/mem.h @ 16:50dd22c1ccba

not a real commit right now I have the same number of LOC in python and c =] jmz@xthUnk:~/qm/ede$ cloc assembler/ emulator/ ... ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Python 2 42 56 341 C 3 66 65 341 C/C++ Header 2 71 29 138 ------------------------------------------------------------------------------- SUM: 7 179 150 820 -------------------------------------------------------------------------------
author james <jb302@eecs.qmul.ac.uk>
date Thu, 30 Jan 2014 15:27:02 +0000
parents 2b8eb2c86602
children a542cd390efd
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;

/* current opcode */
BYTE op;

/* 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;

    /* 7 6 5  4 3 2  1 0
     * C Z AC P S OV IE BS */
    BYTE flags;
    
} registers;

BYTE
memory[0x10000];

/* memory access function definitions
 *  - fetch() returns BYTE
 *  - read_mem(WIDE) returns BYTE
 *  - write_mem(WIDE, BYTE)
 *  - get_R(BYTE, BOOL) returns BYTE
 *  - set_R(BYTE, BOOL, 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);

BYTE
get_R(BYTE reg, _Bool bank);

void
set_R(BYTE reg, _Bool bank, BYTE data);

WIDE
get_DPTR(void);

void
set_DPTR(WIDE data);

WIDE
get_SP(void);

void
set_SP(WIDE data);

#endif