aboutsummaryrefslogtreecommitdiffstats
path: root/libalee/corewords.cpp
diff options
context:
space:
mode:
authorClyne Sullivan <clyne@bitgloo.com>2023-03-09 19:27:47 -0500
committerClyne Sullivan <clyne@bitgloo.com>2023-03-09 19:27:47 -0500
commitc5e10679c7e10345e9bf6db4efeda4f5ee7d573c (patch)
treebc2ca275730568990e0acf25cba360df1b61cd75 /libalee/corewords.cpp
parent76dfbba52449acb1f4c31eabf42f678060559ec3 (diff)
packed literals again
Diffstat (limited to 'libalee/corewords.cpp')
-rw-r--r--libalee/corewords.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/libalee/corewords.cpp b/libalee/corewords.cpp
index 4de9413..d981098 100644
--- a/libalee/corewords.cpp
+++ b/libalee/corewords.cpp
@@ -60,14 +60,14 @@ void CoreWords::run(unsigned int index, State& state)
DoubleCell dcell;
execute:
- if (/*(index & 1) == 0 &&*/ index >= WordCount) {
+ if (index >= Dictionary::Begin) {
// must be calling a defined subroutine
state.pushr(state.ip);
state.ip = index;
return;
- } else switch (index & 0x1F) {
+ } else switch (index) {
case 0: // _lit
- state.push(/*(index & 0xFF00) ? ((Addr)index >> 8u) - 1 :*/ state.beyondip());
+ state.push(state.beyondip());
break;
case 1: // drop
state.pop();
@@ -206,6 +206,9 @@ execute:
case 31: // _in
state.input(state);
break;
+ default:
+ state.push(index - WordCount);
+ break;
}
state.ip += sizeof(Cell);