control keys, dobackslash
[watForth.git] / forth.js
index ffe8044..a392095 100644 (file)
--- a/forth.js
+++ b/forth.js
@@ -50,7 +50,7 @@ const channels = [{
   write: (readAddr, maxBytes) =>
     output.print(String.fromCharCode.apply(
       null,
-      new Uint16Array(wasmMem.buffer, readAddr, maxBytes)
+      new Uint16Array(wasmMem.buffer, readAddr, maxBytes >> 1)
     ))
 }]
 const simstack = []
@@ -93,6 +93,7 @@ const dictionary = {
   'CHANNEL!': 35,
   'HERE!': 36,
   '=?': 37,
+  '.s': 38,
   ':': 16800,
   'MODE': 14336,
   'EXECUTE-MODE': 16680,
@@ -106,16 +107,11 @@ const wasmImport = {
     rinit: () => rstack.length = 0,
     rpop: () => rstack.pop(),
     rpush: (val) => rstack.push(val),
-    sys_write: (channel, fromBuffer) => {
+    sys_write: (channel, addr, u) => {
       if (channels[channel] === undefined)
        return
-      const maxBytes = new DataView(
-       wasmMem.buffer,
-       fromBuffer,
-       4
-      ).getUint32(0,true)
-      console.log(`write ch:${channel} addr:${fromBuffer} len:${maxBytes}`)
-      channels[channel].write(fromBuffer + 4, maxBytes)
+      console.log(`write ch:${channel} addr:${addr} len:${u}`)
+      channels[channel].write(addr, u)
     },
     sys_read: (channel, toBuffer) => {
       console.log(`read ch:${channel} buf:${toBuffer} current: ${stdin}`)