Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor/rules/package-app-android.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ alwaysApply: false
Android app with deep platform integration.
**Stack:** TypeScript + NativeScript (no Angular/Vue).
**UI:** Custom TypeScript components wrapping native Android widgets (e.g., `fab.ts` → `ExtendedFloatingActionButton`), Material Design 3, native look/feel.
**Events:** Use `packages/6502/event-dispatcher.ts` for cross-platform consistency.
**Events:** Use `packages/core/event-dispatcher.ts` for cross-platform consistency.
**Focus:** Platform integration, touch-friendly UI, mobile performance, reuse `6502` core + `common-ui`.
**APIs:** Direct Android SDK via NativeScript.
**Build:** NativeScript + Gradle.
Expand Down
2 changes: 1 addition & 1 deletion .cursor/rules/package-app-gnome.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ alwaysApply: false
- **UI:**
- Leverages native GNOME libraries and Adwaita for a consistent look and feel.
- UI logic primarily in GJS/TypeScript.
- **Event Handling:** Prefers the custom `event-dispatcher.ts` from `packages/6502/` over raw GNOME signals where appropriate, to maintain consistency with other platforms.
- **Event Handling:** Prefers the custom `event-dispatcher.ts` from `packages/core/` over raw GNOME signals where appropriate, to maintain consistency with other platforms.
- **Key Focus:** Deep native GNOME integration, adherence to GNOME HIG, leveraging `6502` core and `common-ui` components.
- **Platform APIs:** Directly utilizes native GNOME platform APIs through GJS for all system interactions.
- **Build:** Typically involves Meson. If Vite is used, it's likely for specific web-technology parts within GJS.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description:
globs: packages/6502/**/*
globs: packages/core/**/*
alwaysApply: false
---
## Package: `6502` (Core Emulator)
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Principles: maximize code reuse via `common-ui`/`6502` packages; keep platform c

