From 2b92849295b8761374446581a28add4c21c090bd Mon Sep 17 00:00:00 2001
From: robalb <11277482+robalb@users.noreply.github.com>
Date: Sun, 3 Nov 2024 10:27:22 +0100
Subject: [PATCH 1/5] license
---
LICENSE.txt | 15 +++++++++++++++
emscripten_blink/field_notes/roadmap.md | 11 ++++++++++-
2 files changed, 25 insertions(+), 1 deletion(-)
create mode 100644 LICENSE.txt
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..709a034
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright 2024 Alberto Ventafridda
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/emscripten_blink/field_notes/roadmap.md b/emscripten_blink/field_notes/roadmap.md
index 2616773..c5637b9 100644
--- a/emscripten_blink/field_notes/roadmap.md
+++ b/emscripten_blink/field_notes/roadmap.md
@@ -62,6 +62,14 @@ every example should be the combo codestring,Assemblers_key.
we can then create a custom webappstate serializer that takes this combo and
generates a webappstate, that is passed to setWebAppState
+Open Source code:
+- Blink: ISC https://github.com/jart/blink/blob/master/LICENSE
+- Svelte: MIT https://github.com/sveltejs/svelte?tab=MIT-1-ov-file#readme
+- vitejs: MIT https://github.com/vitejs/vite?tab=MIT-1-ov-file#readme
+- Melt UI: MIT https://github.com/melt-ui/melt-ui?tab=MIT-1-ov-file#readme
+Binaries:
+- binutils: GNU V2 https://github.com/bminor/binutils-gdb?tab=License-1-ov-file#readme
+- Fasm: https://github.com/tgrysztar/fasm?tab=License-1-ov-file#readme
actual Todo list:
@@ -69,7 +77,7 @@ actual Todo list:
- [x] define diagnosticparser interface, associated to an assemblerMode.
a diagnosticParse should parse the stout of a compiler when assembly fails,
generating a standardized diagnostic output that is used by the editor to render error lines
-- add line error support to the editor.
+- [x] add line error support to the editor.
this snippet shows how to tap in the editor renderer to add line highlights
https://stackblitz.com/edit/vitejs-vite-y5pwon?file=src%2Fmain.ts,readme.md
In the editor component, we'll need to listen to store.diagnostics, and when
@@ -77,6 +85,7 @@ actual Todo list:
in store.notifyEditorContent we should add a line that resets the diagnostics
+
### backlog
- editor tooltip for asm guide, like in compiler explorer
https://stackblitz.com/edit/vitejs-vite-z2fgpu?file=src%2Fmain.ts
From 29be83b1fe944b52ce6fc692a729d552c35d4b64 Mon Sep 17 00:00:00 2001
From: robalb <11277482+robalb@users.noreply.github.com>
Date: Sun, 3 Nov 2024 12:21:57 +0100
Subject: [PATCH 2/5] minor readme updates
---
readme.md => README.md | 8 ++++----
emscripten_blink/field_notes/roadmap.md | 1 +
2 files changed, 5 insertions(+), 4 deletions(-)
rename readme.md => README.md (67%)
diff --git a/readme.md b/README.md
similarity index 67%
rename from readme.md
rename to README.md
index 4c1d5cd..1418370 100644
--- a/readme.md
+++ b/README.md
@@ -1,14 +1,14 @@
# x86-64 playground
-A browser-based x86-64 assembly playground, powered by a WebAssembly port of the lightweight Blink emulator.
+A browser-based x86-64 assembly playground, powered by a WebAssembly port of the Blink emulator.
-Try a demo on https://x64.halb.it
+Online at https://x64.halb.it
The project is composed of two elements:
-- `emscripten_blink` a fork of the [blink](https://github.com/jart/blink/) x86-64 emulator, modified to expose a javascript api when compiled for webassembly.
-- `svelte_blinkenweb` a svelte webapp implementing a mobile-friendly frontend for the blink wasm emulator.
+- `emscripten_blink` a fork of the [blink](https://github.com/jart/blink/) x86-64 emulator, compiled to WebAssembly and modified to expose a typescript API
+- `svelte_blinkenweb` a svelte web app implementing a mobile-friendly frontend for the blink Wasm emulator.
The assemblers provided by the app are traditional x86-64 ELFs, emulated client-side in the blink runtime.
diff --git a/emscripten_blink/field_notes/roadmap.md b/emscripten_blink/field_notes/roadmap.md
index c5637b9..c134656 100644
--- a/emscripten_blink/field_notes/roadmap.md
+++ b/emscripten_blink/field_notes/roadmap.md
@@ -88,6 +88,7 @@ actual Todo list:
### backlog
- editor tooltip for asm guide, like in compiler explorer
+ https://github.com/compiler-explorer/compiler-explorer/blob/main/lib/asm-docs/generated/asm-docs-amd64.ts
https://stackblitz.com/edit/vitejs-vite-z2fgpu?file=src%2Fmain.ts
- invert taborder in the control rows. on desktop the current order is bad
- service worker. Understand: is github pages good enough for caching?
From 1d3bd57987ce3cce39ad2ea0c830715465f869d9 Mon Sep 17 00:00:00 2001
From: alberto ventafridda <11277482+robalb@users.noreply.github.com>
Date: Fri, 8 Nov 2024 18:09:18 +0100
Subject: [PATCH 3/5] Update README.md
---
README.md | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 1418370..49a3aea 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,10 @@
# x86-64 playground
-A browser-based x86-64 assembly playground, powered by a WebAssembly port of the Blink emulator.
+An online assembly editor and debugger for the x86-64 architecture, powered by a Wasm port of the Blink x86-64-linux emulator. Online at https://x64.halb.it
-Online at https://x64.halb.it
+The quickest way to run, debug, and share assembly snippets for a wide range of popular assemblers, including GNU binutils, Fasm, and Nasm.
+
+# Screenshots
From 50a87933dbf743333e9e32bad9cd245490f6bbda Mon Sep 17 00:00:00 2001
From: robalb <11277482+robalb@users.noreply.github.com>
Date: Sun, 10 Nov 2024 01:06:46 +0100
Subject: [PATCH 4/5] favicon
---
svelte_blinkenweb/index.html | 8 ++++-
svelte_blinkenweb/public/apple-touch-icon.png | Bin 0 -> 5046 bytes
svelte_blinkenweb/public/favicon-96x96.png | Bin 0 -> 4449 bytes
svelte_blinkenweb/public/favicon.ico | Bin 0 -> 15086 bytes
svelte_blinkenweb/public/favicon.svg | 28 ++++++++++--------
svelte_blinkenweb/public/site.webmanifest | 21 +++++++++++++
.../public/web-app-manifest-192x192.png | Bin 0 -> 5584 bytes
.../public/web-app-manifest-512x512.png | Bin 0 -> 20070 bytes
8 files changed, 44 insertions(+), 13 deletions(-)
create mode 100644 svelte_blinkenweb/public/apple-touch-icon.png
create mode 100644 svelte_blinkenweb/public/favicon-96x96.png
create mode 100644 svelte_blinkenweb/public/favicon.ico
create mode 100644 svelte_blinkenweb/public/site.webmanifest
create mode 100644 svelte_blinkenweb/public/web-app-manifest-192x192.png
create mode 100644 svelte_blinkenweb/public/web-app-manifest-512x512.png
diff --git a/svelte_blinkenweb/index.html b/svelte_blinkenweb/index.html
index a2c338c..f70e9d2 100644
--- a/svelte_blinkenweb/index.html
+++ b/svelte_blinkenweb/index.html
@@ -2,9 +2,15 @@
+
+
+
+
+
+
+
-
x86-64 playground
diff --git a/svelte_blinkenweb/public/apple-touch-icon.png b/svelte_blinkenweb/public/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..12bb480e83d086d66ce298a03090eb1e826e2832
GIT binary patch
literal 5046
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
literal 0
HcmV?d00001
diff --git a/svelte_blinkenweb/public/favicon.svg b/svelte_blinkenweb/public/favicon.svg
index 1609384..ebcc4bc 100644
--- a/svelte_blinkenweb/public/favicon.svg
+++ b/svelte_blinkenweb/public/favicon.svg
@@ -1,12 +1,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/svelte_blinkenweb/public/site.webmanifest b/svelte_blinkenweb/public/site.webmanifest
new file mode 100644
index 0000000..2dd8b90
--- /dev/null
+++ b/svelte_blinkenweb/public/site.webmanifest
@@ -0,0 +1,21 @@
+{
+ "name": "x64 playground",
+ "short_name": "x64",
+ "icons": [
+ {
+ "src": "/web-app-manifest-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "/web-app-manifest-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ],
+ "theme_color": "#343434",
+ "background_color": "#1c1e24",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/svelte_blinkenweb/public/web-app-manifest-192x192.png b/svelte_blinkenweb/public/web-app-manifest-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe34c299a16e37bc43d5fdc651da9e43a272a560
GIT binary patch
literal 5584
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
literal 0
HcmV?d00001
diff --git a/svelte_blinkenweb/public/web-app-manifest-512x512.png b/svelte_blinkenweb/public/web-app-manifest-512x512.png
new file mode 100644
index 0000000000000000000000000000000000000000..48a164f0158d34a97bcbf509ddf4e26721c71c18
GIT binary patch
literal 20070
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
a3Vzi48EAOhZ+phV00f?{elF{r5}E+{@$c&Z
literal 0
HcmV?d00001
From b347ca9ceab11c23eaf48585c54e9030536dc99a Mon Sep 17 00:00:00 2001
From: robalb <11277482+robalb@users.noreply.github.com>
Date: Sun, 10 Nov 2024 15:58:51 +0100
Subject: [PATCH 5/5] seo
---
svelte_blinkenweb/index.html | 4 ++--
svelte_blinkenweb/public/robots.txt | 3 +++
svelte_blinkenweb/public/site.webmanifest | 13 ++++++++++++-
3 files changed, 17 insertions(+), 3 deletions(-)
create mode 100644 svelte_blinkenweb/public/robots.txt
diff --git a/svelte_blinkenweb/index.html b/svelte_blinkenweb/index.html
index f70e9d2..d0abdaa 100644
--- a/svelte_blinkenweb/index.html
+++ b/svelte_blinkenweb/index.html
@@ -13,14 +13,14 @@
x86-64 playground
-
+
-
+
diff --git a/svelte_blinkenweb/public/robots.txt b/svelte_blinkenweb/public/robots.txt
new file mode 100644
index 0000000..297e070
--- /dev/null
+++ b/svelte_blinkenweb/public/robots.txt
@@ -0,0 +1,3 @@
+User-agent: *
+Allow: /
+
diff --git a/svelte_blinkenweb/public/site.webmanifest b/svelte_blinkenweb/public/site.webmanifest
index 2dd8b90..078de71 100644
--- a/svelte_blinkenweb/public/site.webmanifest
+++ b/svelte_blinkenweb/public/site.webmanifest
@@ -1,6 +1,8 @@
{
+ "id": "playground/v1"
"name": "x64 playground",
"short_name": "x64",
+ "description": "An online assembly editor and debugger for the x86-64 architecture. The quickest way to run, debug, and share assembly snippets for a wide range of amd64 assemblers - GNU binutils, Fasm, Nasm",
"icons": [
{
"src": "/web-app-manifest-192x192.png",
@@ -15,7 +17,16 @@
"purpose": "maskable"
}
],
+ "screenshots": [
+ {
+ "src": "/card.jpg",
+ "sizes": "1760x1070",
+ "label": "Screenshot showing a web app composed of multiple panes with a dark theme. The leftmost pane is a text editor showing an assembly code snippet. the other panes show debugger data like registers and a hexdump of the stack layout of a process."
+
+ }
+ ],
"theme_color": "#343434",
+ "categories": ["education", "programming"],
"background_color": "#1c1e24",
"display": "standalone"
-}
\ No newline at end of file
+}