v86/examples/serial.html
hello-smile6 f69706c709 Use buildroot for lua example
The linux4 image on k.copy.sh no longer has Lua. However, Buildroot has it.
(Linux 2.6 does too, but it's an older version)
2022-02-05 17:55:41 -06:00

88 lines
2.1 KiB
HTML

<!doctype html>
<title>Serial example</title>
<script src="../build/libv86.js"></script>
<script>
"use strict";
window.onload = function()
{
var emulator = new V86Starter({
wasm_path: "../build/v86.wasm",
// Uncomment to see what's going on
//screen_container: document.getElementById("screen_container"),
bios: {
url: "../bios/seabios.bin",
},
vga_bios: {
url: "../bios/vgabios.bin",
},
bzimage: {
url: "../images/buildroot-bzimage.bin",
size: 5166352,
async: false,
},
filesystem: {},
cmdline: "tsc=reliable mitigations=off random.trust_cpu=on",
autostart: true,
disable_keyboard: true,
});
// In this example we wait for output from the serial terminal, which
// should be running busybox. We log in as soon as a prompt appears and then
// retrieve a directory listing of the root directory
var data = "";
var stages = [
{
test: "~% ",
send: "ls -1 --color=never /\n",
},
{
test: "~% ",
send: "lua -e 'print(3+4)'\n",
},
];
var stage = 0;
emulator.add_listener("serial0-output-char", function(char)
{
if(char === "\r")
{
return;
}
data += char;
document.getElementById("terminal").value += char;
var current = stages[stage];
if(!current)
{
return;
}
if(data.endsWith(current.test))
{
stage++;
emulator.serial0_send(current.send);
var log = "Sending: " + current.send.replace(/\n/g, "\\n") + "\n";
document.getElementById("log").value += log;
}
});
};
</script>
<textarea readonly rows=25 cols=60 id="log">Waiting for boot ...
</textarea>
<textarea readonly rows=25 cols=60 id="terminal"></textarea>
<div id="screen_container">
<div style="white-space: pre; font: 14px monospace; line-height: 14px"></div>
<canvas style="display: none"></canvas>
</div>