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 +}