Web boots to prompt.

This commit is contained in:
Brad Nelson
2022-07-14 13:49:31 -07:00
parent 521c756031
commit 9d79b26e9e
2 changed files with 19 additions and 17 deletions

View File

@ -19,9 +19,9 @@ forth definitions internals
( Bring a forth to the top of the vocabulary. )
: ok ." uEforth" raw-ok ;
: dummy-type 2drop yield ; ' dummy-type is type
: dummy-key yield 0 ; ' dummy-key is key
: dummy-key? yield 0 ; ' dummy-key? is key?
: web-type 0 call ; ' web-type is type
: web-key yield 0 ; ' web-key is key
: web-key? yield 0 ; ' web-key? is key?
transfer forth
forth

View File

@ -25,7 +25,7 @@ const SMUDGE = 2;
const BUILTIN_FORK = 4;
const BUILTIN_MARK = 8;
const DEBUGGING = true;
const DEBUGGING = false;
{{boot}}
@ -36,23 +36,25 @@ var u16 = new Uint16Array(heap);
var u8 = new Uint8Array(heap);
var builtins = [];
var opcodes = {};
var objects = [SetEval];
var objects = [Type, Eval];
{{sys}}
function SetEval(sp) {
var index = i32[sp--];
var len = i32[sp--];
var code_addr = i32[sp--];
var code = '';
for (var i = 0; i < len; ++i) {
code += String.fromCharCode(u8[name_addr + i]);
}
objects[index] = eval(code);
function Type(sp) {
var n = i32[sp>>2]; sp -= 4;
var a = i32[sp>>2]; sp -= 4;
console.log(GetString(a, n));
}
function Call(sp, tos) {
return objects[tos](sp);
function Eval(sp) {
var n = i32[sp>>2]; sp -= 4;
var a = i32[sp>>2]; sp -= 4;
eval(GetString(a, n));
}
function Call(sp) {
var op = i32[sp>>2]; sp -= 4;
return objects[op](sp);
}
function Load(addr, content) {
@ -533,7 +535,7 @@ function VM(stdlib, foreign, heap) {
fp = i32[rp>>2]|0; rp = (rp - 4)|0;
tos = i32[sp>>2]|0; sp = (sp - 4)|0;
for (;;) {
trace(ip|0, sp|0, tos|0);
//trace(ip|0, sp|0, tos|0);
w = i32[ip>>2]|0;
ip = (ip + 4)|0;
decode: for (;;) {