From c981d270bac814ee02e6f6567c23fed1dfe89dd6 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sat, 29 Aug 2026 14:25:49 -0500 Subject: [PATCH 01/11] begin work on 6502 reverse style --- src/6502/engine.s | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/6502/engine.s b/src/6502/engine.s index 7ae9b4a..0cd48e7 100644 --- a/src/6502/engine.s +++ b/src/6502/engine.s @@ -10196,6 +10196,30 @@ fixednext nofixed jmp attrsloop noffamily + dey + bne noifrev + + ldy #cssparam_reverse + jsr css_check_param + bcc noreverse + + ldy #STY_STYON + lda (phytmp),y + ora #1 + sta (phytmp),y + jmp attrsloop +noreverse + ldy #cssparam_normal + jsr css_check_param + bcc nounreverse + + ldy #STY_STYOFF + lda (phytmp),y + ora #1 + sta (phytmp),y +nounreverse + jmp attrsloop +noifrev dey bne nomtop @@ -10412,6 +10436,7 @@ csskeywords .byt "font-style",0 .byt "font-weight",0 .byt "font-family",0 + .byt "-iftf-reverse-video",0 .byt "margin-top",0 .byt "margin-bottom",0 @@ -10428,6 +10453,10 @@ cssparam_normal = * - cssparams .byt "normal",0 cssparam_bold = * - cssparams .byt "bold",0 +cssparam_reverse = * - cssparams + .byt "reverse",0 +cssparam_none = * - cssparams + .byt "none",0 css_monospace .byt "monospace" From 342a33c9b4e22aa15e95a8e929b68f41f498fcaa Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sat, 29 Aug 2026 14:46:06 -0500 Subject: [PATCH 02/11] flesh out implementation --- src/6502/c64_frontend.s | 18 ++++++++++++------ src/6502/engine.s | 7 ++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index 31a7588..c44cfcb 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -507,22 +507,28 @@ done io_mstyle ; input a = style bits + ; 1 reverse, 2 bold, 4 italic + ; Or on C64: + ; 1 red, 2 lighter, 4 blue .( pha jsr io_mflush pla - lsr - and #3 + and #7 tax lda palette,x sta currfg rts palette - .byt $0 ; normal - .byt $b ; bold - .byt $6 ; italic - .byt $e ; italic bold + .byt $0 ; normal = black + .byt $2 ; reverse = red + .byt $b ; bold = dark gray + .byt $8 ; bold reverse = orange (light + red) + .byt $6 ; italic = blue + .byt $4 ; italic reverse = purple (blue + red) + .byt $e ; italic bold = light blue (blue + light) + .byt $a ; italic bold reverse = pink (blue + light + red) .) io_mprogress diff --git a/src/6502/engine.s b/src/6502/engine.s index 0cd48e7..5672986 100644 --- a/src/6502/engine.s +++ b/src/6502/engine.s @@ -10426,9 +10426,10 @@ CSS_FLOAT = 2 CSS_FONTSTYLE = 3 CSS_FONTWEIGHT = 4 CSS_FONTFAMILY = 5 -CSS_MARGINTOP = 6 -CSS_MARGINBTM = 7 -CSS_N = 8 +CSS_REVERSE = 6 +CSS_MARGINTOP = 7 +CSS_MARGINBTM = 8 +CSS_N = 9 csskeywords .byt "width",0 .byt "height",0 From 498df7c92256ff1a10a3f8937dde9aba0befc3c9 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sat, 29 Aug 2026 14:47:28 -0500 Subject: [PATCH 03/11] readme --- readme.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.txt b/readme.txt index 5756e62..ca2bb81 100644 --- a/readme.txt +++ b/readme.txt @@ -152,6 +152,8 @@ Release notes: 6502 engine: Fixed blank lines when printing long words. + C64 interpreter: Added "reverse" (red) styling + C64 interpreter: Added five glyphs (A with Acute, N with Tilde, Hyphen, Ellipsis, NNBSP) From 3b795924e73c81c24c1f0d59adca557ba82832e2 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sat, 29 Aug 2026 17:23:34 -0500 Subject: [PATCH 04/11] change 'normal' to 'none' as reverse value --- src/6502/engine.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/6502/engine.s b/src/6502/engine.s index 5672986..cd98894 100644 --- a/src/6502/engine.s +++ b/src/6502/engine.s @@ -10209,7 +10209,7 @@ noffamily sta (phytmp),y jmp attrsloop noreverse - ldy #cssparam_normal + ldy #cssparam_none jsr css_check_param bcc nounreverse From 391609bc139e859fb1e77657ef3a7837b3c2edad Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sun, 30 Aug 2026 13:05:07 -0500 Subject: [PATCH 05/11] tweaking colors experimentally --- docs/aam-specification-1.0.adoc | 1 - src/6502/c64_frontend.s | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/aam-specification-1.0.adoc b/docs/aam-specification-1.0.adoc index 2184733..2b9443a 100644 --- a/docs/aam-specification-1.0.adoc +++ b/docs/aam-specification-1.0.adoc @@ -804,7 +804,6 @@ and the word at heap address 2 will be fetched and used instead. <> * 0x: Execution flow - * 1x: Live data manipulation, stoppable environments * 2x: Random access data manipulation * 3x: Conditional branches diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index c44cfcb..54d0da2 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -524,11 +524,11 @@ palette .byt $0 ; normal = black .byt $2 ; reverse = red .byt $b ; bold = dark gray - .byt $8 ; bold reverse = orange (light + red) + .byt $a ; bold reverse = pink (light + red) .byt $6 ; italic = blue - .byt $4 ; italic reverse = purple (blue + red) + .byt $8 ; italic reverse = orange (blue + red) .byt $e ; italic bold = light blue (blue + light) - .byt $a ; italic bold reverse = pink (blue + light + red) + .byt $4 ; italic bold reverse = purple (blue + light + red) .) io_mprogress From 2c33ab968321fbd671180272bee516cbd0f6ae8d Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sun, 30 Aug 2026 14:18:05 -0500 Subject: [PATCH 06/11] playing with alternate color schemes --- src/6502/c64_frontend.s | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index 54d0da2..5c91a95 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -522,13 +522,13 @@ io_mstyle rts palette .byt $0 ; normal = black - .byt $2 ; reverse = red - .byt $b ; bold = dark gray - .byt $a ; bold reverse = pink (light + red) - .byt $6 ; italic = blue - .byt $8 ; italic reverse = orange (blue + red) - .byt $e ; italic bold = light blue (blue + light) - .byt $4 ; italic bold reverse = purple (blue + light + red) + .byt $8 ; reverse = orange (warm) + .byt $b ; bold = dark gray (light) + .byt $7 ; bold reverse = yellow (light + warm) + .byt $6 ; italic = blue (saturated) + .byt $2 ; italic reverse = red (warm + saturated) + .byt $e ; italic bold = light blue (saturated + light) + .byt $a ; italic bold reverse = pink (warm + saturated + light) .) io_mprogress From 6ba902d451f98b468f9d8909661eec09a50274f9 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sun, 30 Aug 2026 14:41:33 -0500 Subject: [PATCH 07/11] continue tweaking colors; now reverse = warm, italic = saturated, bold = light --- src/6502/c64_frontend.s | 13 +++++++++---- test/codepoints/codepoints.aastory | Bin 9200 -> 9204 bytes 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index a81873d..45ad8c7 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -522,14 +522,19 @@ io_mstyle rts palette .byt $0 ; normal = black - .byt $8 ; reverse = orange (warm) + .byt $2 ; reverse = red (warm) .byt $b ; bold = dark gray (light) - .byt $7 ; bold reverse = yellow (light + warm) + .byt $a ; bold reverse = pink (light + warm) .byt $6 ; italic = blue (saturated) - .byt $2 ; italic reverse = red (warm + saturated) + .byt $8 ; italic reverse = orange (warm + saturated) .byt $e ; italic bold = light blue (saturated + light) - .byt $a ; italic bold reverse = pink (warm + saturated + light) + .byt $7 ; italic bold reverse = yellow (warm + saturated + light) .) +; available colors: +; 0 black 1 white 2 red 3 cyan +; 4 purple 5 green 6 blue 7 yellow +; 8 orange 9 brown a pink b dark gray +; c gray d light green e light blue f light gray io_mprogress ; input x = progress diff --git a/test/codepoints/codepoints.aastory b/test/codepoints/codepoints.aastory index afbf6352a60435930b7b64dac1614f8c544241e7..fbc190b436a48f039b60a99583d7322a598db0de 100644 GIT binary patch delta 3490 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 From 3d08a18b91c3b7c500a8ac019354167d6ed84440 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Sun, 30 Aug 2026 16:58:29 -0500 Subject: [PATCH 08/11] more messing around --- src/6502/c64_frontend.s | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index 45ad8c7..f36ae72 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -522,13 +522,13 @@ io_mstyle rts palette .byt $0 ; normal = black - .byt $2 ; reverse = red (warm) + .byt $1 ; reverse = white (warm) .byt $b ; bold = dark gray (light) - .byt $a ; bold reverse = pink (light + warm) + .byt $7 ; bold reverse = yellow (light + warm) .byt $6 ; italic = blue (saturated) - .byt $8 ; italic reverse = orange (warm + saturated) + .byt $2 ; italic reverse = red (warm + saturated) .byt $e ; italic bold = light blue (saturated + light) - .byt $7 ; italic bold reverse = yellow (warm + saturated + light) + .byt $a ; italic bold reverse = pink (warm + saturated + light) .) ; available colors: ; 0 black 1 white 2 red 3 cyan From e165ee3c05242dd6c602ea8495f0c44fa5989334 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Tue, 1 Sep 2026 21:05:00 -0500 Subject: [PATCH 09/11] settled on a color palette! --- src/6502/c64_frontend.s | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index f36ae72..713808c 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -536,6 +536,8 @@ palette ; 8 orange 9 brown a pink b dark gray ; c gray d light green e light blue f light gray +; The current palette was decided at https://intfiction.org/t/help-dialog-choose-a-commodore-64-color-palette/81746/2 but see that post for some of the other options considered and how people felt about them + io_mprogress ; input x = progress ; input y = total From 48fe677214d67554f041d276a3f72284a17b8244 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Tue, 1 Sep 2026 21:08:47 -0500 Subject: [PATCH 10/11] readme update --- readme.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/readme.txt b/readme.txt index dd01e15..cce56c8 100644 --- a/readme.txt +++ b/readme.txt @@ -131,9 +131,6 @@ Release notes: 1.0.3: - 6502 engine: Fixed some memory corruption issues, especially - involving save/restore/undo operations. - New Apple II interpreter: - Supports Apple II+ and later models - 64 or 128 kB @@ -147,22 +144,22 @@ Release notes: Aambundle: Stories without a title in their metadata are named after the base name of the story file. + 6502 engine: Fixed some memory corruption issues, especially + involving save/restore/undo operations. + 6502 engine: Fixed NBSP so that it properly degrades to a breaking space instead of being ignored. 6502 engine: Fixed blank lines when printing long words. - C64 interpreter: Added "reverse" (red) styling. - - C64 interpreter: Added five glyphs (A with Acute, N with - Tilde, Hyphen, Ellipsis, NNBSP). - - C64 interpreter: Fixed inline progress bars. - 6502: Added five glyphs/transliterations (A with Acute, N with Tilde, Hyphen, Ellipsis, NNBSP) and those listed in The Z-Machine Standards Document. + C64 interpreter: Added "reverse" (warm palette) styling. + + C64 interpreter: Fixed inline progress bars. + 1.0.2: Cleaned up the specification and some dev tools. From 5564c48b6800219908e628fa9dd060e07e837e39 Mon Sep 17 00:00:00 2001 From: Daniel Stelzer Date: Tue, 1 Sep 2026 21:10:03 -0500 Subject: [PATCH 11/11] small wording update --- src/6502/c64_frontend.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/6502/c64_frontend.s b/src/6502/c64_frontend.s index 713808c..333937f 100644 --- a/src/6502/c64_frontend.s +++ b/src/6502/c64_frontend.s @@ -509,7 +509,7 @@ io_mstyle ; input a = style bits ; 1 reverse, 2 bold, 4 italic ; Or on C64: - ; 1 red, 2 lighter, 4 blue + ; 1 warm, 2 light, 4 blue .( pha