@@ 10,9 10,8 @@
TODO:
Save/load/rename
Zoom
- Resize buttons
- Erase with right-click
- Painting in zoom view
+ Draw guides
+ Toggle guides
)
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
@@ 20,38 19,31 @@
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
-%HOR { #20 }
-%VER { #10 }
-%WIDTH { HOR TOS #0008 ** }
-%HEIGHT { VER TOS #0008 ** }
+%HOR { #20 } %VER { #10 }
+%WIDTH { HOR TOS #0008 ** } %HEIGHT { VER TOS #0008 ** }
%LENGTH { HOR TOS VER TOS ** #0010 ** }
%RTN { JMP2r }
-%CPY { STHkr }
%STEP8 { #0033 SFT2 }
-
-%ROL { DUP #80 AND #07 SFT SWP #10 SFT + }
-%ROR { DUP #01 AND #70 SFT SWP #01 SFT + }
-
-%SFL { #40 SFT SFT }
-
%MOD { DUP2 / * - }
%MOD2 { OVR2 OVR2 // ** -- }
%MOD8 { #07 AND }
-
+%ROL { DUP #07 SFT SWP #10 SFT + }
+%ROR { DUP #70 SFT SWP #01 SFT + }
+%SFL { #40 SFT SFT }
%TOB { SWP POP } %TOS { #00 SWP }
-
-%DEBUG { .Console/byte DEO #0a .Console/char DEO }
-%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
-
-%LTS2 { #8000 ++ SWP2 #8000 ++ >> }
-%GTS2 { #8000 ++ SWP2 #8000 ++ << }
-
%INCR { SWP #01 + SWP }
%INCR2 { SWP2 #0001 ++ SWP2 }
%DECR2 { SWP2 #0001 -- SWP2 }
%GET-ITERATORS { SWP2k POP SWP POP }
+%DEBUG { .Console/byte DEO #0a .Console/char DEO }
+%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
+
+%BANK { #2000 }
+%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
+%RELEASE-MOUSE { #00 .Mouse/state DEO }
+
%SIZE-TO-RECT {
STH2 STH2 OVR2 STH2r ++ OVR2 STH2r ++
} ( x y w h -- x1 y1 x2 y2 )
@@ 64,11 56,6 @@
POP2
} ( x1 y1 x2 y2 addr -- )
-%BANK { #2000 }
-%GET-ADDR { .settings/selection LDZ TOS #0010 ** BANK ++ }
-%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
-%RELEASE-MOUSE { #00 .Mouse/state DEO }
-
( devices )
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
@@ 83,13 70,10 @@
|0000
@settings [
+ &depth $1
&color $1
&blending $1
- &depth $1
- &brush $1
- &tile $2
&ratio $1
- &selection $1
&tool $1
&focus $2 ]
@@ 122,12 106,10 @@
( set defaults )
HOR TOS #0008 ** .frame/width STZ2
VER TOS #0008 ** #0048 ++ .frame/height STZ2
- #01 .settings/brush STZ
- #32 .settings/ratio STZ
- BANK #0448 ++ .settings/tile STZ2
#01 .settings/depth STZ
- #01 .settings/blending STZ
#01 .settings/color STZ
+ #01 .settings/blending STZ
+ #32 .settings/ratio STZ
#01 .settings/tool STZ
BANK .settings/focus STZ2
@@ 224,7 206,8 @@ BRK
.settings/tool LDZ
DUP #00 ! ,&no-brush JCN
POP
- .settings/color LDZ
+ #00 .Mouse/state DEI #10 = ,&do-erase JCN
+ POP .settings/color LDZ &do-erase
;put-pixel JSR2
;draw-tileview JSR2
;draw-preview JSR2
@@ 277,20 260,6 @@ BRK
@on-touch-dataview ( -> )
- .Mouse/x DEI2 .dataview/x1 LDZ2 -- #0008 // TOB
- .Mouse/y DEI2 .dataview/y1 LDZ2 -- #0008 // TOB #40 SFT +
- DUP #40 ! ,&no-move-up JCN
- GET-ADDR ;op-shiftup JSR2
- GET-ADDR #0008 ++ ;op-shiftup JSR2
- RELEASE-MOUSE
- ;redraw JSR2 POP BRK &no-move-up
- DUP #41 ! ,&no-move-down JCN
- GET-ADDR ;op-shiftdown JSR2
- GET-ADDR #0008 ++ ;op-shiftdown JSR2
- RELEASE-MOUSE
- ;redraw JSR2 POP BRK &no-move-down
- POP
-
RELEASE-MOUSE
BRK
@@ 316,11 285,26 @@ BRK
DUP2 ;op-shiftleft JSR2
#0008 ++ ;op-shiftleft JSR2 &no-shiftleft
POP
+ RELEASE-MOUSE
+ ,&finish JMP
&no-mod
- ;redraw JSR2
+ ( paint )
+ .Mouse/x DEI2 .zoomview/x1 LDZ2 -- #0004 //
+ .Mouse/y DEI2 .zoomview/y1 LDZ2 -- #0004 //
+ .settings/focus LDZ2 ++
+ ( detect erase )
+ #00 .Mouse/state DEI #10 = ,&do-erase JCN
+ POP .settings/color LDZ &do-erase
+ STH
+ OVR2 OVR2
+ STHkr #00 ;toggle-pixel JSR2
+ #0008 ++
+ STHr #01 ;toggle-pixel JSR2
- RELEASE-MOUSE
+ &finish
+
+ ;redraw JSR2
BRK
@@ 484,7 468,7 @@ RTN
OVR DUP #08 * TOS .tileview/y1 LDZ2 ++ .Screen/y DEO2 STH
#00 HOR
&hor
- OVR DUP #08 * TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2 CPY
+ OVR DUP #08 * TOS .tileview/x1 LDZ2 ++ .Screen/x DEO2 STHkr
TOS ROT TOS SWP2
HOR TOS ** ++ #0010 **
BANK ++ [ DUP2 ] .Screen/addr DEO2
@@ 533,7 517,7 @@ RTN
OVR2 SWP2 ,get-addr JSR
( ch1 )
OVR2 OVR2
- CPY #00 ,toggle-pixel JSR
+ STHkr #00 ,toggle-pixel JSR
( ch2 )
#0008 ++
STHr #01 ,toggle-pixel JSR
@@ 797,7 781,7 @@ RTN
@draw-byte ( byte color -- )
STH STH
- ;font-hex #00 CPY #f0 AND #04 SFT #08 * ++ .Screen/addr DEO2
+ ;font-hex #00 STHkr #f0 AND #04 SFT #08 * ++ .Screen/addr DEO2
( draw ) OVRr STHr .Screen/color DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
;font-hex #00 STHr #0f AND #08 * ++ .Screen/addr DEO2
@@ 809,13 793,13 @@ RTN
STH SWP
DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
- ( draw ) CPY .Screen/color DEO
+ ( draw ) STHkr .Screen/color DEO
#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
- ( draw ) CPY .Screen/color DEO
+ ( draw ) STHkr .Screen/color DEO
DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
- ( draw ) CPY .Screen/color DEO
+ ( draw ) STHkr .Screen/color DEO
#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
( draw ) STHr .Screen/color DEO
@@ 843,8 827,6 @@ RTN
@tool_selector 80c0 e0f0 f8e0 1000
@tool_hand 2020 20b8 7c7c 3838
@tool_eraser 2050 b87c 3e1c 0800
-@moveup_icn 0010 387c fe10 1000
-@movedown_icn 0010 1010 fe7c 3810
@halftone_icn aa55 aa55 aa55 aa55
@bigpixel-icn f0f0 f0f0 0000 0000
@@ 867,9 849,6 @@ RTN
@eye-icns
0038 4492 2810 0000 ( open )
0000 0082 4438 0000 ( closed )
-@depth-icns
- 00fe 8282 fe82 82fe
- 00fe 9292 fe92 92fe
@font-hex
007c 8282 8282 827c 0030 1010 1010 1010
007c 8202 7c80 80fe 007c 8202 1c02 827c