@@ 410,6 410,18 @@ JMP2
JMP2
+@clamp-selection ( -- )
+
+ .selection/x1 LDZ #0f STHk LTH ,&ok-limitx1 JCN STHkr .selection/x1 STZ &ok-limitx1 POPr
+ .selection/y1 LDZ #0f STHk LTH ,&ok-limity1 JCN STHkr .selection/y1 STZ &ok-limity1 POPr
+ .selection/x2 LDZ #0f STHk LTH ,&ok-limitx2 JCN STHkr .selection/x2 STZ &ok-limitx2 POPr
+ .selection/y2 LDZ #0f STHk LTH ,&ok-limity2 JCN STHkr .selection/y2 STZ &ok-limity2 POPr
+ ( invert )
+ .selection/x2 LDZ .selection/x1 LDZ STHk GTH ,&ok-flipx JCN STHkr .selection/x2 STZ &ok-flipx POPr
+ .selection/y2 LDZ .selection/y1 LDZ STHk GTH ,&ok-flipy JCN STHkr .selection/y2 STZ &ok-flipy POPr
+
+JMP2r
+
@set-selection-zoom ( x y -- )
#7f AND .selection/zy STZ
@@ 504,6 516,9 @@ JMP2
JMP2
+(
+@|map )
+
@run ( op* -- )
STH2
@@ 511,7 526,7 @@ JMP2
&ver
.selection/x2 LDZ INC .selection/x1 LDZ
&hor
- ( write char ) OVR2 NIP OVR SWP ;get-tile-addr JSR2 STH2kr JSR2
+ OVR2 NIP OVR SWP ;get-tile-addr JSR2 STH2kr JSR2
INC GTHk ,&hor JCN
POP2
INC GTHk ,&ver JCN
@@ 598,18 613,22 @@ JMP2r
JMP2r
-@clamp-selection ( -- )
+@op-read ( addr* -- )
- .selection/x1 LDZ #0f STHk LTH ,&ok-limitx1 JCN STHkr .selection/x1 STZ &ok-limitx1 POPr
- .selection/y1 LDZ #0f STHk LTH ,&ok-limity1 JCN STHkr .selection/y1 STZ &ok-limity1 POPr
- .selection/x2 LDZ #0f STHk LTH ,&ok-limitx2 JCN STHkr .selection/x2 STZ &ok-limitx2 POPr
- .selection/y2 LDZ #0f STHk LTH ,&ok-limity2 JCN STHkr .selection/y2 STZ &ok-limity2 POPr
- ( invert )
- .selection/x2 LDZ .selection/x1 LDZ STHk GTH ,&ok-flipx JCN STHkr .selection/x2 STZ &ok-flipx POPr
- .selection/y2 LDZ .selection/y1 LDZ STHk GTH ,&ok-flipy JCN STHkr .selection/y2 STZ &ok-flipy POPr
+ .File/read DEO2
JMP2r
+@op-write ( addr* -- )
+
+ [ LIT2 &length $2 ]
+ DUP2 .File/length DEO2
+ ;&buf SWP2 ;mcpy JSR2
+ ;&buf .File/write DEO2
+
+JMP2r
+ &buf $10
+
(
@|drawing )
@@ 1253,59 1272,47 @@ JMP2r
@edit-copy-icn ( -- )
- #0008 ;edit-copy/mode STA2
- ,edit-copy ( .. )
+ ;snarf-txt .File/name DEO2
+ #0008 ;op-write/length STA2
+ ;op-write ;run JSR2
+ ;redraw ( .. )
-JMP
+JMP2
@edit-copy-chr ( -- )
- #0010 ;edit-copy/mode STA2
-
-@edit-copy ( -- )
-
;snarf-txt .File/name DEO2
- ,&mode LDR2 .File/length DEO2
- .selection/y2 LDZ INC .selection/y1 LDZ
- &ver
- .selection/x2 LDZ INC .selection/x1 LDZ
- &hor
- OVR2 NIP OVR SWP ;get-tile-addr JSR2 ;&buf [ LIT2 &mode $2 ] ;mcpy JSR2
- ;&buf .File/write DEO2
- INC GTHk ,&hor JCN
- POP2
- INC GTHk ,&ver JCN
- POP2
+ #0010 ;op-write/length STA2
+ ;op-write ;run JSR2
;redraw ( .. )
JMP2
- &buf $10
@edit-paste ( -- )
;snarf-txt .File/name DEO2
#0010 .File/length DEO2
- .selection/y2 LDZ INC .selection/y1 LDZ
- &ver
- .selection/x2 LDZ INC .selection/x1 LDZ
- &hor
- OVR2 NIP OVR SWP ;get-tile-addr JSR2 .File/read DEO2
- INC GTHk ,&hor JCN
- POP2
- INC GTHk ,&ver JCN
- POP2
+ ;op-read ;run JSR2
;redraw ( .. )
JMP2
@edit-cut ( -- )
- ;edit-copy JSR2
+ ;edit-copy-chr JSR2
;op-erase ;run JSR2
;redraw ( .. )
JMP2
+@edit-erase ( -- )
+
+ ;op-erase ;run JSR2
+ #01 .state/changed STZ ;draw-state JSR2
+ ;redraw ( .. )
+
+JMP2
+
( select )
@tool-brush ( -- ) #00 ;set-tool JMP2
@@ 1335,16 1342,6 @@ JMP2
@pick-color3 ( -- ) #02 ;set-color JMP2
@pick-color4 ( -- ) #03 ;set-color JMP2
-( option )
-
-@edit-erase ( -- )
-
- ;op-erase ;run JSR2
- #01 .state/changed STZ ;draw-state JSR2
- ;redraw ( .. )
-
-JMP2
-
( generics )
@set-size ( x1 y1 w* h* rect* -- )