From 899a1a4722d43e14eb3ff69bb8fba566be801e6b Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Sat, 27 Oct 2018 20:40:01 -0700 Subject: [PATCH] Add bootstrapping stub --- index.html | 1 + res/SPLASH.PIC.BIN | Bin 0 -> 8192 bytes res/icon128.png | Bin 0 -> 29643 bytes server.js | 31 +++++++++++++++++++++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 res/SPLASH.PIC.BIN create mode 100644 res/icon128.png diff --git a/index.html b/index.html index 5360660..8113ef0 100644 --- a/index.html +++ b/index.html @@ -7,5 +7,6 @@ video, canvas { border: 2px dotted black; }
+ diff --git a/res/SPLASH.PIC.BIN b/res/SPLASH.PIC.BIN new file mode 100644 index 0000000000000000000000000000000000000000..49916a3ee0aaa606bbd0cb5c58b543a4210a7bb6 GIT binary patch literal 8192 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 S8NRUq0000 { + + const CLIENT_ADDR = 0x6000; + const CLIENT_FILE = 'client/client.bin'; + + function send(str) { + // TODO: Send this over serial, obviously... + console.log(str); + } + + send('CALL -151'); // Enter Monitor + + const response = await fetch(CLIENT_FILE); + if (!response.ok) + throw new Error(response.statusText); + const bytes = new Uint8Array(await response.arrayBuffer()); + let addr = CLIENT_ADDR; + for (let offset = 0; offset < bytes.length; offset += 8) { + const str = addr.toString(16).toUpperCase() + ': ' + + [...bytes.slice(offset, offset + 8)] + .map(b => ('00' + b.toString(16).toUpperCase()).substr(-2)) + .join(' '); + + send(str); + } + + send('\x03'); // Ctrl+C - Exit Monitor + send(`CALL ${CLIENT_ADDR}`); // Execute client + }); + })();