85 lines
2.2 KiB
HTML
85 lines
2.2 KiB
HTML
<!doctype html>
|
|
<title>Archlinux</title>
|
|
|
|
<script src="../build/libv86.js"></script>
|
|
<script>
|
|
"use strict";
|
|
|
|
window.onload = function()
|
|
{
|
|
var emulator = new V86Starter({
|
|
wasm_path: "../build/v86.wasm",
|
|
memory_size: 512 * 1024 * 1024,
|
|
vga_memory_size: 8 * 1024 * 1024,
|
|
screen_container: document.getElementById("screen_container"),
|
|
bios: {
|
|
url: "../bios/seabios.bin",
|
|
},
|
|
vga_bios: {
|
|
url: "../bios/vgabios.bin",
|
|
},
|
|
filesystem: {
|
|
baseurl: "../images/arch/",
|
|
basefs: "../images/fs.json",
|
|
},
|
|
autostart: true,
|
|
bzimage_initrd_from_filesystem: true,
|
|
cmdline: [
|
|
"rw",
|
|
"root=host9p rootfstype=9p rootflags=trans=virtio,cache=loose",
|
|
"init=/usr/bin/init-openrc",
|
|
].join(" "),
|
|
});
|
|
|
|
document.getElementById("save_file").onclick = function()
|
|
{
|
|
emulator.save_state(function(error, new_state)
|
|
{
|
|
if(error)
|
|
{
|
|
throw error;
|
|
}
|
|
|
|
var a = document.createElement("a");
|
|
a.download = "v86state.bin";
|
|
a.href = window.URL.createObjectURL(new Blob([new_state]));
|
|
a.dataset.downloadurl = "application/octet-stream:" + a.download + ":" + a.href;
|
|
a.click();
|
|
});
|
|
|
|
this.blur();
|
|
};
|
|
|
|
document.getElementById("restore_file").onchange = function()
|
|
{
|
|
if(this.files.length)
|
|
{
|
|
var filereader = new FileReader();
|
|
emulator.stop();
|
|
|
|
filereader.onload = function(e)
|
|
{
|
|
emulator.restore_state(e.target.result);
|
|
emulator.run();
|
|
};
|
|
|
|
filereader.readAsArrayBuffer(this.files[0]);
|
|
|
|
this.value = "";
|
|
}
|
|
|
|
this.blur();
|
|
};
|
|
};
|
|
</script>
|
|
|
|
<input id="save_file" type="button" value="Save state to file">
|
|
Restore from file: <input id="restore_file" type="file">
|
|
<hr>
|
|
|
|
<!-- A minimal structure for the ScreenAdapter defined in browser/screen.js -->
|
|
<div id="screen_container">
|
|
<div style="white-space: pre; font: 14px monospace; line-height: 14px"></div>
|
|
<canvas style="display: none"></canvas>
|
|
</div>
|