-memory[RSP0] = size_BIVar # bottom of RS
-memory[PSP0] = memory[RSP0] + size_RS # bottom of PS
-TIB = memory[PSP0] + size_PS # address of terminal input buffer
-memory[HERE] = TIB + size_TIB # location of bottom of dictionary
-memory[LATEST] = 0 # no previous definition
+mem[RSP0] = nextVarAddr # bottom of RS
+mem[PSP0] = mem[RSP0] + size_RS # bottom of PS
+TIB = mem[PSP0] + size_PS # address of terminal input buffer
+mem[HERE] = TIB + size_TIB # location of bottom of dictionary
+mem[LATEST] = 0 # no previous definition
+
+DICT = mem[HERE] # Save bottom of dictionary as constant
+
+# VM registers
+type Reg
+ RSP::Int64 # Return stack pointer
+ PSP::Int64 # Parameter/data stack pointer
+ IP::Int64 # Instruction pointer
+ W::Int64 # Working register
+ X::Int64 # Extra register
+end
+reg = Reg(mem[RSP0], mem[PSP0], 0, 0, 0)
+
+# Stack manipulation
+
+type StackUnderflow <: Exception end