@@ 23,7 23,7 @@
%STEP8 { #0033 SFT2 }
%SFL { #40 SFT SFT }
-%MOD { DUP2 DIV MUL SUB }
+%MOD { DUP2 / * - }
%TOB { SWP POP } %TOS { #00 SWP }
@@ 33,6 33,9 @@
%LTS2 { #8000 ++ SWP2 #8000 ++ >> }
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
+%INCR { SWP #01 + SWP }
+%GET-ITERATORS { OVR2 OVR2 POP SWP POP SWP }
+
%SIZE-TO-RECT {
STH2 STH2 OVR2 STH2r ++ OVR2 STH2r ++
} ( x y w h -- x1 y1 x2 y2 )
@@ 46,6 49,7 @@
} ( x1 y1 x2 y2 addr -- )
%BANK { #2000 }
+%SELECTED-ADDR { .settings/selection LDZ TOS #0010 ** BANK ++ }
( devices )
@@ 66,13 70,13 @@
&brush $1
&page $2
&tile $2
- &ratio $1 ]
+ &ratio $1
+ &selection $1 ]
@frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 &width $2 &height $2 ]
( interface )
@bankview [ &x $2 &y $2 &mode $1 &selection $1 ]
-@tileview [ &x $2 &y $2 ]
@editview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@colorview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@@ 83,7 87,6 @@
@rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@mouse [ &x $2 &y $2 ]
@pt [ &x $1 &y $1 ]
-@pos [ &x $2 &y $2 ]
@color $1
@i $1
@@ 107,24 110,22 @@
#00a8 .frame/height STZ2
#01 .settings/brush STZ
#32 .settings/ratio STZ
+ BANK .settings/page STZ2
+ BANK #0448 ++ .settings/tile STZ2
+ #01 .settings/depth STZ
.Screen/width DEI2 #0001 SFT2 .frame/width LDZ2 #0001 SFT2 --
- .Screen/height DEI2 #0001 SFT2 .frame/height LDZ2 #0001 SFT2 -- #0010 ++
+ .Screen/height DEI2 #0001 SFT2 .frame/height LDZ2 #0001 SFT2 --
.frame/width LDZ2 .frame/height LDZ2
SIZE-TO-RECT ;frame SET-RECT
.frame/x1 LDZ2 #0010 ++ .bankview/x STZ2
.frame/y1 LDZ2 .bankview/y STZ2
- BANK .settings/page STZ2
-
- .frame/x2 LDZ2 #0098 -- .tileview/x STZ2
- .frame/y1 LDZ2 .tileview/y STZ2
- BANK #0448 ++ .settings/tile STZ2
.frame/x2 LDZ2 #0010 -- .frame/y1 LDZ2 #0010 #0080 SIZE-TO-RECT ;dataview SET-RECT
- .frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #0020 -- #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
- .frame/x1 LDZ2 #0060 ++ .frame/y2 LDZ2 #0020 -- #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
- .frame/x1 LDZ2 #0038 ++ .frame/y2 LDZ2 #0020 -- #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
+ .frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
+ .frame/x1 LDZ2 #0040 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
+ .frame/x1 LDZ2 #0070 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
.frame/x2 LDZ2 #0098 -- .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
( editview grid )
@@ 139,14 140,9 @@
#01 .settings/blending STZ
- ;filepath1 .File/name DEO2 #0800 .File/length DEO2 BANK .File/load DEO2
- ;filepath2 .File/name DEO2 #0800 .File/length DEO2 BANK #0800 ++ .File/load DEO2
- ;filepath3 .File/name DEO2 #1000 .File/length DEO2 BANK #1000 ++ .File/load DEO2
- ;filepath4 .File/name DEO2 #1000 .File/length DEO2 BANK #2000 ++ .File/load DEO2
- ;filepath5 .File/name DEO2 #1000 .File/length DEO2 BANK #2800 ++ .File/load DEO2
- ;filepath6 .File/name DEO2 #1000 .File/length DEO2 BANK #3800 ++ .File/load DEO2
+ ;filepath1 .File/name DEO2 #1000 .File/length DEO2 BANK .File/load DEO2
- #40 DUP .bankview/selection STZ ;select-tile JSR2
+ ;redraw JSR2
BRK
@@ 158,38 154,36 @@ BRK
@on-button ( -> )
- ( skip ) .Controller/button DEI #00 NEQ #01 JCN [ BRK ]
+ ( skip ) .Controller/button DEI #00 ! #01 JCN [ BRK ]
- .Controller/button DEI #11 NEQ ,&no-pageup JCN .settings/page LDZ2
+ .Controller/button DEI #11 ! ,&no-pageup JCN .settings/page LDZ2
#0800 -- .settings/page STZ2
;redraw JSR2
BRK &no-pageup
- .Controller/button DEI #21 NEQ ,&no-pagedown JCN .settings/page LDZ2
+ .Controller/button DEI #21 ! ,&no-pagedown JCN .settings/page LDZ2
#0800 ++ .settings/page STZ2
;redraw JSR2
BRK &no-pagedown
.Controller/button DEI #f0 AND
- DUP #04 SFT #01 AND #01 NEQ ,&no-up JCN
- ( move ) .bankview/selection LDZ #10 SUB .bankview/selection STZ &no-up
- DUP #05 SFT #01 AND #01 NEQ ,&no-down JCN
+ DUP #04 SFT #01 AND #01 ! ,&no-up JCN
+ ( move ) .bankview/selection LDZ #10 - .bankview/selection STZ &no-up
+ DUP #05 SFT #01 AND #01 ! ,&no-down JCN
( move ) .bankview/selection LDZ #10 + .bankview/selection STZ &no-down
- DUP #06 SFT #01 AND #01 NEQ ,&no-left JCN
- ( move ) .bankview/selection LDZ #01 SUB .bankview/selection STZ &no-left
- DUP #07 SFT #01 AND #01 NEQ ,&no-right JCN
+ DUP #06 SFT #01 AND #01 ! ,&no-left JCN
+ ( move ) .bankview/selection LDZ #01 - .bankview/selection STZ &no-left
+ DUP #07 SFT #01 AND #01 ! ,&no-right JCN
( move ) .bankview/selection LDZ #01 + .bankview/selection STZ &no-right
POP
- .bankview/selection LDZ ;select-tile JSR2
-
BRK
@on-mouse ( -> )
;draw-cursor JSR2
- ( skip ) .Mouse/state DEI #00 NEQ #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
( toolbar )
.Mouse/y DEI2 .bankview/y LDZ2 #0010 -- -- #0008 // #0000 !! ;&no-toolbar-click JCN2
@@ 210,11 204,6 @@ BRK
.Mouse/y DEI2 .bankview/y LDZ2 >> .Mouse/y DEI2 .bankview/y LDZ2 #0080 ++ << #0101 ==
#0101 == ;on-touch-bankview JCN2
- ( tileview )
- .Mouse/x DEI2 .tileview/x LDZ2 >> .Mouse/x DEI2 .tileview/x LDZ2 #0080 ++ << #0101 ==
- .Mouse/y DEI2 .tileview/y LDZ2 >> .Mouse/y DEI2 .tileview/y LDZ2 #0080 ++ << #0101 ==
- #0101 == ;on-touch-tileview JCN2
-
( editview )
.Mouse/x DEI2 DUP2 .editview/x1 LDZ2 >> ROT ROT .editview/x2 LDZ2 << #0101 ==
.Mouse/y DEI2 DUP2 .editview/y1 LDZ2 >> ROT ROT .editview/y2 LDZ2 << #0101 ==
@@ 244,45 233,40 @@ BRK
@on-touch-bankview ( -> )
- .bankview/mode LDZ #01 NEQ ,¬-copy-mode JCN
- #00 .i STZ
+ .bankview/mode LDZ #01 ! ,¬-copy-mode JCN
+ #00 #10
©-loop
- ( load ) .settings/tile LDZ2 .i LDZ + LDA
- ( get touch addr )
- .Mouse/x DEI2 .bankview/x LDZ2 -- STEP8
- .Mouse/y DEI2 .bankview/y LDZ2 -- STEP8 #0010 ** ++
- ( 2-bit mode ) #00 .settings/depth LDZ #01 + **
- .settings/page LDZ2 ++ #00 .i LDZ ++ STA
- ( incr ) .i LDZ #01 + .i STZ
- .i LDZ #08 LTH ,©-loop JCN
+ ( from )
+ OVR TOS SELECTED-ADDR ++ LDA STH
+ ( to )
+ OVR STHr SWP TOS
+ .Mouse/x DEI2 .bankview/x LDZ2 -- #0008 //
+ .Mouse/y DEI2 .bankview/y LDZ2 -- #0008 // #0010 ** ++
+ #0010 ** BANK ++ ++ STA
+ INCR
+ LTHk ,©-loop JCN
+ POP2
;redraw JSR2 BRK
¬-copy-mode
- .bankview/mode LDZ #02 NEQ ,¬-erase-mode JCN
- #00 .i STZ
+ .bankview/mode LDZ #02 ! ,¬-erase-mode JCN
+ #00 #10
&erase-loop
- #00
- ( get touch addr )
- .Mouse/x DEI2 .bankview/x LDZ2 -- STEP8
- .Mouse/y DEI2 .bankview/y LDZ2 -- STEP8 #0010 ** ++
- ( 2-bit mode ) #00 .settings/depth LDZ #01 + **
- .settings/page LDZ2 ++ #00 .i LDZ ++ STA
- ( incr ) .i LDZ #01 + .i STZ
- .i LDZ #08 LTH ,&erase-loop JCN
+ OVR #00 SWP TOS
+ .Mouse/x DEI2 .bankview/x LDZ2 -- #0008 //
+ .Mouse/y DEI2 .bankview/y LDZ2 -- #0008 // #0010 ** ++
+ #0010 ** BANK ++ ++ STA
+ INCR
+ LTHk ,&erase-loop JCN
+ POP2
;redraw JSR2 BRK
¬-erase-mode
( select )
-
.Mouse/x DEI2 .bankview/x LDZ2 -- #0008 // TOB
.Mouse/y DEI2 .bankview/y LDZ2 -- #0008 // TOB #40 SFT +
- DUP .bankview/selection STZ
- ;select-tile JSR2
-
-BRK
-
-@on-touch-tileview ( -> )
-
+ .settings/selection STZ
+ ;redraw JSR2
BRK
@@ 294,13 278,13 @@ BRK
@on-touch-dataview ( -> )
- .Mouse/y DEI2 .dataview/y1 LDZ2 -- STEP8 TOB #60 EQU ,&skip JCN BRK &skip
+ .Mouse/y DEI2 .dataview/y1 LDZ2 -- STEP8 TOB #60 = ,&skip JCN BRK &skip
.Mouse/x DEI2 .dataview/x1 LDZ2 -- #0008 // TOB
- DUP #00 NEQ ,&no-move-up JCN
+ DUP #00 ! ,&no-move-up JCN
;op_shiftup JSR2
( release ) #00 .Mouse/state DEO
;redraw JSR2 POP BRK &no-move-up
- DUP #01 NEQ ,&no-move-down JCN
+ DUP #01 ! ,&no-move-down JCN
;op_shiftdown JSR2
( release ) #00 .Mouse/state DEO
;redraw JSR2 POP BRK &no-move-down
@@ 311,7 295,7 @@ BRK
@on-touch-blendview ( -> )
.Mouse/x DEI2 .blendview/x1 LDZ2 -- #0008 // TOB
- .Mouse/y DEI2 .blendview/y1 LDZ2 -- #0008 // TOB #04 MUL +
+ .Mouse/y DEI2 .blendview/y1 LDZ2 -- #0008 // TOB #04 * +
.settings/blending STZ
( release ) #00 .Mouse/state DEO
;redraw JSR2
@@ 322,14 306,14 @@ BRK
( channel ) .Mouse/y DEI2 .colorview/y1 LDZ2 -- #0008 // TOB STH
( rgb ) .Mouse/x DEI2 .colorview/x1 LDZ2 -- #0008 // TOB
- DUP #00 NEQ ,&no-brush JCN
- DUPr STHr .settings/brush STZ &no-brush
- DUP #01 NEQ ,&no-red JCN
- DUPr STHr .System/r ;set-color JSR2 &no-red
- DUP #02 NEQ ,&no-green JCN
- DUPr STHr .System/g ;set-color JSR2 &no-green
- DUP #03 NEQ ,&no-blue JCN
- DUPr STHr .System/b ;set-color JSR2 &no-blue
+ DUP #00 ! ,&no-brush JCN
+ STHkr .settings/brush STZ &no-brush
+ DUP #01 ! ,&no-red JCN
+ STHkr .System/r ;set-color JSR2 &no-red
+ DUP #02 ! ,&no-green JCN
+ STHkr .System/g ;set-color JSR2 &no-green
+ DUP #03 ! ,&no-blue JCN
+ STHkr .System/b ;set-color JSR2 &no-blue
POP POPr
( release ) #00 .Mouse/state DEO
;redraw JSR2
@@ 349,6 333,14 @@ BRK
( clear editview )
.editview/x1 LDZ2 .editview/y1 LDZ2 .editview/x2 LDZ2 .editview/y2 LDZ2 #00 ;fill-rect JSR2
+ ( editview grid )
+ .editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0020 ++ #03 ;line-hor JSR2
+ .editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0040 ++ #03 ;line-hor JSR2
+ .editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0060 ++ #03 ;line-hor JSR2
+ .editview/x1 LDZ2 #0020 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
+ .editview/x1 LDZ2 #0040 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
+ .editview/x1 LDZ2 #0060 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
+
;redraw JSR2
BRK
@@ 356,47 348,35 @@ BRK
@set-color ( color rgb -- )
STH
- DUP #00 NEQ ,&no-red0 JCN
- DUPr STHr DEI DUP #04 SFT #01 +
- ( add/sub ) .Mouse/state DEI #10 EQU #fe MUL +
- ( resume ) #40 SFT SWP #0f AND + DUPr STHr DEO
+ DUP #00 ! ,&no-red0 JCN
+ STHkr DEI DUP #04 SFT #01 +
+ ( add/sub ) .Mouse/state DEI #10 = #fe * +
+ ( resume ) #40 SFT SWP #0f AND + STHkr DEO
&no-red0
- DUP #01 NEQ ,&no-red1 JCN
- DUPr STHr DEI DUP #0f AND #01 +
- ( add/sub ) .Mouse/state DEI #10 EQU #fe MUL +
- ( resume ) #0f AND SWP #f0 AND + DUPr STHr DEO
+ DUP #01 ! ,&no-red1 JCN
+ STHkr DEI DUP #0f AND #01 +
+ ( add/sub ) .Mouse/state DEI #10 = #fe * +
+ ( resume ) #0f AND SWP #f0 AND + STHkr DEO
&no-red1
- DUP #02 NEQ ,&no-red2 JCN
- DUPr STHr #01 + DEI DUP #04 SFT #01 +
- ( add/sub ) .Mouse/state DEI #10 EQU #fe MUL +
- ( resume ) #40 SFT SWP #0f AND + DUPr STHr #01 + DEO
+ DUP #02 ! ,&no-red2 JCN
+ STHkr #01 + DEI DUP #04 SFT #01 +
+ ( add/sub ) .Mouse/state DEI #10 = #fe * +
+ ( resume ) #40 SFT SWP #0f AND + STHkr #01 + DEO
&no-red2
- DUP #03 NEQ ,&no-red3 JCN
- DUPr STHr #01 + DEI DUP #0f AND #01 +
- ( add/sub ) .Mouse/state DEI #10 EQU #fe MUL +
- ( resume ) #0f AND SWP #f0 AND + DUPr STHr #01 + DEO
+ DUP #03 ! ,&no-red3 JCN
+ STHkr #01 + DEI DUP #0f AND #01 +
+ ( add/sub ) .Mouse/state DEI #10 = #fe * +
+ ( resume ) #0f AND SWP #f0 AND + STHkr #01 + DEO
&no-red3
POP
POPr
RTN
-@select-tile ( pos -- )
-
- ( x y ) DUP #0f AND SWP #04 SFT
- ( y ) #10 MOD #10 MUL #00 SWP #0008 **
- ( x ) ROT #10 MOD #00 SWP #0008 ** ++
- ( 2-bit mode ) #00 .settings/depth LDZ #01 + **
- ( offset ) .settings/page LDZ2 ++ .settings/tile STZ2
- ;redraw JSR2
-
-RTN
-
@toggle-depth ( -- )
.bankview/selection LDZ
- .settings/depth LDZ #00 EQU .settings/depth STZ
- ;select-tile JSR2
+ .settings/depth LDZ #00 = .settings/depth STZ
RTN
@@ 431,7 411,7 @@ RTN
@redraw ( -- )
;draw-bankview JSR2
- ;draw-editview JSR2
+ ;draw-editview JSR2
;draw-blendview JSR2
;draw-colorview JSR2
;draw-dataview JSR2
@@ 447,7 427,7 @@ RTN
.bankview/x LDZ2 .Screen/x DEO2
.bankview/y LDZ2 #0010 -- .Screen/y DEO2
- .settings/page LDZ2 #22 ;draw-short JSR2
+ .settings/selection LDZ #22 ;draw-byte JSR2
( toolbar )
@@ 459,83 439,73 @@ RTN
.bankview/x LDZ2 #0068 ++ .Screen/x DEO2
;tool_selector .Screen/addr DEO2
- #21 .bankview/mode LDZ #00 EQU + .Screen/color DEO
+ #21 .bankview/mode LDZ #00 = + .Screen/color DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
;tool_hand .Screen/addr DEO2
- #21 .bankview/mode LDZ #01 EQU + .Screen/color DEO
+ #21 .bankview/mode LDZ #01 = + .Screen/color DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
;tool_eraser .Screen/addr DEO2
- #21 .bankview/mode LDZ #02 EQU + .Screen/color DEO
+ #21 .bankview/mode LDZ #02 = + .Screen/color DEO
( guides )
-
.bankview/x LDZ2 #0010 -- .Screen/x DEO2
.bankview/y LDZ2 .Screen/y DEO2
;font-hex .Screen/addr DEO2
#00 #10
&guides
- ( draw ) OVR .bankview/selection LDZ #04 SFT EQU #22 + .Screen/color DEO
+ ( draw ) OVR .settings/selection LDZ #04 SFT = #21 + .Screen/color DEO
.Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
.Screen/y DEI2 #0008 ++ .Screen/y DEO2
- SWP #01 + SWP
- DUP2 LTH ,&guides JCN
+ INCR
+ LTHk ,&guides JCN
POP2
( draw page )
-
- ( load ) .settings/page LDZ2 .Screen/addr DEO2
- .bankview/y LDZ2 DUP2 #0080 ++
+ #00 #10
&ver
- ( save ) OVR2 .Screen/y DEO2
- .bankview/x LDZ2 DUP2 #0080 ++
+ OVR #08 * TOS .bankview/y LDZ2 ++ .Screen/y DEO2
+ #00 #10
&hor
- ( save ) OVR2 .Screen/x DEO2
- ( get selected ) .Screen/addr DEI2 .settings/tile LDZ2 ==
- ( get blending ) .settings/blending LDZ
- ( get depth ) .settings/depth LDZ #20 MUL
- ( draw ) #20 + + + .Screen/color DEO
- ( incr ) SWP2 #0008 ++ SWP2
- ( incr ) .Screen/addr DEI2 #0008 ++ #00 .settings/depth LDZ #0008 ** ++ .Screen/addr DEO2
- OVR2 OVR2 << ,&hor JCN
- POP2 POP2
- ( incr ) SWP2 #0008 ++ SWP2
- OVR2 OVR2 << ,&ver JCN
- POP2 POP2
-
+ OVR #08 * TOS .bankview/x LDZ2 ++ .Screen/x DEO2
+ GET-ITERATORS
+ ( addr ) DUP2 TOS #0100 ** ROT TOS #0010 ** ++ BANK ++ .Screen/addr DEO2
+ ( draw ) #40 SFT + .settings/selection LDZ = #40 .settings/blending LDZ + + .Screen/color DEO
+ INCR
+ LTHk ,&hor JCN
+ POP2
+ INCR
+ LTHk ,&ver JCN
+ POP2
+
RTN
@draw-editview ( -- )
- ( position )
- .editview/x1 LDZ2 .Screen/x DEO2
- .editview/y1 LDZ2 #0010 -- .Screen/y DEO2
- .settings/tile LDZ2 #22 ;draw-short JSR2
-
( tiles )
- .settings/tile LDZ2 DUP2 STH2 .Screen/addr DEO2
+ SELECTED-ADDR STH2k .Screen/addr DEO2
#00 #04
&ver
- OVR #20 MUL TOS .editview/y1 LDZ2 ++ .Screen/y DEO2
+ OVR #20 * TOS .editview/y1 LDZ2 ++ .Screen/y DEO2
#00 #04
&hor
- OVR #20 MUL TOS .editview/x1 LDZ2 ++ .Screen/x DEO2
+ OVR #20 * TOS .editview/x1 LDZ2 ++ .Screen/x DEO2
( get x,y )
- SWP2 OVR STH SWP2 OVR STHr
+ GET-ITERATORS
( check if within ratio )
- .settings/ratio LDZ #0f AND LTH STH
- .settings/ratio LDZ #04 SFT LTH STHr
+ .settings/ratio LDZ #0f AND < STH
+ .settings/ratio LDZ #04 SFT < STHr
#0101 !! ,&outside JCN
- DUP2r STH2r .Screen/addr DEO2
+ STH2kr .Screen/addr DEO2
#01 ,draw-tile JSR
- ( incr ) STH2r #0008 ++ STH2
+ ( incr ) STH2r #0010 ++ STH2
&outside
- ( incr ) SWP #01 + SWP
- DUP2 LTH ,&hor JCN
+ ( incr ) INCR
+ LTHk ,&hor JCN
POP2
- ( incr ) SWP #01 + SWP
- DUP2 LTH ;&ver JCN2
+ ( incr ) INCR
+ LTHk ;&ver JCN2
POP2
POP2r
@@ 548,69 518,48 @@ RTN
&ver
#00 #20
&hor
- OVR #04 MOD #00 EQU ,&skip JCN
- STH2 OVR STH2r ROT #04 MOD #00 EQU ,&skip JCN
+ OVR #04 MOD #00 = ,&skip JCN
+ STH2 OVR STH2r ROT #04 MOD #00 = ,&skip JCN
( get x,y )
- SWP2 OVR STH SWP2 OVR STHr
+ GET-ITERATORS
( get address )
.Screen/addr DEI2
( after this, +R XY )
SWP2 SWP STH
( got sprite line )
- #04 DIV TOS ++ LDA
+ #04 / TOS ++ LDA
( get pixel )
- STHr #04 DIV
- #07 SWP SUB SFT #01 AND
+ STHr #04 /
+ #07 SWP - SFT #01 AND
.Screen/color DEO
&skip
#0001 .Screen/x DEI2 ++ .Screen/x DEO2
- ( incr ) SWP #01 + SWP
- DUP2 LTH ,&hor JCN
+ ( incr ) INCR
+ LTHk ,&hor JCN
POP2
#0001 .Screen/y DEI2 ++ .Screen/y DEO2
.Screen/x DEI2 #0020 -- .Screen/x DEO2
- ( incr ) SWP #01 + SWP
- DUP2 LTH ,&ver JCN
+ ( incr ) INCR
+ LTHk ,&ver JCN
POP2
.Screen/y DEI2 #0020 -- .Screen/y DEO2
POPr
RTN
-@draw-tileview-icn ( -- )
-
- #00 .pt/x STZ #00 .pt/y STZ
- &ver
- #00 .pt/x STZ
- &hor
- ( get bit )
- ;blank_icn #00
- .settings/tile LDZ2 #00 .pt/y LDZ ++ LDA #07 .pt/x LDZ SUB SFT #01 AND ( get bit )
- #0008 ** ++ .Screen/addr DEO2 ( add *8 )
- ( draw ) #21 .Screen/color DEO
- ( incr ) .Screen/x DEI2 #0008 ++ .Screen/x DEO2
- ( incr ) .pt/x LDZ #01 + .pt/x STZ
- .pt/x LDZ #08 LTH ;&hor JCN2
- ( incr ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2
- ( incr ) .pt/y LDZ #01 + .pt/y STZ
- .Screen/x DEI2 #0040 -- .Screen/x DEO2
- .pt/y LDZ #08 LTH ;&ver JCN2
-
-RTN
-
@draw-dataview ( -- )
( bytes )
- .tileview/y LDZ2 #0018 ++ .Screen/y DEO2
+ .editview/y1 LDZ2 #0018 ++ .Screen/y DEO2
#00 .i STZ
&bytes
- .tileview/x LDZ2 #0088 ++ .Screen/x DEO2
+ .editview/x1 LDZ2 #0088 ++ .Screen/x DEO2
.settings/tile LDZ2 #00 .i LDZ ++ LDA #22 ;draw-byte JSR2
( incr ) .i LDZ #01 + .i STZ
( incr ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2
- .i LDZ #08 LTH ;&bytes JCN2
+ .i LDZ #08 < ;&bytes JCN2
( operations )
.Screen/y DEI2 #0008 ++ .Screen/y DEO2
@@ 621,56 570,122 @@ RTN
#21 .Screen/color DEO
( draw tiles 2x2 )
- .tileview/y LDZ2 .Screen/y DEO2
+ .editview/y1 LDZ2 .Screen/y DEO2
#00 .pt/x STZ #00 .pt/y STZ .settings/tile LDZ2 .Screen/addr DEO2
&tiles-ver
#00 .pt/x STZ
- .tileview/x LDZ2 #0088 ++ .Screen/x DEO2
+ .editview/x1 LDZ2 #0088 ++ .Screen/x DEO2
&tiles-hor
( draw ) #23 .Screen/color DEO
( incr ) .Screen/x DEI2 #0008 ++ .Screen/x DEO2
( incr ) .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
( incr ) .pt/x LDZ #01 + .pt/x STZ
- .pt/x LDZ #02 LTH ;&tiles-hor JCN2
+ .pt/x LDZ #02 < ;&tiles-hor JCN2
( incr ) .pt/y LDZ #01 + .pt/y STZ
( incr ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2
- .pt/y LDZ #02 LTH ;&tiles-ver JCN2
+ .pt/y LDZ #02 < ;&tiles-ver JCN2
RTN
@draw-blendview ( -- )
- .settings/tile LDZ2 .Screen/addr DEO2
+ ( outline )
+ .blendview/x1 LDZ2 #0002 --
+ .blendview/y1 LDZ2 #0002 --
+ .blendview/x2 LDZ2 #0001 ++
+ .blendview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+
+ ( value )
+ .blendview/x1 LDZ2 .Screen/x DEO2
+ .blendview/y2 LDZ2 #0001 ++ .Screen/y DEO2
+ ( get blending ) .settings/blending LDZ
+ ( get depth ) .settings/depth LDZ #20 *
+ ( draw ) #20 + + #21 ;draw-byte JSR2
+
+ BANK .settings/selection LDZ TOS #0010 ** ++ .Screen/addr DEO2
#00 #10
&loop
OVR #04 MOD #00 SWP #0008 ** .blendview/x1 LDZ2 ++ .Screen/x DEO2
- OVR #04 DIV #00 SWP #0008 ** .blendview/y1 LDZ2 ++ .Screen/y DEO2
+ OVR #04 / #00 SWP #0008 ** .blendview/y1 LDZ2 ++ .Screen/y DEO2
#20 .Screen/color DEO
- OVR #20 + .settings/depth LDZ #20 MUL + .Screen/color DEO
- SWP #01 + SWP
- DUP2 LTH ,&loop JCN
+ OVR #20 + .settings/depth LDZ #20 * + .Screen/color DEO
+ INCR
+ LTHk ,&loop JCN
POP2
- .blendview/x1 LDZ2 .Screen/x DEO2
- .blendview/y2 LDZ2 #0001 ++ .Screen/y DEO2
- ( get blending ) .settings/blending LDZ
- ( get depth ) .settings/depth LDZ #20 MUL
- ( draw ) #20 + + #21 ;draw-byte JSR2
+
+RTN
+
+@draw-preview ( -- )
+
+ ( outline )
+ .preview/x1 LDZ2 #0002 --
+ .preview/y1 LDZ2 #0002 --
+ .preview/x2 LDZ2 #0001 ++
+ .preview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+
+ ( value )
+ .preview/x1 LDZ2 #0001 -- .Screen/x DEO2
+ .preview/y2 LDZ2 #0001 ++ .Screen/y DEO2
+ .settings/ratio LDZ #22 ;draw-byte JSR2
+
+ ( stash address )
+ SELECTED-ADDR DUP2 STH2 .Screen/addr DEO2
+ #00 #04
+ &ver
+ OVR #08 * TOS .preview/y1 LDZ2 ++ .Screen/y DEO2
+ #00 #04
+ &hor
+ OVR #08 * TOS .preview/x1 LDZ2 ++ .Screen/x DEO2
+ ( get x,y )
+ GET-ITERATORS
+ ( check if within ratio )
+ .settings/ratio LDZ #0f AND < STH
+ .settings/ratio LDZ #04 SFT < STHr
+ #0101 !! ,&outside JCN
+ ( get tile ) STH2kr .Screen/addr DEO2
+ ( get blending ) .settings/blending LDZ
+ ( get depth ) .settings/depth LDZ #20 *
+ ( draw ) #20 + + .Screen/color DEO
+ ( incr ) STH2r #0008 [ .settings/depth LDZ #08 * TOS ++ ] ++ STH2
+ ,&resume JMP
+ &outside
+ ;halftone_icn .Screen/addr DEO2
+ #23 .Screen/color DEO
+ &resume
+ ( incr ) INCR
+ LTHk ,&hor JCN
+ POP2
+ ( incr ) INCR
+ LTHk ;&ver JCN2
+ POP2
+ POP2r
RTN
@draw-colorview ( -- )
+ ( outline )
+ .colorview/x1 LDZ2 #0002 --
+ .colorview/y1 LDZ2 #0002 --
+ .colorview/x2 LDZ2 #0001 ++
+ .colorview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+
+ ( value )
+ .colorview/x1 LDZ2 #0001 -- .Screen/x DEO2
+ .colorview/y2 LDZ2 #0001 ++ .Screen/y DEO2
+ .settings/brush LDZ #23 ;draw-byte JSR2
+
.colorview/x1 LDZ2 .Screen/x DEO2
;circle_icns .Screen/addr DEO2
#00 #04
&loop
- OVR .settings/brush LDZ EQU #00 SWP #0008 ** ;circle_icns ++ .Screen/addr DEO2
+ OVR .settings/brush LDZ = #00 SWP #0008 ** ;circle_icns ++ .Screen/addr DEO2
OVR .colorview/y1 LDZ2 ROT #00 SWP #0008 ** ++ .Screen/y DEO2
OVR #20 + .Screen/color DEO
- SWP #01 + SWP
- DUP2 LTH ,&loop JCN
+ INCR
+ LTHk ,&loop JCN
POP2
.colorview/y1 LDZ2 #18 + .Screen/y DEO2
@@ 686,60 701,21 @@ RTN
RTN
&draw-color-code ( color* -- )
- DUP ;font-hex ROT #0f AND #08 MUL #00 SWP ++ .Screen/addr DEO2
+ DUP ;font-hex ROT #0f AND #08 * #00 SWP ++ .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 LDZ2 #10 + .Screen/y DEO2
- ;font-hex ROT #04 SFT #08 MUL #00 SWP ++ .Screen/addr DEO2
+ ;font-hex ROT #04 SFT #08 * #00 SWP ++ .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 LDZ2 #08 + .Screen/y DEO2
- DUP ;font-hex ROT #0f AND #08 MUL #00 SWP ++ .Screen/addr DEO2
+ DUP ;font-hex ROT #0f AND #08 * #00 SWP ++ .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
.colorview/y1 LDZ2 .Screen/y DEO2
- ;font-hex ROT #04 SFT #08 MUL #00 SWP ++ .Screen/addr DEO2
+ ;font-hex ROT #04 SFT #08 * #00 SWP ++ .Screen/addr DEO2
( draw ) #22 .Screen/color DEO
RTN
RTN
-@draw-preview ( -- )
-
- ( stash address )
- .settings/tile LDZ2 DUP2 STH2 .Screen/addr DEO2
- #00 #04
- &ver
- OVR #08 MUL TOS .preview/y1 LDZ2 ++ .Screen/y DEO2
- #00 #04
- &hor
- OVR #08 MUL TOS .preview/x1 LDZ2 ++ .Screen/x DEO2
- ( get x,y )
- SWP2 OVR STH SWP2 OVR STHr
- ( check if within ratio )
- .settings/ratio LDZ #0f AND LTH STH
- .settings/ratio LDZ #04 SFT LTH STHr
- #0101 !! ,&outside JCN
- ( get tile ) DUP2r STH2r .Screen/addr DEO2
- ( get blending ) .settings/blending LDZ
- ( get depth ) .settings/depth LDZ #20 MUL
- ( draw ) #20 + + .Screen/color DEO
- ( incr ) STH2r #0008 [ .settings/depth LDZ #08 MUL TOS ++ ] ++ STH2
- ,&resume JMP
- &outside
- ;halftone_icn .Screen/addr DEO2
- #23 .Screen/color DEO
- &resume
- ( incr ) SWP #01 + SWP
- DUP2 LTH ,&hor JCN
- POP2
- ( incr ) SWP #01 + SWP
- DUP2 LTH ;&ver JCN2
- POP2
- POP2r
- .preview/x1 LDZ2 #0001 -- .Screen/x DEO2
- .preview/y2 LDZ2 #0001 ++ .Screen/y DEO2
- .settings/ratio LDZ #23 ;draw-byte JSR2
-
-RTN
-
@draw-cursor ( -- )
( clear last cursor )
@@ 754,18 730,18 @@ RTN
( draw new cursor )
.mouse/x LDZ2 .Screen/x DEO2
.mouse/y LDZ2 .Screen/y DEO2
- ;tool_selector #00 .bankview/mode LDZ #08 MUL ++ .Screen/addr DEO2
- #32 .Mouse/state DEI #00 NEQ + .Screen/color DEO
+ ;tool_selector #00 .bankview/mode LDZ #08 * ++ .Screen/addr DEO2
+ #32 .Mouse/state DEI #00 ! + .Screen/color DEO
RTN
@draw-byte ( byte color -- )
STH STH
- ;font-hex #00 DUPr STHr #f0 AND #04 SFT #08 MUL ++ .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 MUL ++ .Screen/addr DEO2
+ ;font-hex #00 STHr #0f AND #08 * ++ .Screen/addr DEO2
( draw ) STHr .Screen/color DEO
RTN
@@ 774,13 750,13 @@ RTN
STH SWP
DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
- ( draw ) DUPr STHr .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 ) DUPr STHr .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 ) DUPr STHr .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
@@ 798,7 774,7 @@ RTN
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/color DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
- OVR2 OVR2 LTS2 ,&ver JCN
+ LTH2k ,&ver JCN
POP2 POP2
.rect/x1 LDZ2 .rect/x2 LDZ2
&hor
@@ 822,10 798,10 @@ RTN
( save ) OVR2 .Screen/x DEO2
( draw ) .color LDZ .Screen/color DEO
( incr ) SWP2 #0001 ++ SWP2
- OVR2 OVR2 LTS2 ,&hor JCN
+ LTH2k ,&hor JCN
POP2 POP2 STH2r STH2r
( incr ) SWP2 #0001 ++ SWP2
- OVR2 OVR2 LTS2 ,&ver JCN
+ LTH2k ,&ver JCN
POP2 POP2 POP2 POP2
RTN
@@ 835,9 811,9 @@ RTN
STH .Screen/y DEO2
&loop
( save ) OVR2 .Screen/x DEO2
- ( draw ) DUPr STHr .Screen/color DEO
+ ( draw ) STHkr .Screen/color DEO
( incr ) SWP2 #0002 ++ SWP2
- OVR2 OVR2 << ,&loop JCN
+ LTH2k ,&loop JCN
POP2 POP2 POPr
RTN
@@ 847,9 823,9 @@ RTN
STH ROT2 .Screen/x DEO2
&loop
( save ) OVR2 .Screen/y DEO2
- ( draw ) DUPr STHr .Screen/color DEO
+ ( draw ) STHkr .Screen/color DEO
( incr ) SWP2 #0002 ++ SWP2
- OVR2 OVR2 << ,&loop JCN
+ LTH2k ,&loop JCN
POP2 POP2 POPr
RTN
@@ 883,10 859,4 @@ RTN
007c 8280 8080 827c 00fc 8282 8282 82fc
007c 8280 f080 827c 007c 8280 f080 8080
-@filepath1 [ "projects/fonts/specter8.bit 00 ]
-@filepath2 [ "projects/pictures/cyr10x8.chr 00 ]
-@filepath3 [ "projects/pictures/zerotwo10x10.chr 00 ]
-@filepath4 [ "projects/fonts/katahira8.bit 00 ]
-@filepath5 [ "projects/pictures/ako10x10.chr 00 ]
-@filepath6 [ "projects/pictures/logo1x1.bit 00 ]
-
+@filepath1 [ "example.chr 00 ]