diff --git a/buildroot-v86/board/v86/rootfs_overlay/root/bin/download b/buildroot-v86/board/v86/rootfs_overlay/root/bin/download new file mode 100755 index 0000000..278aebc --- /dev/null +++ b/buildroot-v86/board/v86/rootfs_overlay/root/bin/download @@ -0,0 +1,42 @@ +#!/bin/sh +source /etc/profile.sh + +file(){ + javascript=' + + filename="'$(pwd)/$1'" + res = "" + + function saveUint8Array(uint8Array, filename = "download.bin", mimeType = "application/octet-stream") { + if( !uint8Array ){ + console.log( res = "file not found" ) + return false + } + const blob = new Blob([uint8Array], { type: mimeType }); + const url = URL.createObjectURL(blob); + + const a = document.createElement("a"); + a.href = url; + a.download = filename.replace(/.*\//,""); + + // Programmatically trigger the click event + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + + // Clean up the URL object + URL.revokeObjectURL(url); + } + + let term = document.querySelector("[isoterminal]") + term.emit("read_file", [filename, (str,buf) => saveUint8Array(buf, filename) ] ) + + return res + ' + hook save + js "$javascript" + exit +} + +test -n "$1" && file "$1" +echo "Usage: download [file] # pass no argument to save VM state to localStorage" diff --git a/buildroot-v86/board/v86/rootfs_overlay/root/bin/save b/buildroot-v86/board/v86/rootfs_overlay/root/bin/save index 889b33f..3398af8 100755 --- a/buildroot-v86/board/v86/rootfs_overlay/root/bin/save +++ b/buildroot-v86/board/v86/rootfs_overlay/root/bin/save @@ -16,43 +16,6 @@ state(){ exit } -file(){ - javascript=' - - filename="'$(pwd)/$1'" - res = "" - - function saveUint8Array(uint8Array, filename = "download.bin", mimeType = "application/octet-stream") { - if( !uint8Array ){ - console.log( res = "file not found" ) - return false - } - const blob = new Blob([uint8Array], { type: mimeType }); - const url = URL.createObjectURL(blob); - - const a = document.createElement("a"); - a.href = url; - a.download = filename.replace(/.*\//,""); - - // Programmatically trigger the click event - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - - // Clean up the URL object - URL.revokeObjectURL(url); - } - - let term = document.querySelector("[isoterminal]") - term.emit("read_file", [filename, (str,buf) => saveUint8Array(buf, filename) ] ) - - return res - ' - hook save - js "$javascript" - exit -} - test -z "$1" && state -test -n "$1" && file "$1" -echo "Usage: save [file] # pass no argument to save VM state to localStorage" +echo "Usage: save" +echo "it saves VM state to localStorage" diff --git a/dist/v86-linux.iso b/dist/v86-linux.iso index 60d1733..ecf42c0 100644 Binary files a/dist/v86-linux.iso and b/dist/v86-linux.iso differ