M src/apps.tal => src/apps.tal +10 -16
@@ 155,10 155,10 @@ JMP2
01 "File $1
01 "s =save-theme "Save $1
04 "Select $1
- 00 "1 =select-color1 "Background $1
- 00 "2 =select-color2 "Color1 $1
- 00 "3 =select-color3 "Color2 $1
- 00 "4 =select-color4 "Color3 $1
+ 00 "1 =select-color/0 "Background $1
+ 00 "2 =select-color/1 "Color1 $1
+ 00 "3 =select-color/2 "Color2 $1
+ 00 "4 =select-color/3 "Color3 $1
$1
@app-color
@@ 188,7 188,7 @@ JMP2
OVR .System/b STHk ,&set-color JSR STHr ,&set-nibble JSR
&no-b
DUP #09 NEQ ,&no-swatch JCN
- OVR #02 SFT .cursor/color STZ
+ OVR #02 SFT select-color
[ LIT2 &win $2 ] ;draw-win JSR2
,&release JMP
&no-swatch
@@ 265,10 265,10 @@ JMP2r
01 "c =app-tile/copy-patt "Copy $1
01 "v =app-tile/paste-patt "Paste $1
04 "Color $1
- 00 "1 =select-color1 "Background $1
- 00 "2 =select-color2 "Color1 $1
- 00 "3 =select-color3 "Color2 $1
- 00 "4 =select-color4 "Color3 $1
+ 00 "1 =select-color/0 "Background $1
+ 00 "2 =select-color/1 "Color1 $1
+ 00 "3 =select-color/2 "Color2 $1
+ 00 "4 =select-color/3 "Color3 $1
04 "Goto $1
00 00 =app-tile/goto-pattern "Pattern $1
00 00 =app-tile/goto-font "Font $1
@@ 329,7 329,7 @@ JMP2r
;paint-patt JSR2 BRK
&no-paint
DUP #09 NEQ ,&no-swatch JCN
- OVR #01 SFT .cursor/color STZ
+ OVR #01 SFT select-color
#ffff ;paint-patt/last STA2
;get-active-win JSR2 ;draw-win JSR2
,&release JMP
@@ 1166,12 1166,6 @@ BRK
JMP2r
-( used in tile/patt apps )
-@select-color1 ( -- ) #00 .cursor/color STZ JMP2r
-@select-color2 ( -- ) #01 .cursor/color STZ JMP2r
-@select-color3 ( -- ) #02 .cursor/color STZ JMP2r
-@select-color4 ( -- ) #03 .cursor/color STZ JMP2r
-
@size-apps-end
~src/manifest.tal
M src/assets.tal => src/assets.tal +6 -0
@@ 324,6 324,12 @@ ffff 7eff e7ff 00ff ffff ffff ffff ffff a0a0 a0a0 a0a0 60e0 f0f0 f0f0 f0f0 f0f0
0a mem-ptr*
0c mem-len* )
+@metadata
+ &header $1 &start $3 &deo $2 &version $1
+ &body $100
+ &fields $100
+ &icon $90
+
@buf
&src $40 ( used by make-src )
&dst $40 ( used by make-dst )
M src/desktop.tal => src/desktop.tal +9 -0
@@ 489,6 489,15 @@ JMP2r
JMP2r
&found POP2r JMP2r
+(
+@|color-picking )
+
+@select-color ( id -- ) .cursor/color STZ !draw-desktop
+ &0 #00 !select-color
+ &1 #01 !select-color
+ &2 #02 !select-color
+ &3 #03 !select-color
+
@find-name ( name* -- id|ff )
,&t STR2
M src/potato.tal => src/potato.tal +22 -40
@@ 13,8 13,7 @@
|0000
@cursor &x $2 &y $2 &color $1
-@sel
- &win $1
+@sel &win $1
@drag $1
@length $1
@bounds $2
@@ 26,9 25,7 @@
( TODOs:
> Add window close icons in bar
> Write welcome message
- > Cannot delete files with long names
- > Cut long filenames in window titles
- )
+ > Cut long filenames in window titles )
|0100 ( -> ) @size-system-start
@@ 59,7 56,7 @@ BRK
( name ) "Potato 0a
( details ) "An 20 "Operating 20 "System 0a
( author ) "By 20 "Hundred 20 "Rabbits 0a
- ( date ) "Jan 20 "8, 20 "2023 00
+ ( date ) "Jan 20 "19, 20 "2023 00
02
( icon ) 83 =appicon
( mask ) 41 1705
@@ 103,12 100,12 @@ JMP2r
DUP2 ,&offset STR2
OVR2 INC2 STH2
#1000
- &loop
+ &l
#00 OVR #40 SFT2 ;windows #000a ADD2 ADD2 LDA2k STH2kr LTH2 ?&continue
DUP2 LDA2k [ LIT2 &offset $2 ] SUB2 SWP2 STA2
&continue
POP2
- INC GTHk ?&loop
+ INC GTHk ?&l
POP2
POP2r
( update bound )
@@ 187,9 184,9 @@ JMP2r
validate-dir
;dir ;dict/home-ext scmp ?&skip
;dir DUP2 scap
- &loop
+ &l
LDAk LIT "/ EQU ?&found
- #0001 SUB2 LTH2k ?&loop
+ #0001 SUB2 LTH2k ?&l
&found
NIP2
#00 ROT ROT STA
@@ 202,10 199,10 @@ JMP2r
@validate-dir ( -- )
.length LDZ #00 EQUk ?&skip
- &loop
+ &l
( win ) DUP get-win
( win/name ) #0008 ADD2 LDA2 ;no-name NEQ2 ?&busy
- INC GTHk ?&loop
+ INC GTHk ?&l
&skip
POP2
@@ 525,9 522,9 @@ JMP2r
( draw windows )
.length LDZ #00 EQUk ?&no-win
- &loop
+ &l
DUP get-win draw-win
- INC GTHk ?&loop
+ INC GTHk ?&l
&no-win
POP2
@@ 648,11 645,11 @@ JMP2r
.Screen/x DEI2 ,&x STR2
;vert-icn .Screen/addr DEO2
#8000
- &loop
+ &l
#00 OVRk ADD2 [ LIT2 &x $2 ] ADD2 .Screen/x DEO2
#00 OVR #90 SFT2 mem-type #00 SWP #40 SFT2 ;prog-chrs ADD2 .Screen/addr DEO2
#81 .Screen/sprite DEO
- INC GTHk ?&loop
+ INC GTHk ?&l
POP2
JMP2r
@@ 903,11 900,11 @@ JMP2r
#01 .Screen/auto DEO
LITr 00
ADD2k NIP2 SWP2
- &loop
+ &l
LDAk #00 SWP #02 SFT2 [ LIT2 &y $2 ] ADD2 .Screen/y DEO2
#0a .Screen/pixel DEO
INCr STHkr #00 EQU ?&end
- [ LIT2 &zoom $2 ] ADD2 GTH2k ?&loop
+ [ LIT2 &zoom $2 ] ADD2 GTH2k ?&l
&end
POP2 POP2
POPr
@@ 994,11 991,11 @@ JMP2r
#00 .Screen/auto DEO
STH
#1000
- &loop
+ &l
#00 OVR STHkr GTH #30 SFT ;slider-icns ADD2 .Screen/addr DEO2
#0a .Screen/sprite DEO
.Screen/x DEI2k #0004 ADD2 ROT DEO2
- INC GTHk ?&loop
+ INC GTHk ?&l
POP2
POPr
@@ 1146,9 1143,9 @@ JMP2r
LDAk #00 EQU ?&skip
#01 .Screen/auto DEO
- &while
+ &w
LDAk draw-chr
- INC2 LDAk ?&while
+ INC2 LDAk ?&w
&skip
INC2
@@ 1303,7 1300,7 @@ JMP2r
@pstr ( str* -- ) &w LDAk #18 DEO INC2 LDAk ?&w POP2 JMP2r
@msfl ( a* b* len* -- ) STH2 SWP2 EQU2k ?&e &l DUP2k STH2kr ADD2 LDA ROT ROT STA INC2 GTH2k ?&l POP2 POP2 &e POP2r JMP2r
@msfr ( a* b* len* -- ) STH2 EQU2k ?&e &l DUP2 LDAk ROT ROT STH2kr ADD2 STA #0001 SUB2 LTH2k ?&l POP2 POP2 &e POP2r JMP2r
-@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &loop LDAk STH2kr STA INC2r INC2 GTH2k ?&loop POP2 POP2 POP2r JMP2r
+@mcpy ( src* dst* len* -- ) SWP2 STH2 OVR2 ADD2 SWP2 &l LDAk STH2kr STA INC2r INC2 GTH2k ?&l POP2 POP2 POP2r JMP2r
@fcpy ( src* dst* -- )
@@ 1453,17 1450,8 @@ JMP2
&erase POP spop POP JMP2r
&invalid POP2 POP2 JMP2r
-@has-ext ( str* ext* -- bool )
-
- SWP2 get-ext ;scmp ( .. )
-
-JMP2
-
-@get-ext ( str* -- ext* )
-
- scap #0004 SUB2
-
-JMP2r
+@has-ext ( str* ext* -- b ) SWP2 get-ext !scmp
+@get-ext ( str* -- ext* ) scap #0004 SUB2 JMP2r
(
@|metadata )
@@ 1501,12 1489,6 @@ JMP2r
JMP2r
-@metadata
- &header $1 &start $3 &deo $2 &version $1
- &body $100
- &fields $100
- &icon $90
-
@save-theme ( -- )
;dict/theme-ext make-src .File/name DEO2