From b3b175177e6e9a6ddebe53cefaa4d46097d98358 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2024 14:31:08 -0700 Subject: [PATCH] Progress toward format --- src/manifest.tal | 62 ++++----- src/nasu.tal | 328 +++++++++++++++++++++++------------------------ 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/src/manifest.tal b/src/manifest.tal index 2ff0029..f2685f7 100644 --- a/src/manifest.tal +++ b/src/manifest.tal @@ -6,7 +6,7 @@ ;on-mouse-menu .Mouse/vector DEO2 ;on-control-menu .Controller/vector DEO2 - #40 draw-cursor + #40 BRK @@ -21,12 +21,12 @@ BRK BRK &no-touch-cat ( when sub active ) - ;draw-menu/sel LDA #ff EQU ?&no-sub + ;/sel LDA #ff EQU ?&no-sub ( when sel changed ) .Mouse/y DEI2 #0004 SUB2 #03 SFT2 NIP #01 SUB DUP ;draw-sub/sel LDA EQU ?&no-change DUP ;draw-sub/sel STA - ;draw-menu/sel LDA #ff draw-sub + ;/sel LDA #ff draw-sub &no-change POP ( when touch sub ) @@ -37,7 +37,7 @@ BRK BRK &no-sub ( do not leave if menu is active ) - ;draw-menu/sel LDA INC ?&no-leave + ;/sel LDA INC ?&no-leave .Mouse/y DEI2 #000c LTH2 ?&no-leave menu-close &no-leave @@ -47,12 +47,12 @@ BRK @menu-close ( -- ) untrap - ;draw-menu/sel LDA + ;/sel LDA DUP #ff EQU ?&no-clear DUP #00 draw-sub - #ff ;draw-menu/sel STA + #ff ;/sel STA - draw-menu + &no-clear POP @@ -65,7 +65,7 @@ JMP2r POP JMP2r &exists ( clear ) - ;draw-menu/sel LDA + ;/sel LDA ( unchanged ) EQUk ?menu-deselect ( unselected ) DUP #ff EQU ?&no-clear DUP #00 draw-sub @@ -74,10 +74,10 @@ JMP2r ( draw ) #ff ;draw-sub/sel STA - DUP ;draw-menu/sel STA + DUP ;/sel STA #ff draw-sub -!draw-menu +! @menu-deselect ( cat cat -- ) @@ -103,7 +103,7 @@ BRK STH #00 ,&id STR - ;draw-menu/manifest LDA2 + ;/manifest LDA2 &cat [ LIT &id 00 ] STHkr EQU ?&end skip-sub @@ -119,7 +119,7 @@ JMP2r @get-sub ( sub -- sub* ) STH - ;draw-menu/sel LDA get-cat + ;/sel LDA get-cat LDAk STH INC2 skip-str STHr #00 &subcat @@ -143,7 +143,7 @@ JMP2r LIT2r 0000 ,&target STR #00 ,&id STR - ;draw-menu/manifest LDA2 + ;/manifest LDA2 &cat [ LIT &id 00 ] [ LIT &target $1 ] EQU ?&end INC2k get-strw #0008 ADD2 STH2 ADD2r @@ -163,7 +163,7 @@ JMP2r LIT2r 0000 ,&target STR2 #00 ,&id STR - ;draw-menu/manifest LDA2 + ;/manifest LDA2 &cat INC2k get-strw #0008 ADD2 STH2r ADD2 DUP2 [ LIT2 &target $2 ] LTH2 ?&continue @@ -184,7 +184,7 @@ JMP2r ORAk ?&no-null JMP2r &no-null ( not null ) ,&mk STR2 - ;draw-menu/manifest LDA2 + ;/manifest LDA2 &cat LDAk STH INC2 skip-str STHr #00 @@ -218,15 +218,15 @@ JMP2r JMP2r -@draw-menu ( mask -- ) +@ ( mask -- ) #0010 .Screen/x DEO2 #0004 .Screen/y DEO2 #00 ,&id STR [ LIT2 &manifest =manifest ] &cat - ( theme ) #0b03 [ LIT &sel ff ] [ LIT &id $1 ] EQU [ JMP SWP POP ] ;draw-chr/color STA - INC2k draw-str POP2 #20 draw-chr + ( theme ) #0b03 [ LIT &sel ff ] [ LIT &id $1 ] EQU [ JMP SWP POP ] ;/color STA + INC2k draw-str POP2 #20 skip-sub ,&id LDR INC ,&id STR LDAk ?&cat @@ -237,13 +237,13 @@ JMP2r @draw-sub ( cat mask -- ) ,&mask STR POP - ;draw-menu/sel LDA get-cat + ;/sel LDA get-cat ORAk #00 EQU ?&skip - ;draw-menu/sel LDA get-catx ,&anchor STR2 + ;/sel LDA get-catx ,&anchor STR2 LDAk STH INC2 skip-str STHr #00 &subcat - ( theme ) STHk #070b STHr [ LIT &sel ff ] EQU [ JMP SWP POP ] [ LIT &mask $1 ] AND ;draw-chr/color STA + ( theme ) STHk #070b STHr [ LIT &sel ff ] EQU [ JMP SWP POP ] [ LIT &mask $1 ] AND ;/color STA [ LIT2 &anchor $2 ] .Screen/x DEO2 #00 OVR INC #30 SFT2 #0004 ADD2 .Screen/y DEO2 SWP2 draw-label SWP2 @@ -260,8 +260,8 @@ JMP2r .Screen/y DEI2 .Screen/auto DEI #f2 .Screen/auto DEO - ;fill-icn ;blank-icn ;draw-chr/color LDA #00 EQU [ JMP SWP2 POP2 ] .Screen/addr DEO2 - ;draw-chr/color LDA .Screen/sprite DEO + ;fill-icn ;blank-icn ;/color LDA #00 EQU [ JMP SWP2 POP2 ] .Screen/addr DEO2 + ;/color LDA .Screen/sprite DEO .Screen/auto DEO .Screen/y DEO2 ( mod ) @@ -274,7 +274,7 @@ JMP2r @get-modkey-str ( mod key -- str* ) - ;&buf #0008 mclr + ;&buf #0008 ( mod ) SWP STH #0800 @@ -310,7 +310,7 @@ JMP2r #00 .Screen/auto DEO ;fill-icn .Screen/addr DEO2 - #40 draw-cursor + #40 .Mouse/x DEI2 DUP2 .cursor/x STZ2 .Screen/x DEO2 .Mouse/y DEI2 DUP2 .cursor/y STZ2 .Screen/y DEO2 .Screen/addr DEO2 @@ -318,7 +318,7 @@ JMP2r JMP2r -@draw-cursor ( color -- ) +@ ( color -- ) .cursor/x LDZ2 .Screen/x DEO2 .cursor/y LDZ2 .Screen/y DEO2 @@ -353,7 +353,7 @@ JMP2r ( frame ) .Screen/width DEI2 #01 SFT2 #0070 SUB2 STH2k .Screen/x DEO2 .Screen/height DEI2 #01 SFT2 #0010 SUB2 STH2k .Screen/y DEO2 - #1c06 ;frame1-chr draw-frame + #1c06 ;frame1-chr ( fill ) STH2r .Screen/y DEO2 STH2r .Screen/x DEO2 @@ -365,7 +365,7 @@ JMP2r #03 #8526 ;appicon draw-fill-fast .Screen/x DEI2k #0020 ADD2 ROT DEO2 .Screen/y DEI2k #001c SUB2 ROT DEO2 - #0a ;draw-chr/color STA + #0a ;/color STA ;meta/body ( .. ) @draw-txt ( txt* -- ) @@ -374,7 +374,7 @@ JMP2r .Screen/x DEI2 ,&anchor STR2 &w LDAk #20 LTH ?&no-char - LDAk draw-chr + LDAk &no-char LDAk #0a NEQ ?&no-lb [ LIT2 &anchor $2 ] .Screen/x DEO2 @@ -399,7 +399,7 @@ JMP2r .Screen/height DEI2 #01 SFT2 #0028 SUB2 .Screen/y DEO2 #22 #0091 draw-fill-fast/blank - !draw-menu + ! ( @|theme ) @@ -427,7 +427,7 @@ JMP2r @slen ( str* -- len* ) DUP2 ,scap JSR SWP2 SUB2 JMP2r @scat ( src* dst* -- ) ,scap JSR @scpy ( src* dst* -- ) STH2 &w LDAk STH2kr STA INC2r INC2 LDAk ,&w JCN POP2 #00 STH2r STA JMP2r -@mclr ( src* len* -- ) OVR2 ADD2 SWP2 &l STH2k #00 STH2r STA INC2 GTH2k ,&l JCN POP2 POP2 JMP2r +@ ( src* len* -- ) OVR2 ADD2 SWP2 &l STH2k #00 STH2r STA INC2 GTH2k ,&l JCN POP2 POP2 JMP2r @exit ( -- ) diff --git a/src/nasu.tal b/src/nasu.tal index dfa01f9..547cd02 100644 --- a/src/nasu.tal +++ b/src/nasu.tal @@ -46,7 +46,7 @@ #32 .settings/ratio STZ #01 .settings/tool STZ #00 .settings/brush STZ - set-focus + ( | place ) .Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 SUB2 #001b .frame/width LDZ2 .frame/height LDZ2 ;frame .frame/x1 LDZ2 #0001 SUB2 .frame/y1 LDZ2 #0038 ADD2 #007f DUP2 ;tileview @@ -62,7 +62,7 @@ ( | begin ) file-new - draw-menu + untrap BRK @@ -77,47 +77,47 @@ BRK @manifest - 09 "Nasu $1 - 00 00 =about/toggle "About $1 - 01 "n =file-new "New $1 - 01 "r =trap "Rename $1 - 01 "o =file-open "Open $1 - 00 00 =file-open-mono "OpenMono $1 - 01 "s =file-save "Save $1 - 00 00 =file-save-mono "SaveMono $1 - 01 "p =save-theme "SaveTheme $1 - 01 "q =exit "Exit $1 - 09 "Edit $1 - 01 "c =edit-copy-chr "Copy $1 - 05 "C =edit-copy-icn "CopyMono $1 - 01 "v =edit-paste "Paste $1 - 01 "x =edit-cut "Cut $1 - 00 08 =edit-erase "Erase $1 - 00 "i =edit-invert "Invert $1 - 00 "c =edit-colorize "Colorize $1 - 00 00 =edit-flipx "Horizontal $1 - 00 00 =edit-flipy "Veritcal $1 - 01 "View $1 - 02 00 =toggle-zoom "Zoom $1 - 0a "Move $1 - 10 00 =move-up "Up $1 - 20 00 =move-down "Down $1 - 40 00 =move-left "Left $1 - 80 00 =move-right "Right $1 - 14 00 =move-dech "Decr.H $1 - 24 00 =move-inch "Incr.H $1 - 44 00 =move-decw "Decr.W $1 - 84 00 =move-incw "Incr.W $1 - 00 1b =move-reset "Reset $1 - 01 "a =select-all "SelectAll $1 - 07 "Tool $1 - 00 "q =tool-brush "Brush $1 - 00 "w =tool-selector "Selector $1 - 00 "e =tool-zoom "Zoom $1 - 00 "1 =pick-color1 "Background $1 - 00 "2 =pick-color2 "ColorA $1 - 00 "3 =pick-color3 "ColorB $1 - 00 "4 =pick-color4 "ColorC $1 + ( >>> ) 09 "Nasu $1 + ( - ) 00 00 =about/toggle "About $1 + ( - ) 01 "n =file-new "New $1 + ( - ) 01 "r =trap "Rename $1 + ( - ) 01 "o =file-open "Open $1 + ( - ) 00 00 =file-open-mono "OpenMono $1 + ( - ) 01 "s =file-save "Save $1 + ( - ) 00 00 =file-save-mono "SaveMono $1 + ( - ) 01 "p =save-theme "SaveTheme $1 + ( - ) 01 "q =exit "Exit $1 + ( >>> ) 09 "Edit $1 + ( - ) 01 "c =edit-copy-chr "Copy $1 + ( - ) 05 "C =edit-copy-icn "CopyMono $1 + ( - ) 01 "v =edit-paste "Paste $1 + ( - ) 01 "x =edit-cut "Cut $1 + ( - ) 00 08 =edit-erase "Erase $1 + ( - ) 00 "i =edit-invert "Invert $1 + ( - ) 00 "c =edit-colorize "Colorize $1 + ( - ) 00 00 =edit-flipx "Horizontal $1 + ( - ) 00 00 =edit-flipy "Veritcal $1 + ( >>> ) 01 "View $1 + ( - ) 02 00 = "Zoom $1 + ( >>> ) 0a "Move $1 + ( - ) 10 00 =move-up "Up $1 + ( - ) 20 00 =move-down "Down $1 + ( - ) 40 00 =move-left "Left $1 + ( - ) 80 00 =move-right "Right $1 + ( - ) 14 00 =move-dech "Decr.H $1 + ( - ) 24 00 =move-inch "Incr.H $1 + ( - ) 44 00 =move-decw "Decr.W $1 + ( - ) 84 00 =move-incw "Incr.W $1 + ( - ) 00 1b =move-reset "Reset $1 + ( - ) 01 "a =select-all "SelectAll $1 + ( >>> ) 07 "Tool $1 + ( - ) 00 "q =tool-brush "Brush $1 + ( - ) 00 "w =tool-selector "Selector $1 + ( - ) 00 "e =tool-zoom "Zoom $1 + ( - ) 00 "1 =pick-color1 "Background $1 + ( - ) 00 "2 =pick-color2 "ColorA $1 + ( - ) 00 "3 =pick-color3 "ColorB $1 + ( - ) 00 "4 =pick-color4 "ColorC $1 $1 ( @@ -139,7 +139,7 @@ JMP2r ;on-button-trap .Controller/vector DEO2 ;on-mouse-trap .Mouse/vector DEO2 ( | clear cursor ) - #40 draw-cursor + #40 ( release mouse ) [ LIT2 00 -Mouse/state ] DEO JMP2r @@ -150,7 +150,7 @@ JMP2r ( | start ) [ LIT &listening $1 ] ?&no-start #01 ,&listening STR - ;filepath #0040 mclr + ;filepath #0040 &no-start ( | end ) .Console/read DEI @@ -176,7 +176,7 @@ BRK DUP ?&no-null POP JMP2r &no-null [ #08 ] NEQk NIP ?&no-pop ;filepath spop POP JMP2r &no-pop [ #0a ] NEQk NIP ?&no-load file-open &no-load - [ #7f ] NEQk NIP ?&no-delete ;filepath #0040 mclr POP JMP2r &no-delete + [ #7f ] NEQk NIP ?&no-delete ;filepath #0040 POP JMP2r &no-delete [ #20 ] GTHk NIP ?&no-special untrap POP JMP2r &no-special ;filepath slen NIP #3f EQU ?&no-push DUP ;filepath sput @@ -188,7 +188,7 @@ JMP2r @on-mouse-trap ( -> ) ( | release trap on touch ) - .Mouse/state DEI ?&release BRK &release + .Mouse/state DEI ?{ BRK } untrap @@ -223,7 +223,7 @@ BRK update-cursor [ LIT2 01 -Screen/auto ] DEO - .Mouse/state DEI #00 EQU ?&no-touch + .Mouse/state DEI #00 EQU ?{ .Mouse/x DEI2 .Mouse/y DEI2 .tileview within-rect ?on-touch-tileview .Mouse/x DEI2 .Mouse/y DEI2 .nametableview within-rect ?on-touch-nametable .Mouse/x DEI2 .Mouse/y DEI2 .toolview within-rect ?on-touch-toolview @@ -231,7 +231,7 @@ BRK .Mouse/x DEI2 .Mouse/y DEI2 .colorview within-rect ?on-touch-colorview .Mouse/x DEI2 .Mouse/y DEI2 .preview within-rect ?on-touch-preview .Mouse/x DEI2 .Mouse/y DEI2 .zoomview within-rect ?on-touch-zoomview - &no-touch + } ( | release-record ) #0000 .Mouse/state DEO .cursor/last STZ @@ -242,12 +242,12 @@ BRK .Mouse/x DEI2 .tileview/x1 LDZ2 SUB2 .Mouse/y DEI2 .tileview/y1 LDZ2 SUB2 ( | test ) - .settings/tool LDZ #02 EQU ?&zoom - .settings/zoom LDZ #01 EQU ?&zoomed - .settings/tool LDZ #01 EQU ?&select + #02 .settings/tool LDZ EQU ?&zoom + #01 .settings/zoom LDZ EQU ?&zoomed + #01 .settings/tool LDZ EQU ?&select ( | paint ) .settings/color LDZ .Mouse/state DEI #01 EQU MUL - put-pixel + #01 .state/changed STZ @@ -257,8 +257,8 @@ BRK #33 SFT2 NIP STH #33 SFT2 NIP STHr - set-selection-zoom - toggle-zoom + + ( release mouse ) [ LIT2 00 -Mouse/state ] DEO @@ -268,7 +268,7 @@ BRK SWP2 #03 SFT2 #00 .selection/zx LDZ ADD2 SWP2 #03 SFT2 #00 .selection/zy LDZ ADD2 - .settings/color LDZ .Mouse/state DEI #01 EQU MUL put-pixel + .settings/color LDZ .Mouse/state DEI #01 EQU MUL #01 .state/changed STZ @@ -279,10 +279,10 @@ BRK #03 SFT2 NIP STH #03 SFT2 NIP STH SWPr .Mouse/state DEI DUP .cursor/last LDZ - ORAk #00 EQU ?&end - DUP2 #0100 NEQ2 ?&no-down STH2kr set-selection-from &no-down - DUP2 #0101 NEQ2 ?&no-up STH2kr set-selection-to &no-up - &end + ORAk #00 EQU ?{ + DUP2 #0100 NEQ2 ?{ STH2kr } + DUP2 #0101 NEQ2 ?{ STH2kr } + } POP2 POP2r .cursor/last STZ @@ -291,8 +291,8 @@ BRK @on-touch-nametable ( -> ) ( | id ) - .Mouse/y DEI2 .nametableview/y LDZ2 SUB2 #43 SFT2 - .Mouse/x DEI2 .nametableview/x LDZ2 SUB2 #03 SFT2 ADD2 + ( ) .Mouse/y DEI2 .nametableview/y LDZ2 SUB2 #43 SFT2 + ( ) .Mouse/x DEI2 .nametableview/x LDZ2 SUB2 #03 SFT2 ADD2 #0003 MUL2 ;nametable ADD2 STH2 .settings/focus LDZ2 ;spritesheet SUB2 STH2kr STA2 .settings/blend LDZ INC2r INC2r STH2r STA @@ -305,15 +305,15 @@ BRK ( release mouse ) [ LIT2 00 -Mouse/state ] DEO .Mouse/x DEI2 .toolview/x1 LDZ2 SUB2 #03 SFT2 NIP - [ #20 ] NEQk NIP ?&no-save file-save POP BRK &no-save - [ #1e ] NEQk NIP ?&no-load file-open POP BRK &no-load - [ #1d ] NEQk NIP ?&no-name file-new POP BRK &no-name - [ #04 ] NEQk NIP ?&no-tool0 #00 set-tool POP BRK &no-tool0 - [ #05 ] NEQk NIP ?&no-tool1 #01 set-tool POP BRK &no-tool1 - [ #06 ] NEQk NIP ?&no-tool2 #02 set-tool &no-tool2 - INCk .settings/color LDZ NEQ ?&no-eraser #00 set-color POP BRK &no-eraser - [ #02 ] GTHk NIP ?&no-color INCk set-color POP BRK &no-color - [ #08 ] LTHk NIP ?&no-rename trap POP BRK &no-rename + ( ) [ #20 ] NEQk NIP ?&no-save file-save POP BRK &no-save + ( ) [ #1e ] NEQk NIP ?&no-load file-open POP BRK &no-load + ( ) [ #1d ] NEQk NIP ?&no-name file-new POP BRK &no-name + ( ) [ #04 ] NEQk NIP ?&no-tool0 #00 set-tool POP BRK &no-tool0 + ( ) [ #05 ] NEQk NIP ?&no-tool1 #01 set-tool POP BRK &no-tool1 + ( ) [ #06 ] NEQk NIP ?&no-tool2 #02 set-tool &no-tool2 + ( ) INCk .settings/color LDZ NEQ ?&no-eraser #00 set-color POP BRK &no-eraser + ( ) [ #02 ] GTHk NIP ?&no-color INCk set-color POP BRK &no-color + ( ) [ #08 ] LTHk NIP ?&no-rename trap POP BRK &no-rename POP BRK @@ -322,19 +322,19 @@ BRK .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #0020 LTH2 ?&no-mod .Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #03 SFT2 NIP - DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ?&no-su ;op-shiftu run &no-su - DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ?&no-sd ;op-shiftd run &no-sd - DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ?&no-sr ;op-shiftr run &no-sr - DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ?&no-shiftleft ;op-shiftl run &no-shiftleft + ( ) DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ?&no-su ;op-shiftu run &no-su + ( ) DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ?&no-sd ;op-shiftd run &no-sd + ( ) DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ?&no-sr ;op-shiftr run &no-sr + ( ) DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ?&no-shiftleft ;op-shiftl run &no-shiftleft POP ( release mouse ) [ LIT2 00 -Mouse/state ] DEO !&finish &no-mod - .Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2 #00 .selection/x1 LDZ #30 SFT2 ADD2 - .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2 #00 .selection/y1 LDZ #30 SFT2 ADD2 + ( ) .Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2 #00 .selection/x1 LDZ #30 SFT2 ADD2 + ( ) .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2 #00 .selection/y1 LDZ #30 SFT2 ADD2 .settings/color LDZ .Mouse/state DEI #01 EQU MUL - put-pixel + &finish #01 .state/changed STZ @@ -354,9 +354,9 @@ BRK @on-touch-colorview ( -> ) .Mouse/y DEI2 .colorview/y1 LDZ2 SUB2 #03 SFT2 NIP - [ #00 ] NEQk NIP ?&no-r .System/r STHk /set-color STHr /set-nibble &no-r - [ #01 ] NEQk NIP ?&no-g .System/g STHk /set-color STHr /set-nibble &no-g - [ #02 ] NEQk NIP ?&no-b .System/b STHk /set-color STHr /set-nibble &no-b + ( ) [ #00 ] NEQk NIP ?{ .System/r STHk /set-color STHr /set-nibble } + ( ) [ #01 ] NEQk NIP ?{ .System/g STHk /set-color STHr /set-nibble } + ( ) [ #02 ] NEQk NIP ?{ .System/b STHk /set-color STHr /set-nibble } POP @@ -376,13 +376,13 @@ BRK @on-touch-blendview ( -> ) - .Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP - .Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD + ( ) .Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP + ( ) .Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD [ #0f GTHk NIP ] ?&no-set DUP .settings/blend STHk LDZ #b0 AND ADD STHr STZ !&end &no-set ( | buttons ) #03 AND - [ #02 NEQk NIP ] ?&no-ver .settings/blend STHk LDZ #20 EOR STHr STZ &no-ver - [ #03 NEQk NIP ] ?&no-hor .settings/blend STHk LDZ #10 EOR STHr STZ &no-hor + ( ) [ #02 NEQk NIP ] ?{ .settings/blend STHk LDZ #20 EOR STHr STZ } + ( ) [ #03 NEQk NIP ] ?{ .settings/blend STHk LDZ #10 EOR STHr STZ } &end POP @@ -394,7 +394,7 @@ BRK ( @|helpers ) -@toggle-zoom ( -- ) +@ ( -- ) .settings/zoom LDZk #00 EQU SWP STZ @@ -416,36 +416,36 @@ BRK @clamp-selection ( -- ) - .selection/x1 LDZ #0f STHk LTH ?&ok-limitx1 STHkr .selection/x1 STZ &ok-limitx1 POPr - .selection/y1 LDZ #0f STHk LTH ?&ok-limity1 STHkr .selection/y1 STZ &ok-limity1 POPr - .selection/x2 LDZ #0f STHk LTH ?&ok-limitx2 STHkr .selection/x2 STZ &ok-limitx2 POPr - .selection/y2 LDZ #0f STHk LTH ?&ok-limity2 STHkr .selection/y2 STZ &ok-limity2 POPr + ( ) .selection/x1 LDZ #0f STHk LTH ?&ok-limitx1 STHkr .selection/x1 STZ &ok-limitx1 POPr + ( ) .selection/y1 LDZ #0f STHk LTH ?&ok-limity1 STHkr .selection/y1 STZ &ok-limity1 POPr + ( ) .selection/x2 LDZ #0f STHk LTH ?&ok-limitx2 STHkr .selection/x2 STZ &ok-limitx2 POPr + ( ) .selection/y2 LDZ #0f STHk LTH ?&ok-limity2 STHkr .selection/y2 STZ &ok-limity2 POPr ( | invert ) - .selection/x2 LDZ .selection/x1 LDZ STHk GTH ?&ok-flipx STHkr .selection/x2 STZ &ok-flipx POPr - .selection/y2 LDZ .selection/y1 LDZ STHk GTH ?&ok-flipy STHkr .selection/y2 STZ &ok-flipy POPr + ( ) .selection/x2 LDZ .selection/x1 LDZ STHk GTH ?&ok-flipx STHkr .selection/x2 STZ &ok-flipx POPr + ( ) .selection/y2 LDZ .selection/y1 LDZ STHk GTH ?&ok-flipy STHkr .selection/y2 STZ &ok-flipy POPr JMP2r -@set-selection-zoom ( x y -- ) +@ ( x y -- ) #7f AND .selection/zy STZ #7f AND .selection/zx STZ JMP2r -@set-selection-from ( x y -- ) +@ ( x y -- ) #0f AND - DUP .selection/y1 STZ - .selection/y2 STZ + ( ) DUP .selection/y1 STZ + ( ) .selection/y2 STZ #0f AND - DUP .selection/x1 STZ - .selection/x2 STZ - set-focus + ( ) DUP .selection/x1 STZ + ( ) .selection/x2 STZ + ! -@set-selection-to ( x y -- ) +@ ( x y -- ) .selection/y2 STZ .selection/x2 STZ @@ -453,7 +453,7 @@ JMP2r ! -@set-focus ( -- ) +@ ( -- ) .selection LDZ2 get-tile-addr .settings/focus STZ2 @@ -477,10 +477,10 @@ JMP2r .selection/y1 LDZ .selection/y2 STZ &no-y - .selection/x1 LDZ #30 SFT .selection/y1 LDZ #30 SFT set-selection-zoom + .selection/x1 LDZ #30 SFT .selection/y1 LDZ #30 SFT ( | focus ) - set-focus + ! @@ -489,11 +489,11 @@ JMP2r ( | set zoom ) .selection/zy LDZ ADD SWP .selection/zx LDZ ADD SWP - set-selection-zoom + ( | set from ) .selection/zx LDZ #03 SFT .selection/zy LDZ #03 SFT - set-selection-from + ! @@ -503,14 +503,14 @@ JMP2r .selection/x2 LDZ ADD #0f AND .selection/x2 STZ ( | clamp ) - .selection/x2 LDZ .selection/x1 LDZ GTH ?&no-x + .selection/x2 LDZ .selection/x1 LDZ GTH ?{ .selection/x1 LDZ .selection/x2 STZ - &no-x - .selection/y2 LDZ .selection/y1 LDZ GTH ?&no-y + } + .selection/y2 LDZ .selection/y1 LDZ GTH ?{ .selection/y1 LDZ .selection/y2 STZ - &no-y + } ( | focus ) - set-focus + ! @@ -530,13 +530,13 @@ JMP2r @get-pixel ( x* y* -- color ) ( | channel 1 ) - OVR2 SWP2 get-pixel-addr [ STH2k ] LDA - ROT ROT NIP #07 AND [ STHk ] - #07 SWP SUB SFT #01 AND + ( ) OVR2 SWP2 get-pixel-addr [ STH2k ] LDA + ( ) ROT ROT NIP #07 AND [ STHk ] + ( ) #07 SWP SUB SFT #01 AND ( | channel 2 ) - [ STHr ] [ STH2r ] #0008 ADD2 LDA SWP - #07 SWP SUB SFT #01 AND - DUP ADD + ( ) [ STHr ] [ STH2r ] #0008 ADD2 LDA SWP + ( ) #07 SWP SUB SFT #01 AND + ( ) DUP ADD ADD JMP2r @@ -554,7 +554,7 @@ JMP2r JMP2r -@put-pixel ( x* y* color -- ) +@ ( x* y* color -- ) STH OVR2 SWP2 get-pixel-addr @@ -580,10 +580,10 @@ JMP2r @has-nametable ( -- bool ) ;nametable STH2k #0300 ADD2 STH2r - &>loop - LDAk #00 EQU ?&continue + &>loop ( -- ) + LDAk #00 EQU ?{ POP2 POP2 #01 JMP2r - &continue + } INC2 GTH2k ?&>loop POP2 POP2 #00 @@ -616,7 +616,7 @@ JMP2r JMP2r @filter-colorize ( x* y* -- ) - OVR2 OVR2 get-pixel INC #03 AND !put-pixel + OVR2 OVR2 get-pixel INC #03 AND ! @filter-flipx ( x* y* -- ) ( | ignore second half ) @@ -630,8 +630,8 @@ JMP2r [ LIT2 00 -selection/x1 ] LDZ #30 SFT2 ADD2 ,&x2 STR2 [ LIT2 &x1 $2 ] STH2kr get-pixel ,&c1 STR [ LIT2 &x2 $2 ] STH2kr get-pixel ,&c2 STR - ,&x2 LDR2 STH2kr [ LIT &c1 $1 ] put-pixel - ,&x1 LDR2 STH2r [ LIT &c2 $1 ] !put-pixel + ,&x2 LDR2 STH2kr [ LIT &c1 $1 ] + ,&x1 LDR2 STH2r [ LIT &c2 $1 ] ! @filter-flipy ( x* y* -- ) ( | ignore second half ) @@ -645,8 +645,8 @@ JMP2r [ LIT2 00 -selection/y1 ] LDZ #30 SFT2 ADD2 ,&y2 STR2 DUP2 [ LIT2 &y1 $2 ] get-pixel ,&c1 STR DUP2 [ LIT2 &y2 $2 ] get-pixel ,&c2 STR - DUP2 ,&y2 LDR2 [ LIT &c1 $1 ] put-pixel - ,&y1 LDR2 [ LIT &c2 $1 ] !put-pixel + DUP2 ,&y2 LDR2 [ LIT &c1 $1 ] + ,&y1 LDR2 [ LIT &c2 $1 ] ! ( @|map ) @@ -670,7 +670,7 @@ JMP2r #0010 -!mclr +! @op-invert ( addr* -- ) @@ -820,7 +820,7 @@ JMP2r .selection/y2 LDZ #0f EQU ?&no-label #00 .selection/x1 LDZ #30 SFT2 .tileview/x1 LDZ2 ADD2 .Screen/x DEO2 #00 .selection/y2 LDZ INC #30 SFT2 .tileview/y1 LDZ2 ADD2 .Screen/y DEO2 - #04 ;draw-chr/color STA + #04 ;/color STA .selection/x2 LDZ .selection/x1 LDZ SUB INC #40 SFT .selection/y2 LDZ .selection/y1 LDZ SUB INC ORA draw-byte @@ -858,16 +858,16 @@ JMP2r POP2 ( | guide hor ) #0007 .selection/zy LDZ SUB #0007 AND2 #30 SFT2 #0001 SUB2 #0008 ADD2 STH2 - .tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0a line-hor-dashed + .tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0a .selection/zy LDZ #07 AND #00 EQU ?&skip-hor - .tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0040 ADD2 #0a line-hor-dashed + .tileview/x1 LDZ2 .tileview/y1 LDZ2 STH2kr ADD2 #0040 ADD2 #0a &skip-hor POP2r ( | guide ver ) #0007 .selection/zx LDZ SUB #0007 AND2 #30 SFT2 #0001 SUB2 #0008 ADD2 STH2 - .tileview/x1 LDZ2 STH2kr ADD2 .tileview/y1 LDZ2 #0a line-ver-dashed + .tileview/x1 LDZ2 STH2kr ADD2 .tileview/y1 LDZ2 #0a .selection/zx LDZ #07 AND #00 EQU ?&skip-ver - .tileview/x1 LDZ2 STH2kr ADD2 #0040 ADD2 .tileview/y1 LDZ2 #0a line-ver-dashed + .tileview/x1 LDZ2 STH2kr ADD2 #0040 ADD2 .tileview/y1 LDZ2 #0a &skip-ver POP2r @@ -926,7 +926,7 @@ JMP2r ( | frame ) .zoomview/x1 LDZ2 .Screen/x DEO2 .zoomview/y1 LDZ2 .Screen/y DEO2 - #0404 ;frame2-chr draw-frame + #0404 ;frame2-chr ( | label ) [ LIT2 01 -Screen/auto ] DEO @@ -972,7 +972,7 @@ JMP2r ( | label ) .preview/x1 LDZ2 .Screen/x DEO2 .preview/y2 LDZ2 #0008 SUB2 .Screen/y DEO2 - #03 ;draw-chr/color STA + #03 ;/color STA .settings/ratio LDZ !draw-byte @@ -981,7 +981,7 @@ JMP2r .colorview/y2 LDZ2 #0008 SUB2 .Screen/y DEO2 .colorview/x1 LDZ2 .Screen/x DEO2 - #03 ;draw-chr/color STA + #03 ;/color STA .System/r /get-color draw-hex .System/g /get-color draw-hex .System/b /get-color draw-hex @@ -1030,7 +1030,7 @@ JMP2r ( | label ) .blendview/x1 LDZ2 .Screen/x DEO2 .blendview/y2 LDZ2 #0008 SUB2 .Screen/y DEO2 - #03 ;draw-chr/color STA + #03 ;/color STA ( get blending ) .settings/blend LDZ draw-byte ( | y ) @@ -1052,17 +1052,17 @@ JMP2r ( | position ) .dataview/x1 LDZ2 .Screen/x DEO2 .dataview/y2 LDZ2 #0008 SUB2 .Screen/y DEO2 - #03 ;draw-chr/color STA + #03 ;/color STA .selection LDZ2 #40 SFT ADD draw-byte .dataview/y1 LDZ2 .Screen/y DEO2 #0400 &>loop .dataview/x1 LDZ2 .Screen/x DEO2 #00 OVR DUP ADD .settings/focus LDZ2 ADD2 - #01 ;draw-chr/color STA + #01 ;/color STA ( ch1 ) LDA2k draw-short .Screen/x DEI2k #000c ADD2 ROT DEO2 - #02 ;draw-chr/color STA + #02 ;/color STA ( ch2 ) #0008 ADD2 LDA2 draw-short ( | skip line ) .dataview/x1 LDZ2 .Screen/x DEO2 @@ -1120,7 +1120,7 @@ JMP2r ( | clear ) DUP #00 EQU ? - ;draw-chr/color STA + ;/color STA ;filepath ( | scroll ) DUP2 slen #0013 GTH2 #00 SWP @@ -1160,11 +1160,11 @@ JMP2r .tileview/x1 LDZ2 .Screen/x DEO2 .tileview/y1 LDZ2 .Screen/y DEO2 - #1010 ;frame2-chr draw-frame + #1010 ;frame2-chr .nametableview/x LDZ2 .Screen/x DEO2 .nametableview/y LDZ2 .Screen/y DEO2 - #1010 ;frame2-chr draw-frame + #1010 ;frame2-chr [ LIT2 01 -Screen/auto ] DEO @@ -1184,7 +1184,7 @@ JMP2r LDAk #00 EQU ?&skip [ LIT2 01 -Screen/auto ] DEO &>while ( -- ) - LDAk draw-chr + LDAk INC2 LDAk ?&>while &skip INC2 @@ -1202,15 +1202,16 @@ JMP2r @draw-hex ( char -- ) #0f AND DUP #09 GTH #27 MUL ADD #30 ADD + ( >> ) -@draw-chr ( char -- ) +@ ( char -- ) #20 SUB #00 SWP #30 SFT2 ;font ADD2 .Screen/addr DEO2 [ LIT &color 03 ] .Screen/sprite DEO JMP2r -@draw-frame ( w h chr* -- ) +@ ( w h chr* -- ) STH2 ,&h STR ,&w STR .Screen/x DEI2 DUP2 #0008 SUB2 .Screen/x DEO2 @@ -1241,7 +1242,7 @@ JMP [ LIT &color 85 ] SWP ORA .Screen/sprite DEO JMP2r -@line-hor-dashed ( x* y* color -- ) +@ ( x* y* color -- ) STH .Screen/y DEO2 .Screen/x DEO2 ;&sprite .Screen/addr DEO2 @@ -1252,7 +1253,7 @@ JMP JMP2r &sprite aa00 0000 0000 0000 -@line-ver-dashed ( x* y* color -- ) +@ ( x* y* color -- ) STH .Screen/y DEO2 .Screen/x DEO2 ;&sprite .Screen/addr DEO2 @@ -1270,9 +1271,9 @@ JMP2r #00 ( | clear ) - ;spritesheet #1300 mclr + ;spritesheet #1300 ( | rename to untitled.txt ) - ;filepath #0040 mclr + ;filepath #0040 ;untitled-txt ;filepath scpy #00 .state/changed STZ @@ -1281,7 +1282,7 @@ JMP2r @file-open ( -- ) ;filepath is-mono ?file-open-mono ( | clear ) - ;spritesheet #1300 mclr + ;spritesheet #1300 load-theme ( | spritesheet ) ;filepath .File/name DEO2 @@ -1292,7 +1293,7 @@ JMP2r ;filepath .File/name DEO2 #0300 .File/length DEO2 ;nametable .File/read DEO2 - ;filepath scap #0004 SUB2 #0004 mclr + ;filepath scap #0004 SUB2 #0004 #00 .state/changed STZ @@ -1301,7 +1302,7 @@ JMP2r @file-open-mono ( -- ) ( | clear ) - ;spritesheet #1300 mclr + ;spritesheet #1300 ( | spritesheet ) ;filepath .File/name DEO2 #0008 .File/length DEO2 @@ -1328,7 +1329,7 @@ JMP2r ;filepath .File/name DEO2 #0300 .File/length DEO2 ;nametable .File/write DEO2 - ;filepath scap #0004 SUB2 #0004 mclr + ;filepath scap #0004 SUB2 #0004 &no-nametable #00 .state/changed STZ @@ -1427,15 +1428,6 @@ JMP2r ! - -@ ( short* -- ) - SWP /b - &b ( -- ) - DUP #04 SFT /c - &c ( -- ) - #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO - JMP2r - ( select ) @tool-brush ( -- ) #00 !set-tool @@ -1455,8 +1447,8 @@ JMP2r @move-reset ( -- ) .selection/x1 LDZ2 .selection/x2 STZ2 ! @select-all ( -- ) - #0000 set-selection-from - #0f0f !set-selection-to + #0000 + #0f0f ! ( pick ) @@ -1503,7 +1495,15 @@ JMP2r @rol ( byte -- byte ) DUP #07 SFT SWP DUP ADD ADD JMP2r @ror ( byte -- byte ) DUP #70 SFT SWP #01 SFT ADD JMP2r -@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &>loop LDAk STH2kr STA INC2r INC2 GTH2k ?&>loop POP2 POP2 POP2r JMP2r +@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &>loop ( -- ) LDAk STH2kr STA INC2r INC2 GTH2k ?&>loop POP2 POP2 POP2r JMP2r + +@ ( short* -- ) + SWP /b + &b ( -- ) + DUP #04 SFT /c + &c ( -- ) + #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO + JMP2r ( @|assets )