diff --git a/index.html b/index.html
index 1fde67c..3ec6166 100644
--- a/index.html
+++ b/index.html
@@ -22,6 +22,7 @@
a
+
diff --git a/js/download.js b/js/download.js
new file mode 100644
index 0000000..d49214f
--- /dev/null
+++ b/js/download.js
@@ -0,0 +1,32 @@
+function download(filename, text) {
+ var element = document.createElement("a");
+ element.setAttribute(
+ "href",
+ "data:text/plain;charset=utf-8," + encodeURIComponent(text)
+ );
+ element.setAttribute("download", filename);
+
+ element.style.display = "none";
+ document.body.appendChild(element);
+
+ element.click();
+
+ document.body.removeChild(element);
+}
+function upload() {
+ return new Promise(function (resolve, reject) {
+ var element = document.createElement("input");
+ element.setAttribute("type", "file");
+ element.setAttribute("accept", ".txt");
+
+ element.style.display = "none";
+ document.body.appendChild(element);
+
+ element.addEventListener("input", async function (e) {
+ text = await element.files[0].text();
+ resolve(text);
+ document.body.removeChild(element);
+ });
+ element.click();
+ });
+}
diff --git a/js/script.js b/js/script.js
index 9bbd945..5a84c60 100644
--- a/js/script.js
+++ b/js/script.js
@@ -102,7 +102,7 @@ content.addEventListener("mousedown", function (e) {
content.addEventListener("mouseup", mouseUp);
-document.addEventListener("keydown", function (e) {
+document.addEventListener("keydown", async function (e) {
//history shit
if (e.ctrlKey == true) {
switch (e.key) {
@@ -116,7 +116,16 @@ document.addEventListener("keydown", function (e) {
drawGrid = forwards ? forwards : drawGrid;
render();
break;
-
+ case "s":
+ e.preventDefault();
+ download("ascii.txt", JSON.stringify(drawGrid));
+ break;
+ case "o":
+ e.preventDefault();
+ text = await upload();
+ drawGrid = JSON.parse(text);
+ render();
+ break;
default:
break;
}