| Package | Path | Purpose | Stack |
| --------------------- | --------------------------------- | --------------------------------------------------------------- | --------------------------------------------------- |
| 6502 (core) | `packages/6502/` | Platform-independent assembler, simulator, disassembler | TypeScript, zero deps, no UI |
| 6502 (core) | `packages/core/` | Platform-independent assembler, simulator, disassembler | TypeScript, zero deps, no UI |
| common-ui | `packages/common-ui/` | Shared UI logic, controllers, interfaces — 4-layer architecture | TypeScript, no platform deps |
| app-gnome | `packages/app-gnome/` | GNOME desktop app | TypeScript, GJS, GTK 4, Adwaita, Vite, Meson |
| app-web | `packages/app-web/` | Web app | TypeScript, HTML, CSS, Vite, Jekyll |
Expand Down Expand Up @@ -105,7 +105,7 @@ Applies to all files in `packages/app-gnome/`. Blueprint rules apply to all `.bl

Native GNOME desktop app — deep integration, GNOME HIG adherence.
Stack: TypeScript + GJS + GTK 4 + Adwaita + Vite + Meson.
Events: prefer `event-dispatcher.ts` from `packages/6502/` over raw GNOME signals.
Events: prefer `event-dispatcher.ts` from `packages/core/` over raw GNOME signals.

### Adwaita styling references

Expand Down Expand Up @@ -253,7 +253,7 @@ s.append_scaled_texture(
Applies to all files in `packages/app-android/`.

Stack: TypeScript + NativeScript (no Angular/Vue). UI: custom TS components wrapping native Android widgets, Material Design 3.
Events: `packages/6502/event-dispatcher.ts`. Build: NativeScript + Gradle.
Events: `packages/core/event-dispatcher.ts`. Build: NativeScript + Gradle.

### Reference projects

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ This project is a fork of the [original web-based easy6502 tutorial](https://git
- [app-gnome](./packages/app-gnome/): Main GNOME desktop application with Adwaita styling
- [app-android](./packages/app-android/): Android application with NativeScript
- [app-web](./packages/app-web/): Web application version
- [6502](./packages/6502/): Core 6502 assembler, simulator, and disassembler
- [core](./packages/core/): Core 6502 assembler, simulator, and disassembler (published as `@learn6502/core`)
- [common-ui](./packages/common-ui/): Shared UI components and controllers
- [learn](./packages/learn/): Tutorial content and learning materials
- [translations](./packages/translations/): Localization files and build system
Expand Down
33 changes: 0 additions & 33 deletions packages/6502/README.md

This file was deleted.

2 changes: 1 addition & 1 deletion packages/app-android/app/i18n/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@
"Snake Game Data ($00-$15)": "Snake-Spieldaten ($00-$15)",
"Snake Game Memory Usage": "Speichernutzung im Snake-Spiel",
"So far we're only able to write basic programs without any branching logic. Let's change that.": "Bisher können wir nur einfache Programme ohne Verzweigungslogik schreiben. Lass uns das ändern.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "Also, lass uns loslegen! Diese Anwendung enthält einen <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">JavaScript 6502 Assembler und Simulator</a>, den ich für dieses interaktive Tutorial angepasst habe. Klicke auf den <b>Kopieren</b>-Button im Code-Block unten, um den Beispielcode in den Editor zu kopieren. Verwende dann <b>Assemblieren</b>, um den Code zu assemblieren, und <b>Ausführen</b>, um ihn auszuführen. Du findest diese Aktionen als Buttons oder im Menü.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "Also, lass uns loslegen! Diese Anwendung enthält einen <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">JavaScript 6502 Assembler und Simulator</a>, den ich für dieses interaktive Tutorial angepasst habe. Klicke auf den <b>Kopieren</b>-Button im Code-Block unten, um den Beispielcode in den Editor zu kopieren. Verwende dann <b>Assemblieren</b>, um den Code zu assemblieren, und <b>Ausführen</b>, um ihn auszuführen. Du findest diese Aktionen als Buttons oder im Menü.",
"So, looking at <tt>upKey</tt>, if the current direction is down (4), the bit test will be zero. <tt>BNE</tt> means \"branch if the zero flag is clear\", so in this case we'll branch to <tt>illegalMove</tt>, which just returns from the subroutine. Otherwise, the new direction (1 in this case) is stored in the appropriate memory location.": "Wenn wir also <tt>upKey</tt> betrachten und die aktuelle Richtung nach unten ist (4), wird der Bit-Test Null sein. <tt>BNE</tt> bedeutet \"verzweige, wenn das Zero-Flag nicht gesetzt ist\", also werden wir in diesem Fall zu <tt>illegalMove</tt> verzweigen, was einfach aus dem Unterprogramm zurückkehrt. Andernfalls wird die neue Richtung (in diesem Fall 1) in der entsprechenden Speicheradresse gespeichert.",
"So, the instruction <tt>STA $0200</tt> stores the value of the <tt>A</tt> register to memory location <tt>$0200</tt>. Click <b>Step</b> four more times to execute the rest of the instructions, keeping an eye on the <tt>A</tt> register as it changes.": "Die Anweisung <tt>STA $0200</tt> speichert also den Wert des <tt>A</tt>-Registers an der Speicheradresse <tt>$0200</tt>. Klicke noch vier Mal auf <b>Schritt</b>, um die restlichen Anweisungen auszuführen, und beobachte dabei, wie sich das <tt>A</tt>-Register verändert.",
"So, what's this program actually doing? Let's step through it. Hit <b>Reset</b>, then use <b>Step</b> to execute the program one instruction at a time. The <b>Debug</b> view shows the registers and memory — it's a separate tab on a small window, and the panel below the game console on a wide one. Click <b>Step</b> once and you'll notice in the debug view that <tt>A=</tt> changed from <tt>$00</tt> to <tt>$01</tt>, and <tt>PC=</tt> changed from <tt>$0600</tt> to <tt>$0602</tt>.": "Was macht dieses Programm eigentlich? Lass uns es Schritt für Schritt durchgehen. Klicke auf <b>Zurücksetzen</b> und verwende dann <b>Schritt</b>, um das Programm Anweisung für Anweisung auszuführen. Die <b>Debug</b>-Ansicht zeigt die Register und den Speicher — auf einem kleinen Fenster ist sie ein eigener Tab, auf einem breiten das Panel unter der Spielkonsole. Klicke einmal auf <b>Schritt</b> und du wirst in der Debug-Ansicht sehen, dass sich <tt>A=</tt> von <tt>$00</tt> zu <tt>$01</tt> und <tt>PC=</tt> von <tt>$0600</tt> zu <tt>$0602</tt> geändert hat.",
Expand Down
2 changes: 1 addition & 1 deletion packages/app-android/app/i18n/en.default.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@
"Snake Game Data ($00-$15)": "Snake Game Data ($00-$15)",
"Snake Game Memory Usage": "Snake Game Memory Usage",
"So far we're only able to write basic programs without any branching logic. Let's change that.": "So far we're only able to write basic programs without any branching logic. Let's change that.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.",
"So, looking at <tt>upKey</tt>, if the current direction is down (4), the bit test will be zero. <tt>BNE</tt> means \"branch if the zero flag is clear\", so in this case we'll branch to <tt>illegalMove</tt>, which just returns from the subroutine. Otherwise, the new direction (1 in this case) is stored in the appropriate memory location.": "So, looking at <tt>upKey</tt>, if the current direction is down (4), the bit test will be zero. <tt>BNE</tt> means \"branch if the zero flag is clear\", so in this case we'll branch to <tt>illegalMove</tt>, which just returns from the subroutine. Otherwise, the new direction (1 in this case) is stored in the appropriate memory location.",
"So, the instruction <tt>STA $0200</tt> stores the value of the <tt>A</tt> register to memory location <tt>$0200</tt>. Click <b>Step</b> four more times to execute the rest of the instructions, keeping an eye on the <tt>A</tt> register as it changes.": "So, the instruction <tt>STA $0200</tt> stores the value of the <tt>A</tt> register to memory location <tt>$0200</tt>. Click <b>Step</b> four more times to execute the rest of the instructions, keeping an eye on the <tt>A</tt> register as it changes.",
"So, what's this program actually doing? Let's step through it. Hit <b>Reset</b>, then use <b>Step</b> to execute the program one instruction at a time. The <b>Debug</b> view shows the registers and memory — it's a separate tab on a small window, and the panel below the game console on a wide one. Click <b>Step</b> once and you'll notice in the debug view that <tt>A=</tt> changed from <tt>$00</tt> to <tt>$01</tt>, and <tt>PC=</tt> changed from <tt>$0600</tt> to <tt>$0602</tt>.": "So, what's this program actually doing? Let's step through it. Hit <b>Reset</b>, then use <b>Step</b> to execute the program one instruction at a time. The <b>Debug</b> view shows the registers and memory — it's a separate tab on a small window, and the panel below the game console on a wide one. Click <b>Step</b> once and you'll notice in the debug view that <tt>A=</tt> changed from <tt>$00</tt> to <tt>$01</tt>, and <tt>PC=</tt> changed from <tt>$0600</tt> to <tt>$0602</tt>.",
Expand Down
2 changes: 1 addition & 1 deletion packages/app-android/app/i18n/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@
"Snake Game Data ($00-$15)": "Datos del juego Snake ($00-$15)",
"Snake Game Memory Usage": "Uso de memoria del juego Snake",
"So far we're only able to write basic programs without any branching logic. Let's change that.": "Hasta ahora solo podemos escribir programas básicos sin lógica de ramificación. Cambiemos eso.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "¡Vamos allá! Esta aplicación contiene un <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/6502\">ensamblador y simulador 6502 en JavaScript</a> que he adaptado para este tutorial interactivo. Haz clic en el botón <b>Copiar</b> del bloque de código de abajo para copiar el ejemplo al editor. Después usa <b>Ensamblar</b> para ensamblar el código y <b>Ejecutar</b> para ejecutarlo. Encontrarás estas acciones como botones o en el menú.",
"So, let's dive in! This application contains a <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">JavaScript 6502 Assembler and Simulator</a> that I have adapted for this interactive tutorial. Click the <b>Copy</b> button in the code block below to copy the example code to the editor. Then use <b>Assemble</b> to assemble the code, and <b>Run</b> to run it. You can find these actions as buttons or in the menu.": "¡Vamos allá! Esta aplicación contiene un <a href=\"https://github.com/JumpLink/Learn6502/tree/main/packages/core\">ensamblador y simulador 6502 en JavaScript</a> que he adaptado para este tutorial interactivo. Haz clic en el botón <b>Copiar</b> del bloque de código de abajo para copiar el ejemplo al editor. Después usa <b>Ensamblar</b> para ensamblar el código y <b>Ejecutar</b> para ejecutarlo. Encontrarás estas acciones como botones o en el menú.",
"So, looking at <tt>upKey</tt>, if the current direction is down (4), the bit test will be zero. <tt>BNE</tt> means \"branch if the zero flag is clear\", so in this case we'll branch to <tt>illegalMove</tt>, which just returns from the subroutine. Otherwise, the new direction (1 in this case) is stored in the appropriate memory location.": "Así que, mirando <tt>upKey</tt>, si la dirección actual es hacia abajo (4), la prueba de bits será cero. <tt>BNE</tt> significa \"salta si el indicador cero está limpio\", por lo que en este caso saltaremos a <tt>illegalMove</tt>, que simplemente retorna de la subrutina. En caso contrario, se almacena la nueva dirección (1 en este caso) en la ubicación de memoria correspondiente.",
"So, the instruction <tt>STA $0200</tt> stores the value of the <tt>A</tt> register to memory location <tt>$0200</tt>. Click <b>Step</b> four more times to execute the rest of the instructions, keeping an eye on the <tt>A</tt> register as it changes.": "Así que, la instrucción <tt>STA $0200</tt> almacena el valor del registro <tt>A</tt> en la dirección de memoria <tt>$0200</tt>. Haz clic en <b>Paso</b> cuatro veces más para ejecutar el resto de instrucciones, observando cómo cambia el registro <tt>A</tt>.",
"So, what's this program actually doing? Let's step through it. Hit <b>Reset</b>, then use <b>Step</b> to execute the program one instruction at a time. The <b>Debug</b> view shows the registers and memory — it's a separate tab on a small window, and the panel below the game console on a wide one. Click <b>Step</b> once and you'll notice in the debug view that <tt>A=</tt> changed from <tt>$00</tt> to <tt>$01</tt>, and <tt>PC=</tt> changed from <tt>$0600</tt> to <tt>$0602</tt>.": "Entonces, ¿qué hace realmente este programa? Recorrámoslo paso a paso. Pulsa <b>Reiniciar</b> y luego usa <b>Paso</b> para ejecutar el programa instrucción por instrucción. La vista <b>Depurar</b> muestra los registros y la memoria: es una pestaña aparte en una ventana pequeña, y el panel debajo de la consola del juego en una ventana ancha. Haz clic en <b>Paso</b> una vez y verás en la vista <b>Depurar</b> que <tt>A=</tt> cambia de <tt>$00</tt> a <tt>$01</tt>, y <tt>PC=</tt> de <tt>$0600</tt> a <tt>$0602</tt>.",
Expand Down
Loading
Loading