eForth1
v2.6
|
eForth Virtual Machine module header More...
#include "eforth_core.h"
Go to the source code of this file.
Namespaces | |
EfVM | |
Macros | |
#define | RAM_FLAG 0xe000 |
#define | IDX_MASK 0x07ff |
#define | IRET_FLAG 0x8000 |
#define | BOOL(f) ((f) ? TRUE : FALSE) |
#define | RAM(i) &_ram[(i) - FORTH_RAM_ADDR] |
#define | BSET(d, c) (_ram[(d)&IDX_MASK]=(U8)(c)) |
#define | S2D(h, l) (((S32)(h)<<16) | ((l)&0xffff)) |
#define | DEPTH() ((DU)((U8*)S - RAM(FORTH_STACK_ADDR)) >> 1) |
#define | PUSH(v) { *++S = T; T = (v); } |
#define | RPUSH(v) { *--R = I; I = (v); } |
#define | POP() (T = *S--) |
#define | RPOP() (I = *R++) |
#define | DTOP(d) { *S = (d)&0xffff; T = (d)>>16; } |
Tracing | |
#define | DEBUG(s, v) |
#define | TAB() /* skip */ |
#define | TRACE(op, ip, t, s) /* skip */ |
Functions | |
U8 | EfVM::BGET (U16 d) |
U16 | EfVM::GET (U16 d) |
void | EfVM::SET (U16 d, U16 v) |
eForth Virtual Machine module header
Note: Dr. Ting uses U8 (0~255) for wrap-around control
#define RAM_FLAG 0xe000 |
RAM ranger (0x2000~0x7fff)
#define IDX_MASK 0x07ff |
RAM index mask (0x0000~0x07ff)
#define IRET_FLAG 0x8000 |
interrupt return flag
#define RAM | ( | i | ) | &_ram[(i) - FORTH_RAM_ADDR] |
#define S2D | ( | h, | |
l | |||
) | (((S32)(h)<<16) | ((l)&0xffff)) |
#define DEPTH | ( | ) | ((DU)((U8*)S - RAM(FORTH_STACK_ADDR)) >> 1) |
push a value onto stack top
#define PUSH | ( | v | ) | { *++S = T; T = (v); } |
#define RPUSH | ( | v | ) | { *--R = I; I = (v); } |
#define POP | ( | ) | (T = *S--) |
#define RPOP | ( | ) | (I = *R++) |
#define DTOP | ( | d | ) | { *S = (d)&0xffff; T = (d)>>16; } |
#define DEBUG | ( | s, | |
v | |||
) |
#define TAB | ( | ) | /* skip */ |
#define TRACE | ( | op, | |
ip, | |||
t, | |||
s | |||
) | /* skip */ |