27 lines
581 B
JavaScript
27 lines
581 B
JavaScript
import { Assembler } from './asm.js';
|
|
|
|
const assemble = (async () => {
|
|
const asm = new Assembler();
|
|
const resp = await fetch('wipforth.ws');
|
|
for await (const chunk of resp.body) {
|
|
asm.push(chunk);
|
|
}
|
|
return asm.wasm();
|
|
})();
|
|
|
|
self.onmessage = async (e) => {
|
|
switch (e.data.type) {
|
|
case "load":
|
|
const exports = { emu: { mem: e.data.mem } };
|
|
const wasm = await assemble;
|
|
self.mod = await WebAssembly.instantiate(wasm, exports);
|
|
await self.postMessage('ready');
|
|
break;
|
|
|
|
case "boot":
|
|
self.mod.instance.exports.reset();
|
|
console.log('System halt');
|
|
break;
|
|
}
|
|
};
|