blob: 42991fa34e4371962eb44e687e82c025d3d4687d [file] [log] [blame] [raw]
<!doctype html>
<title>Serial example</title>
<script src="../build/libv86.js"></script>
<script>
"use strict";
window.onload = function()
{
var emulator = new V86Starter({
// Uncomment to see what's going on
//screen_container: document.getElementById("screen_container"),
bios: {
url: "../bios/seabios.bin",
},
vga_bios: {
url: "../bios/vgabios.bin",
},
cdrom: {
url: "../images/linux.iso",
},
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: "login:",
send: "root\n",
},
{
test: "/root% ",
send: "ls -1 --color=never /\n",
},
{
test: "/root% ",
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>