@@ 25,8 25,10 @@
%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
-%8** { #30 SFT2 } %8// { #03 SFT2 }
-%TOB { SWP POP } %TOS { #00 SWP }
+%2** { #10 SFT2 } %2// { #01 SFT2 }
+%8** { #30 SFT2 } %8// { #03 SFT2 }
+%TOS { #00 SWP } %TOB { SWP POP }
+
%RTN { JMP2r }
%MOD { DUP2 / * - }
%MOD2 { OVR2 OVR2 // ** -- }
@@ 35,21 37,21 @@
%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }
%LTS2 { #8000 ++ SWP2 #8000 ++ >> }
-%INCR { SWP #01 + SWP }
-%INCR2 { SWP2 #0001 ++ SWP2 }
+%GTS2 { #8000 ++ SWP2 #8000 ++ << }
%STEP8 { #33 SFT2 }
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 SWP POP OVR SWP }
+%BRK? { #01 JCN BRK }
%HOR { #20 } %VER { #10 }
-%WIDTH { HOR TOS #0008 ** }
+%WIDTH { HOR TOS 8** }
%LENGTH { HOR TOS VER TOS ** #0010 ** }
%DATA-CLIP { #f000 } ( copy/paste )
%BANK { #2000 }
%BANK-TEMP { #4000 }
%GET-COLOR { .settings/color LDZ STHk #02 / + DEI #01 STHr #01 AND - #04 * SFT #0f AND }
-%GET-POSITION { .settings/focus LDZ2 BANK -- DUP2 #0002 // WIDTH MOD2 SWP2 WIDTH #0002 ** // #0008 ** }
+%GET-POSITION { .settings/focus LDZ2 BANK -- DUP2 2// WIDTH MOD2 SWP2 WIDTH 2** // 8** }
%ADD-POSITIONS { ROT2 ++ ROT2 ROT2 ++ SWP2 }
%RELEASE-MOUSE { #00 .Mouse/state DEO }
%RESET-SELECTION { .selection/x1 LDZ2 .selection/x2 STZ2 }
@@ 138,8 140,8 @@
;on-frame .Screen/vector DEO2
( set defaults )
- HOR TOS #0008 ** .frame/width STZ2
- VER TOS #0008 ** #0040 ++ .frame/height STZ2
+ HOR TOS 8** .frame/width STZ2
+ VER TOS 8** #0040 ++ .frame/height STZ2
#01 .settings/depth STZ
#01 .settings/color STZ
#01 .settings/blending STZ
@@ 147,16 149,16 @@
#01 .settings/tool STZ
BANK .settings/focus STZ2
- HOR TOS #0008 ** .tileview/width STZ2
- VER TOS #0008 ** .tileview/height STZ2
+ HOR TOS 8** .tileview/width STZ2
+ VER TOS 8** .tileview/height STZ2
.Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 --
.Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 --
.frame/width LDZ2 .frame/height LDZ2
SIZE-TO-RECT ;frame SET-RECT
- .frame/x1 LDZ2 .frame/y1 LDZ2 #0030 ++ HOR TOS #0008 ** VER TOS #0008 ** SIZE-TO-RECT ;tileview SET-RECT
- .tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ++ HOR TOS #0008 ** #0008 SIZE-TO-RECT ;toolview SET-RECT
+ .frame/x1 LDZ2 .frame/y1 LDZ2 #0030 ++ HOR TOS 8** VER TOS 8** SIZE-TO-RECT ;tileview SET-RECT
+ .tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ++ HOR TOS 8** #0008 SIZE-TO-RECT ;toolview SET-RECT
.frame/x1 LDZ2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
.frame/x1 LDZ2 #0030 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
@@ 193,7 195,7 @@ BRK
@on-button ( -> )
- .Controller/key DEI .Controller/button DEI #0000 !! #01 JCN [ BRK ]
+ .Controller/key DEI .Controller/button DEI #0000 !! BRK?
.Controller/button DEI #01 AND ;on-control JCN2
@@ 207,7 209,7 @@ BRK
DUP #34 ! ,&no-4 JCN
( color ) #03 .settings/color STZ ;draw-toolview JSR2 &no-4
DUP #08 ! ,&no-delete JCN
- ( delete ) ;erase-selection JSR2 SET-STATE ;redraw JSR2 &no-delete
+ ( delete ) ;op-erase ;run-selection JSR2 SET-STATE ;redraw JSR2 &no-delete
DUP #20 ! ,&no-zoom JCN
( zoom ) .settings/zoom TOGGLE ;redraw JSR2 &no-zoom
DUP #71 ! ,&no-tool0 JCN
@@ 260,7 262,7 @@ BRK
;redraw JSR2 POP BRK
&no-paste
DUP [ LIT 'x ] ! ,&no-cut JCN
- ;copy-snarf JSR2 ;erase-selection JSR2 RESET-SELECTION
+ ;copy-snarf JSR2 ;op-erase ;run-selection JSR2 RESET-SELECTION
;redraw JSR2 POP BRK
&no-cut
DUP [ LIT 'r ] ! ,&no-name JCN
@@ 350,7 352,7 @@ BRK
.settings/tool LDZ #01 = ;&select JCN2
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
.Mouse/x DEI2 .tileview/x1 LDZ2 --
.Mouse/y DEI2 .tileview/y1 LDZ2 --
@@ 411,11 413,11 @@ BRK
&zoomed ( -> )
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
.Mouse/x DEI2 .tileview/x1 LDZ2 --
.Mouse/y DEI2 .tileview/y1 LDZ2 --
- #0008 // SWP2 #0008 // SWP2
+ 8// SWP2 8// SWP2
GET-POSITION ADD-POSITIONS
#00 .Mouse/state DEI #10 = ,&do-erase-zoom JCN
POP .settings/color LDZ
@@ 428,9 430,9 @@ BRK
@on-touch-toolview ( -> )
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
- .Mouse/x DEI2 .toolview/x1 LDZ2 -- #0008 // TOB
+ .Mouse/x DEI2 .toolview/x1 LDZ2 -- 8// TOB
DUP HOR SWP - #01 ! ,&no-save JCN
;save-file JSR2
@@ 486,29 488,21 @@ BRK
@on-touch-zoomview ( -> )
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
- .Mouse/y DEI2 .zoomview/y1 LDZ2 -- #0008 // TOB #04 ! ;&no-mod JCN2
- .Mouse/x DEI2 .zoomview/x1 LDZ2 -- #0008 // TOB
+ .Mouse/y DEI2 .zoomview/y1 LDZ2 -- 8// TOB #04 ! ;&no-mod JCN2
+ .Mouse/x DEI2 .zoomview/x1 LDZ2 -- 8// TOB
DUP #00 = .Mouse/state DEI #01 = #0101 !! ,&no-shiftup JCN
- .settings/focus LDZ2
- DUP2 ;op-shift-tile-up JSR2
- #0008 ++ ;op-shift-tile-up JSR2
+ ;op-shift-tile-up ;run-selection JSR2
SET-STATE &no-shiftup
DUP #00 = .Mouse/state DEI #10 = #0101 !! ,&no-shiftdown JCN
- .settings/focus LDZ2
- DUP2 ;op-shift-tile-down JSR2
- #0008 ++ ;op-shift-tile-down JSR2
+ ;op-shift-tile-down ;run-selection JSR2
SET-STATE &no-shiftdown
DUP #01 = .Mouse/state DEI #01 = #0101 !! ,&no-shiftright JCN
- .settings/focus LDZ2
- DUP2 ;op-shift-tile-right JSR2
- #0008 ++ ;op-shift-tile-right JSR2
+ ;op-shift-tile-right ;run-selection JSR2
SET-STATE &no-shiftright
DUP #01 = .Mouse/state DEI #10 = #0101 !! ,&no-shiftleft JCN
- .settings/focus LDZ2
- DUP2 ;op-shift-tile-left JSR2
- #0008 ++ ;op-shift-tile-left JSR2
+ ;op-shift-tile-left ;run-selection JSR2
SET-STATE &no-shiftleft
POP
RELEASE-MOUSE
@@ 537,10 531,10 @@ BRK
@on-touch-blendview ( -> )
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
- .Mouse/x DEI2 .blendview/x1 LDZ2 -- #0008 // TOB
- .Mouse/y DEI2 .blendview/y1 LDZ2 -- #0008 // TOB #04 * +
+ .Mouse/x DEI2 .blendview/x1 LDZ2 -- 8// TOB
+ .Mouse/y DEI2 .blendview/y1 LDZ2 -- 8// TOB #04 * +
.settings/blending STZ
;redraw JSR2
@@ 551,10 545,9 @@ BRK
@on-touch-colorview ( -> )
+ ( skip ) .Mouse/state DEI #00 ! BRK?
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
-
- .Mouse/y DEI2 .colorview/y1 LDZ2 -- #0008 // TOB
+ .Mouse/y DEI2 .colorview/y1 LDZ2 -- 8// TOB
DUP #00 ! ,&no-r JCN
.System/r STHk ,&set-color JSR
@@ 579,7 572,7 @@ BRK
STHr #02 MOD STHk
#0f SWP [ #40 * SFT ] AND
STHr #00 =
- .Mouse/x DEI2 .colorview/x1 LDZ2 -- #0002 // TOB
+ .Mouse/x DEI2 .colorview/x1 LDZ2 -- 2// TOB
( clamp to #0f ) DUP #10 = #01 * -
SWP [ #40 * SFT ] +
RTN
@@ 588,11 581,10 @@ BRK
@on-touch-preview ( -> )
-
- ( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
+ ( skip ) .Mouse/state DEI #00 ! BRK?
- ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- #0008 // TOB
- ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- #0008 // TOB
+ ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 -- 8// TOB
+ ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 -- 8// TOB
#40 SFT + #11 +
.settings/ratio STZ
@@ 605,54 597,104 @@ BRK
( operations )
-@op-clear ( addr* length* -- )
+@run-selection ( op* -- )
- OVR2 ++
- &loop
- OVR2 #00 ROT ROT STA
- INCR2 NEQ2k ,&loop JCN
- POP2 POP2
+ STH2
+ .selection/y2 LDZ #01 + .selection/y1 LDZ
+ &ver
+ .selection/x2 LDZ #01 + .selection/x1 LDZ
+ &hor
+ ( write char ) GET-ITER GET-ADDR STH2kr JSR2
+ #01 + GTHk ,&hor JCN
+ POP2
+ #01 + GTHk ,&ver JCN
+ POP2
+ POP2r
RTN
-@op-shift-tile-up ( addr* -- )
+@op-erase ( addr* -- )
STH2
- STH2kr LDA
- STH2kr #0001 ++ LDA STH2kr STA
- STH2kr #0002 ++ LDA STH2kr #0001 ++ STA
- STH2kr #0003 ++ LDA STH2kr #0002 ++ STA
- STH2kr #0004 ++ LDA STH2kr #0003 ++ STA
- STH2kr #0005 ++ LDA STH2kr #0004 ++ STA
- STH2kr #0006 ++ LDA STH2kr #0005 ++ STA
- STH2kr #0007 ++ LDA STH2kr #0006 ++ STA
- STH2r #0007 ++ STA
+ #10 #00
+ &loop
+ ( get )
+ DUP TOS STH2kr ++ #00 ROT ROT STA
+ #01 + GTHk ,&loop JCN
+ POP2
+ POP2r
RTN
-@op-shift-tile-down ( addr* -- )
+@clamp-selection ( -- )
- STH2
- STH2kr #0007 ++ LDA
- STH2kr #0006 ++ LDA STH2kr #0007 ++ STA
- STH2kr #0005 ++ LDA STH2kr #0006 ++ STA
- STH2kr #0004 ++ LDA STH2kr #0005 ++ STA
- STH2kr #0003 ++ LDA STH2kr #0004 ++ STA
- STH2kr #0002 ++ LDA STH2kr #0003 ++ STA
- STH2kr #0001 ++ LDA STH2kr #0002 ++ STA
- STH2kr LDA STH2kr #0001 ++ STA
- STH2r STA
+ .selection/x1 LDZ HOR #01 - STHk < ,&ok-limitx1 JCN
+ STHkr .selection/x1 STZ &ok-limitx1 POPr
+ .selection/y1 LDZ VER #01 - STHk < ,&ok-limity1 JCN
+ STHkr .selection/y1 STZ &ok-limity1 POPr
+ .selection/x2 LDZ HOR #01 - STHk < ,&ok-limitx2 JCN
+ STHkr .selection/x2 STZ &ok-limitx2 POPr
+ .selection/y2 LDZ VER #01 - STHk < ,&ok-limity2 JCN
+ STHkr .selection/y2 STZ &ok-limity2 POPr
+ .selection/x2 LDZ .selection/x1 LDZ STHk > ,&ok-flipx JCN
+ STHkr .selection/x2 STZ &ok-flipx POPr
+ .selection/y2 LDZ .selection/y1 LDZ STHk > ,&ok-flipy JCN
+ STHkr .selection/y2 STZ &ok-flipy POPr
+
+RTN
+
+@op-shift-tile-up ( addr* -- )
+
+ DUP2
+ DUP2 #0007 ++ SWP2 LDAk STH
+ &ch1
+ DUP2 #0001 ++ LDA STH
+ DUP2 STHr ROT ROT STA
+ #0001 ++ GTH2k ,&ch1 JCN
+ POP2
+ ( cap ) STHr ROT ROT STA
+ #0008 ++ DUP2 #0007 ++ SWP2 LDAk STH
+ &ch2
+ DUP2 #0001 ++ LDA STH
+ DUP2 STHr ROT ROT STA
+ #0001 ++ GTH2k ,&ch2 JCN
+ POP2
+ ( cap ) STHr ROT ROT STA
+
+RTN
+
+@op-shift-tile-down ( addr* -- )
+
+ DUP2
+ DUP2 #0007 ++ LDAk STH
+ &ch1
+ DUP2 #0001 -- LDA STH
+ DUP2 STHr ROT ROT STA
+ #0001 -- LTH2k ,&ch1 JCN
+ POP2
+ ( cap ) STHr ROT ROT STA
+ #0008 ++ DUP2 #0007 ++ LDAk STH
+ &ch2
+ DUP2 #0001 -- LDA STH
+ DUP2 STHr ROT ROT STA
+ #0001 -- LTH2k ,&ch2 JCN
+ POP2
+ ( cap ) STHr ROT ROT STA
RTN
@op-shift-tile-left ( addr* -- )
STH2
- #00 #08
+ #08 #00
&loop
- OVR TOS STH2kr ++ DUP2
+ ( ch1 )
+ DUP TOS STH2kr ++ DUP2
LDA [ ROL ] ROT ROT STA
- INCR LTHk ,&loop JCN
+ ( ch2 )
+ DUP TOS STH2kr #0008 ++ ++ DUP2
+ LDA [ ROL ] ROT ROT STA
+ #01 + GTHk ,&loop JCN
POP2
POP2r
@@ 661,16 703,30 @@ RTN
@op-shift-tile-right ( addr* -- )
STH2
- #00 #08
+ #08 #00
&loop
- OVR TOS STH2kr ++ DUP2
+ ( ch1 )
+ DUP TOS STH2kr ++ DUP2
LDA [ ROR ] ROT ROT STA
- INCR LTHk ,&loop JCN
+ ( ch2 )
+ DUP TOS STH2kr #0008 ++ ++ DUP2
+ LDA [ ROR ] ROT ROT STA
+ #01 + GTHk ,&loop JCN
POP2
POP2r
RTN
+@clear ( addr* length* -- )
+
+ OVR2 ++ SWP2
+ &loop
+ DUP2 #00 ROT ROT STA
+ #0001 ++ NEQ2k ,&loop JCN
+ POP2 POP2
+
+RTN
+
@redraw ( -- )
;draw-toolview JSR2
@@ 787,8 843,8 @@ RTN
( get row )
DUP2 #0008 MOD2
( get tile )
- SWP2 #0008 // WIDTH #0002 ** ** ++
- SWP2 STEP8 #0002 ** ++
+ SWP2 8// WIDTH 2** ** ++
+ SWP2 STEP8 2** ++
BANK ++
RTN
@@ 825,23 881,38 @@ RTN
@get-tile-addr ( x* y* -- addr* )
STEP8 WIDTH ** #0004 // SWP2
- STEP8 #0002 ** ++
+ STEP8 2** ++
BANK ++
RTN
+@copy-tile ( src* dst* -- )
+
+ STH2 STH2
+ #10 #00
+ &loop
+ ( get )
+ DUP TOS DUP2 STH2kr ++ LDA
+ ( put )
+ ROT ROT SWP2r STH2kr SWP2r ++ STA
+ #01 + GTHk ,&loop JCN
+ POP2
+ POP2r POP2r
+
+RTN
+
@draw-toolview ( -- )
.toolview/y1 LDZ2 .Screen/y DEO2
( colors )
.toolview/x1 LDZ2 STH2k .Screen/x DEO2
- ;circle-icns [ .settings/color LDZ #01 = TOS #0008 ** ] ++ .Screen/addr DEO2
+ ;circle-icns [ .settings/color LDZ #01 = TOS 8** ] ++ .Screen/addr DEO2
#01 .Screen/sprite DEO
STH2kr #0008 ++ .Screen/x DEO2
- ;circle-icns [ .settings/color LDZ #02 = TOS #0008 ** ] ++ .Screen/addr DEO2
+ ;circle-icns [ .settings/color LDZ #02 = TOS 8** ] ++ .Screen/addr DEO2
#02 .Screen/sprite DEO
STH2kr #0010 ++ .Screen/x DEO2
- ;circle-icns [ .settings/color LDZ #03 = TOS #0008 ** ] ++ .Screen/addr DEO2
+ ;circle-icns [ .settings/color LDZ #03 = TOS 8** ] ++ .Screen/addr DEO2
#03 .Screen/sprite DEO
( tools )
STH2kr #0020 ++ .Screen/x DEO2
@@ 851,7 922,7 @@ RTN
;tool-selector .Screen/addr DEO2
#01 .settings/tool LDZ #01 = + .Screen/sprite DEO
STH2r #0030 ++ .Screen/x DEO2
- ;zoom-icns [ .settings/zoom LDZ TOS #0008 ** ++ ] .Screen/addr DEO2
+ ;zoom-icns [ .settings/zoom LDZ TOS 8** ++ ] .Screen/addr DEO2
#01 .settings/zoom LDZ + .Screen/sprite DEO
( file i/o )
;draw-state JSR2
@@ 878,8 949,8 @@ RTN
.settings/focus LDZ2 .Screen/addr DEO2
#10 #00
&loop
- DUP #04 MOD #00 SWP #0008 ** .blendview/x1 LDZ2 ++ .Screen/x DEO2
- DUP #04 / #00 SWP #0008 ** .blendview/y1 LDZ2 ++ .Screen/y DEO2
+ DUP #04 MOD #00 SWP 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
+ DUP #04 / #00 SWP 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
#00 .Screen/sprite DEO
DUP #00 + .settings/depth LDZ #80 * + .Screen/sprite DEO
#01 + GTHk ,&loop JCN
@@ 1049,7 1120,7 @@ RTN
.toolview/y1 LDZ2 .Screen/y DEO2
;path/name
&loop
- DUP2 LDA DUP #00 ! #20 * - TOS #0008 ** ;font ++ .Screen/addr DEO2
+ LDAk DUP #00 ! #20 * - TOS 8** ;font ++ .Screen/addr DEO2
STHkr .Screen/sprite DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
#0001 ++
@@ 1104,78 1175,17 @@ RTN
RTN
-( etc )
-
-@copy-tile ( src* dst* -- )
-
- STH2 STH2
- #10 #00
- &loop
- ( get )
- DUP TOS DUP2 STH2kr ++ LDA
- ( put )
- ROT ROT SWP2r STH2kr SWP2r ++ STA
- #01 + GTHk ,&loop JCN
- POP2
- POP2r POP2r
-
-RTN
-
-@erase-tile ( addr* -- )
-
- STH2
- #10 #00
- &loop
- ( get )
- DUP TOS STH2kr ++ #00 ROT ROT STA
- #01 + GTHk ,&loop JCN
- POP2
- POP2r
-
-RTN
-
-@erase-selection ( -- )
-
- .selection/y2 LDZ #01 + .selection/y1 LDZ
- &ver
- .selection/x2 LDZ #01 + .selection/x1 LDZ
- &hor
- ( write char ) GET-ITER GET-ADDR ;erase-tile JSR2
- #01 + GTHk ,&hor JCN
- POP2
- #01 + GTHk ,&ver JCN
- POP2
-
-RTN
-
-@clamp-selection ( -- )
-
- .selection/x1 LDZ HOR #01 - STHk < ,&ok-limitx1 JCN
- STHkr .selection/x1 STZ &ok-limitx1 POPr
- .selection/y1 LDZ VER #01 - STHk < ,&ok-limity1 JCN
- STHkr .selection/y1 STZ &ok-limity1 POPr
- .selection/x2 LDZ HOR #01 - STHk < ,&ok-limitx2 JCN
- STHkr .selection/x2 STZ &ok-limitx2 POPr
- .selection/y2 LDZ VER #01 - STHk < ,&ok-limity2 JCN
- STHkr .selection/y2 STZ &ok-limity2 POPr
- .selection/x2 LDZ .selection/x1 LDZ STHk > ,&ok-flipx JCN
- STHkr .selection/x2 STZ &ok-flipx POPr
- .selection/y2 LDZ .selection/y1 LDZ STHk > ,&ok-flipy JCN
- STHkr .selection/y2 STZ &ok-flipy POPr
-
-RTN
-
( file )
@new-file ( default* -- )
- BANK LENGTH ;op-clear JSR2
+ BANK LENGTH ;clear JSR2
STH2
- #00 #0c
+ #0c #00
&loop
- OVR DUP TOS STH2kr ++ LDA
+ DUP DUP TOS STH2kr ++ LDA
SWP .path/name + STZ
- INCR LTHk ,&loop JCN
+ #01 + GTHk ,&loop JCN
( end ) #00 SWP .path/name + STZ
.path/length STZ
POP2r
@@ 1187,7 1197,7 @@ RTN
( icn mode ) .Controller/button DEI #02 AND ,load-file-icn JCN
- BANK LENGTH ;op-clear JSR2
+ BANK LENGTH ;clear JSR2
;path/name .File/name DEO2
#2000 .File/length DEO2
BANK .File/load DEO2
@@ 1197,17 1207,17 @@ RTN
@load-file-icn ( -- )
- BANK LENGTH ;op-clear JSR2
+ BANK LENGTH ;clear JSR2
;path/name .File/name DEO2
#2000 .File/length DEO2
BANK-TEMP .File/load DEO2
RESET-STATE
- #0000 #1000
+ #1000 #0000
&loop
- OVR2 BANK-TEMP ++ LDA STH
- OVR2 [ DUP2 #0008 // #0008 ** ++ ] BANK ++ STHr ROT ROT STA
- INCR2 LTH2k ,&loop JCN
+ DUP2 BANK-TEMP ++ LDA STH
+ DUP2 [ DUP2 8// 8** ++ ] BANK ++ STHr ROT ROT STA
+ #0001 ++ GTH2k ,&loop JCN
POP2 POP2
RTN
@@ 1291,7 1301,6 @@ RTN
&linebreak
DUP2 [ DATA-CLIP ++ ] [ STH2kr GET-ADDR ] ;copy-tile JSR2
( move-x ) SWPr LITr 01 ADDr SWPr
- &resume
#0010 ++ GTH2k ,&loop JCN
POP2 POP2
( destroy x,y ) POP2r
@@ 1319,22 1328,24 @@ RTN
@line-rect ( x1* y1* x2* y2* color -- )
- ( load ) .color STZ DUP2 STH2 .rect/y2 STZ2 .rect/x2 STZ2 DUP2 STH2 .rect/y1 STZ2 .rect/x1 STZ2
- STH2r STH2r
+ ( load ) .color STZ
+ STH2k .rect/y2 STZ2 .rect/x2 STZ2
+ STH2k .rect/y1 STZ2 .rect/x1 STZ2
+ STH2r STH2r SWP2
&ver
- ( save ) OVR2 .Screen/y DEO2
+ ( save ) DUP2 .Screen/y DEO2
( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/pixel DEO
( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/pixel DEO
- ( incr ) INCR2
- OVR2 OVR2 LTS2 ,&ver JCN
+ ( incr ) #0001 ++
+ OVR2 OVR2 GTS2 ,&ver JCN
POP2 POP2
- .rect/x1 LDZ2 .rect/x2 LDZ2
+ .rect/x1 LDZ2 .rect/x2 LDZ2 SWP2
&hor
- ( save ) OVR2 .Screen/x DEO2
+ ( save ) DUP2 .Screen/x DEO2
( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/pixel DEO
( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/pixel DEO
- ( incr ) INCR2
- OVR2 OVR2 #0001 ++ LTS2 ,&hor JCN
+ ( incr ) #0001 ++
+ OVR2 OVR2 GTS2 ,&hor JCN
POP2 POP2
RTN