@@ 8,10 8,11 @@
01 'r :file-rename "Rename $1
01 'o :file-open "Open $1
01 's :file-save "Save $1
- 03 "Edit $1
+ 04 "Edit $1
01 'c :edit-copy "Copy $1
01 'v :edit-paste "Paste $1
01 'x :edit-cut "Cut $1
+ 00 08 :edit-erase "Erase $1
0c "Select $1
00 'q :select-brush "Brush $1
00 'w :select-selector "Selector $1
@@ 30,21 31,26 @@
00 '2 :pick-color2 "Color2 $1
00 '3 :pick-color3 "Color3 $1
00 '4 :pick-color4 "Color4 $1
- 02 "Options $1
- 00 08 :option-erase "Erase $1
- 00 20 :option-zoom "Zoom $1
+ 01 "View $1
+ 00 20 :view-zoom "Zoom $1
$1
@trap-menu ( -> )
;on-mouse-menu .Mouse/vector DEO2
;on-control-menu .Controller/vector DEO2
- #ff ;draw-cat/sel STA
- #ff ;draw-sub/sel STA
- ;draw-cat JSR2
+ ,menu-init JSR
BRK
+@menu-init ( -- )
+
+ #ff ;draw-menu/sel STA
+ #ff ;draw-sub/sel STA
+ ;draw-menu JSR2
+
+JMP2r
+
@on-mouse-menu ( -> )
( clear last cursor )
@@ 65,12 71,12 @@ BRK
BRK
&no-touch-cat
( when sub active )
- ;draw-cat/sel LDA #ff EQU ,&no-sub JCN
+ ;draw-menu/sel LDA #ff EQU ,&no-sub JCN
( when sel changed )
.Mouse/y DEI2 #03 SFT2 NIP #01 SUB
DUP ;draw-sub/sel LDA EQU ,&no-change JCN
DUP ;draw-sub/sel STA
- ;draw-cat/sel LDA #ff ;draw-sub JSR2
+ ;draw-menu/sel LDA #ff ;draw-sub JSR2
&no-change
POP
( when touch sub )
@@ 81,7 87,7 @@ BRK
BRK
&no-sub
( don't leave if menu is active )
- ;draw-cat/sel LDA #ff EQU
+ ;draw-menu/sel LDA #ff EQU
.Mouse/y DEI2 #0007 GTH2
AND ;on-menu-leave JCN2
@@ 102,9 108,9 @@ JMP2r
@menu-close ( -- )
;untrap JSR2
- ( hide ) ;draw-cat/sel LDA #00 ;draw-sub JSR2
- #ff ;draw-cat/sel STA
- ;draw-cat JSR2
+ ( hide ) ;draw-menu/sel LDA #00 ;draw-sub JSR2
+ #ff ;draw-menu/sel STA
+ ;draw-menu JSR2
;redraw JSR2
JMP2r
@@ 112,17 118,23 @@ JMP2r
@menu-select ( cat -- )
( clear )
- ;draw-cat/sel LDA
- ( unchanged ) DUP2 EQU ,&no-clear JCN
+ ;draw-menu/sel LDA
+ ( unchanged ) DUP2 EQU ,menu-deselect JCN
( unselected ) DUP #ff EQU ,&no-clear JCN
DUP #00 ;draw-sub JSR2
&no-clear
POP
( draw application ) ;redraw JSR2
( unselect sub ) #ff ;draw-sub/sel STA
- ( select cat ) DUP ;draw-cat/sel STA
+ ( select cat ) DUP ;draw-menu/sel STA
( draw sub ) #ff ;draw-sub JSR2
- ;draw-cat JSR2
+ ;draw-menu JSR2
+
+JMP2r
+
+@menu-deselect ( cat cat -- )
+
+ POP2 ;menu-close JSR2
JMP2r
@@ 144,15 156,16 @@ JMP2r
BRK
-@draw-cat ( -- )
+@draw-menu ( -- )
- #0000 DUP2 .Screen/x DEO2 .Screen/y DEO2
+ #0010 .Screen/x DEO2
+ #0000 .Screen/y DEO2
#01 .Screen/auto DEO
#00 ,&id STR
;manifest/menu
&cat
#0701 [ LIT &sel $1 ] [ LIT &id $1 ] EQU JMP SWP POP ;draw-chr/color STA
- INC2k ;draw-str JSR2 POP2 #00 .Screen/sprite DEOk DEO
+ INC2k ;draw-str JSR2 POP2 #00 .Screen/sprite DEO
;skip-sub JSR2
,&id LDR INC ,&id STR
LDAk ,&cat JCN
@@ 164,9 177,9 @@ JMP2r
@draw-sub ( cat mask -- )
,&mask STR POP
- ;draw-cat/sel LDA ;get-cat JSR2
+ ;draw-menu/sel LDA ;get-cat JSR2
DUP2 #0000 EQU2 ,&skip JCN
- ;draw-cat/sel LDA ;get-anchor JSR2 ,&anchor STR2
+ ;draw-menu/sel LDA ;get-anchor JSR2 ,&anchor STR2
#01 .Screen/auto DEO
LDAk STH INC2 ;skip-str JSR2
STHr #00
@@ 190,12 203,12 @@ JMP2r
LDA2k SWP2
#0004 ADD2 STH2k ;draw-str JSR2
( fill )
- #10 STH2r ;slen JSR2 NIP SUB #00
+ #0b STH2r ;slen JSR2 NIP SUB #00
&loop
#20 ;draw-chr JSR2
INC GTHk ,&loop JCN
POP2
- .Screen/x DEI2 #0010 SUB2 .Screen/x DEO2
+ .Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
SWP2 ;draw-key JSR2 ;draw-mod JSR2
JMP2r
@@ 219,9 232,8 @@ JMP2r
@buttons-icns
387c fefe fe7c 3800
3844 8282 8244 3800
- 7cfe fefe fefe 7c00
- 7c82 8282 8282 7c00
-
+ 1038 7cfe 7c38 1000
+ 1028 4482 4428 1000
1038 7cfe 1010 1000
1010 10fe 7c38 1000
1030 70fe 7030 1000
@@ 267,7 279,7 @@ JMP2r
@get-sub ( sub -- sub* )
STH
- ;draw-cat/sel LDA ;get-cat JSR2
+ ;draw-menu/sel LDA ;get-cat JSR2
LDAk STH INC2 ;skip-str JSR2
STHr #00
&subcat
@@ 305,14 317,14 @@ JMP2r
;manifest/menu
&cat
[ LIT &id 00 ] [ LIT &target $1 ] EQU ,&end JCN
- INC2k ;slen JSR2 INC2 INC2 STH2 ADD2r
+ INC2k ;slen JSR2 INC2 STH2 ADD2r
;skip-sub JSR2
,&id LDR INC ,&id STR
LDAk ,&cat JCN
POP2
&end
STH2r
- #30 SFT2
+ INC2 INC2 #30 SFT2
JMP2r
@@ 44,7 44,7 @@
#05cf .System/g DEO2
#0caf .System/b DEO2
( size )
- #0130 .Screen/width DEO2
+ #0120 .Screen/width DEO2
#0100 .Screen/height DEO2
( vectors )
;on-console .Console/vector DEO2
@@ 86,8 86,7 @@
#00 .Screen/auto DEO
( let's begin! )
;file-new JSR2
- ;print-manifest JSR2
- ( ;draw-menu JSR2 )
+ ;menu-init JSR2
BRK
@@ 1205,7 1204,7 @@ JMP2r
( option )
-@option-erase ( -- )
+@edit-erase ( -- )
;op-erase ;run JSR2
#01 .state/changed STZ ;draw-state JSR2
@@ 1213,7 1212,7 @@ JMP2r
JMP2r
-@option-zoom ( -- )
+@view-zoom ( -- )
;toggle-zoom JSR2