(m291) Progress

This commit is contained in:
Devine Lu Linvega 2024-08-25 16:40:01 -07:00
parent b2b1b9259e
commit 26c7323d92
1 changed files with 127 additions and 91 deletions

View File

@ -1,24 +1,23 @@
|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1 |00
@System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|80 @Controller &vector $2 &button $1 &key $1 |80 @Controller &vector $2 &button $1 &key $1
|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 &pad $4 &scrolly &scrolly-hb $1 &scrolly-lb $1 |90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 &pad $4 &scrolly &scrolly-hb $1 &scrolly-lb $1
|a0 @File &vector $2 &success $1 &success-lb $1 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |a0 @File &vector $2 &success $1 &success-lb $1 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
|0000 @misc $1
|0000 @selection $1 &mod $1
@misc $1 @path $2 &null $80
@selection $1 &mod $1
@path $2 &null $80
@lines &folders $1 &roms $1 &misc $1
|0100 @lines &folders $1 &roms $1 &misc $1
|0100 @on-reset ( -> )
@on-reset ( -> )
;meta #06 DEO2 ;meta #06 DEO2
#d20f .System/r DEO2 #e1ff .System/r DEO2
#d24f .System/g DEO2 #e1ff .System/g DEO2
#d204 .System/b DEO2 #e1f4 .System/b DEO2
<load-theme> <load-theme>
#0100 .Screen/width DEO2 #0100 .Screen/width DEO2
;dict/home-path set-path <refresh-dir> ;dict/home-path set-path <refresh-dir>
@ -55,8 +54,9 @@
( | below ) ( | below )
DUP count-lines LTH ?{ POP #ff JMP2r } DUP count-lines LTH ?{ POP #ff JMP2r }
JMP2r JMP2r
&outside ( y* -- id ) &outside ( y* -- id )
POP2 #ff JMP2r POP2 #ff JMP2r
@on-control ( -> ) @on-control ( -> )
( | mod ) ( | mod )
@ -88,8 +88,8 @@
( | parse ) ( | parse )
;mem/dir ;mem/dir
&w ( -- ) &w ( -- )
DUP2 <parse-line> DUP2 <parse-line>
lcap/ INC2 LDAk ?&w lcap/ INC2 LDAk ?&w
POP2 POP2
( >> ) ( >> )
@ -97,8 +97,7 @@
#00 count-lines #00 count-lines
( empty ) DUP #00 EQU ADD #40 SFT2 ( empty ) DUP #00 EQU ADD #40 SFT2
( no-folder spacer ) has-spacer #00 EQU ?{ #0008 ADD2 } ( no-folder spacer ) has-spacer #00 EQU ?{ #0008 ADD2 }
( padding ) #0016 ADD2 .Screen/height DEO2 ( padding ) #0020 ADD2 .Screen/height DEO2 !<redraw>
!<redraw>
@<parse-line> ( line* -- ) @<parse-line> ( line* -- )
#0005 ADD2 LDAk [ LIT ". ] EQU ?&hidden #0005 ADD2 LDAk [ LIT ". ] EQU ?&hidden
@ -107,16 +106,19 @@
;mem/misc [ LIT2 00 -lines/misc ] LDZ #40 SFT2 ADD2 <lcpy> ;mem/misc [ LIT2 00 -lines/misc ] LDZ #40 SFT2 ADD2 <lcpy>
.lines/misc LDZ INC .lines/misc STZ .lines/misc LDZ INC .lines/misc STZ
JMP2r JMP2r
&folder ( line* -- ) &folder ( line* -- )
;mem/folders [ LIT2 00 -lines/folders ] LDZ #40 SFT2 ADD2 <lcpy> ;mem/folders [ LIT2 00 -lines/folders ] LDZ #40 SFT2 ADD2 <lcpy>
.lines/folders LDZ INC .lines/folders STZ .lines/folders LDZ INC .lines/folders STZ
JMP2r JMP2r
&rom ( line* -- ) &rom ( line* -- )
;mem/roms [ LIT2 00 -lines/roms ] LDZ #40 SFT2 ADD2 <lcpy> ;mem/roms [ LIT2 00 -lines/roms ] LDZ #40 SFT2 ADD2 <lcpy>
.lines/roms LDZ INC .lines/roms STZ .lines/roms LDZ INC .lines/roms STZ
JMP2r JMP2r
&hidden ( line* -- ) &hidden ( line* -- )
POP2 JMP2r POP2 JMP2r
@<move> ( mod -- ) @<move> ( mod -- )
.selection LDZ ADD INCk ?{ .selection LDZ ADD INCk ?{
@ -127,34 +129,36 @@
@<select> ( id -- ) @<select> ( id -- )
[ LIT &last ff ] NEQk ?{ POP2 JMP2r } [ LIT &last ff ] NEQk ?{ POP2 JMP2r }
POP DUP ,&last STR POP DUP ,&last STR
.selection STZ .selection STZ !<redraw>
!<redraw>
@<pick> ( alt id -- ) @<pick> ( alt id -- )
DUP .lines/folders LDZ LTH ?&folder DUP .lines/folders LDZ LTH ?&folder
.lines/folders LDZ SUB DUP .lines/roms LDZ LTH ?&roms .lines/folders LDZ SUB DUP .lines/roms LDZ LTH ?&roms
.lines/roms LDZ SUB DUP .lines/misc LDZ LTH ?&misc .lines/roms LDZ SUB DUP .lines/misc LDZ LTH ?&misc
POP JMP2r POP JMP2r
&roms ( id -- ) &roms ( id -- )
#00 SWP #40 SFT2 ;mem/roms ADD2 !<send-path> #00 SWP #40 SFT2 ;mem/roms ADD2 !<send-path>
&misc ( id -- ) &misc ( id -- )
#00 SWP #40 SFT2 ;mem/misc ADD2 !<send-file> #00 SWP #40 SFT2 ;mem/misc ADD2 !<send-file>
&folder ( id -- ) &folder ( id -- )
#00 SWP #40 SFT2 ;mem/folders ADD2 !<enter> #00 SWP #40 SFT2 ;mem/folders ADD2 !<enter>
@<send-path> ( file* -- ) @<send-path> ( file* -- )
.selection/mod LDZ ?&special .selection/mod LDZ ?&special
[ LIT2 ff -Console/type ] DEO [ LIT2 ff -Console/type ] DEO
;path <pstr> ;path <pstr>
<pstr>/ <pstr>/
#0a18 DEO #0a18 DEO !<exit>
!<exit>
&special ( file* -- ) &special ( file* -- )
[ LIT2 01 -Console/type ] DEO [ LIT2 01 -Console/type ] DEO
;path <pstr> ;path <pstr>
<pstr>/ <pstr>/
#0a18 DEO #0a18 DEO
JMP2r JMP2r
@<send-file> ( file* -- ) @<send-file> ( file* -- )
[ LIT2 01 -Console/type ] DEO [ LIT2 01 -Console/type ] DEO
@ -164,24 +168,26 @@
STH2r .File/name DEO2 STH2r .File/name DEO2
#0001 .File/length DEO2 #0001 .File/length DEO2
&s ( -- ) &s ( -- )
;&b .File/read DEO2 ;&b .File/read DEO2
[ LIT2 &b $1 18 ] DEO [ LIT2 &b $1 18 ] DEO
.File/success-lb DEI ?&s .File/success-lb DEI ?&s
JMP2r JMP2r
&special ( file* -- ) &special ( file* -- )
;path <pstr> ;path <pstr>
<pstr>/ <pstr>/
#0a18 DEO #0a18 DEO
JMP2r JMP2r
@<enter> ( folder* -- ) @<enter> ( folder* -- )
.selection/mod LDZ ?&special .selection/mod LDZ ?&special
push-path !<refresh-dir> push-path !<refresh-dir>
&special ( folder* -- ) &special ( folder* -- )
;path <pstr> ;path <pstr>
<pstr>/ <pstr>/
#0a18 DEO #0a18 DEO
JMP2r JMP2r
@<leave> ( -- ) @<leave> ( -- )
pop-path !<refresh-dir> pop-path !<refresh-dir>
@ -195,8 +201,7 @@
JMP2r JMP2r
@<toggle-misc> ( -- ) @<toggle-misc> ( -- )
[ LIT2 00 -misc ] LDZ EQU .misc STZ [ LIT2 00 -misc ] LDZ EQU .misc STZ !fit-window
!fit-window
@count-lines ( -- lines ) @count-lines ( -- lines )
.lines/folders LDZ .lines/roms LDZ ADD .lines/folders LDZ .lines/roms LDZ ADD
@ -211,7 +216,7 @@
AND JMP2r AND JMP2r
@get-cat ( id -- color ) @get-cat ( id -- color )
INC .lines/folders LDZ GTHk ?{ POP2 #03 JMP2r } INC .lines/folders LDZ GTHk ?{ POP2 #02 JMP2r }
SUB .lines/roms LDZ GTH ?{ #02 JMP2r } SUB .lines/roms LDZ GTH ?{ #02 JMP2r }
#01 JMP2r #01 JMP2r
@ -233,12 +238,12 @@
@pop-path ( -- ) @pop-path ( -- )
;path scap/ #0001 SUB2 ;path scap/ #0001 SUB2
&w ( -- ) &w ( -- )
;path/null LDA ?{ POP2 JMP2r } ;path/null LDA ?{ POP2 JMP2r }
#0001 SUB2 LDAk [ LIT "/ ] NEQ ?{ #0001 SUB2 LDAk [ LIT "/ ] NEQ ?{
LITr 00 STH2 LITr 00 STH2
INC2r STAr INC2r STAr
JMP2r } JMP2r }
!&w !&w
( (
@|drawing ) @|drawing )
@ -248,27 +253,36 @@
#0000 DUP2 .Screen/x DEO2 #0000 DUP2 .Screen/x DEO2
.Screen/y DEO2 .Screen/y DEO2
[ LIT2 80 -Screen/pixel ] DEO [ LIT2 80 -Screen/pixel ] DEO
( | status )
#0008 .Screen/x DEO2
#0004 .Screen/y DEO2
;path #01 <draw-uf2>
( | spacer )
#0014 .Screen/y DEO2
;line-icn <draw-spacer>
( | highlight ) ( | highlight )
.selection LDZ <draw-highlight> .selection LDZ <draw-highlight>
( | content ) ( | content )
#0004 .Screen/y DEO2 #001c .Screen/y DEO2
( | empty ) ( | empty )
count-lines ?{ count-lines ?{
#0008 .Screen/x DEO2 #0008 .Screen/x DEO2
;dict/empty #0f !<draw-uf2> } ;dict/empty #0f !<draw-uf2> }
( | folders ) ( | folders )
;mem/folders .lines/folders LDZ #05 <draw-list> ;mem/folders .lines/folders LDZ #01 <draw-list>
[ LIT2 00 -lines/folders ] LDZ EQU ?{ <draw-spacer> } [ LIT2 00 -lines/folders ] LDZ EQU ?{ ;dash-icn <draw-spacer> }
;mem/roms .lines/roms LDZ #05 <draw-list> ;mem/roms .lines/roms LDZ #00 <draw-list>
[ LIT2 00 -misc ] LDZ EQU ?{ [ LIT2 00 -misc ] LDZ EQU ?{
;mem/misc .lines/misc LDZ #0f <draw-list> } ;mem/misc .lines/misc LDZ #00 <draw-list> }
JMP2r JMP2r
@<draw-spacer> ( -- ) @<draw-spacer> ( addr* -- )
#0000 .Screen/x DEO2 #0000 .Screen/x DEO2
;dash-icn .Screen/addr DEO2 .Screen/addr DEO2
[ LIT2 f2 -Screen/auto ] DEO [ LIT2 f2 -Screen/auto ] DEO
[ LIT2 05 -Screen/sprite ] DEO [ LIT2 05 -Screen/sprite ] DEOk #0080 .Screen/x DEO2
.Screen/y DEI2 #0008 SUB2 .Screen/y DEO2
DEO
JMP2r JMP2r
@<draw-highlight> ( id -- ) @<draw-highlight> ( id -- )
@ -281,33 +295,47 @@
( | spacer ) ( | spacer )
has-spacer #00 EQU ?{ has-spacer #00 EQU ?{
#00 STHkr INC .lines/folders LDZ GTH #30 SFT2 ADD2 } #00 STHkr INC .lines/folders LDZ GTH #30 SFT2 ADD2 }
( padding ) #0003 ADD2 .Screen/y DEO2 ( padding ) #0013 ADD2 .Screen/y DEO2
STHr get-cat .Screen/sprite DEOk DEO STHr get-cat .Screen/sprite DEOk DEOk
( | right-side )
.Screen/x DEI2 #0080 ADD2 .Screen/x DEO2
.Screen/y DEI2 #0010 SUB2 .Screen/y DEO2
DEOk DEO
JMP2r JMP2r
@<draw-list> ( addr* length color -- ) @<draw-list> ( addr* length folder -- )
,&color STR ,&folder STR
DUP ?{ POP2 POP JMP2r } DUP ?{ POP2 POP JMP2r }
#0008 .Screen/x DEO2 #0008 .Screen/x DEO2
#00 SWP2 ,&t STR2 #00 SWP2 ,&t STR2
&l ( -- ) &>l ( -- )
#00 OVR #40 SFT2 [ LIT2 &t $2 ] ADD2 [ LIT &color $1 ] <draw-uf2> #00 OVR #40 SFT2 [ LIT2 &t $2 ] ADD2 #05 <draw-uf2>
#0008 .Screen/x DEO2 #0008 .Screen/x DEO2
.Screen/y DEI2k #0010 ADD2 ROT DEO2 .Screen/y DEI2k #0010 ADD2 ROT DEO2
INC GTHk ?&l INC GTHk ?&>l
POP2 JMP2r POP2
( | draw cursor marker )
[ LIT &folder $1 ] ?{ JMP2r }
JMP2r
[ LIT2 15 -Screen/auto ] DEO
;fill-icn .Screen/addr DEO2
.Screen/width DEI2 #0010 SUB2 .Screen/x DEO2
.Screen/y DEI2k #0020 SUB2 ROT DEO2
#05 .Screen/sprite DEO
.Screen/y DEI2k #0010 ADD2 ROT DEO2
JMP2r
@<draw-uf2> ( addr* color -- ) @<draw-uf2> ( addr* color -- )
,&color STR ,&color STR
[ LIT2 15 -Screen/auto ] DEO [ LIT2 15 -Screen/auto ] DEO
&w ( -- ) &>w ( -- )
LDAk #1f GTH ?{ POP2 JMP2r } LDAk #1f GTH ?{ POP2 JMP2r }
LDAk #20 SUB #00 SWP LDAk #20 SUB #00 SWP
( ) DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2 ( ) DUP2 #50 SFT2 ;font/glyphs ADD2 .Screen/addr DEO2
( ) ;font ADD2 LDA #00 SWP .Screen/x DEI2 ADD2 ( ) ;font ADD2 LDA #00 SWP .Screen/x DEI2 ADD2
( ) [ LIT &color 05 ] .Screen/sprite DEOk DEO ( ) [ LIT &color 05 ] .Screen/sprite DEOk DEO
.Screen/x DEO2 .Screen/x DEO2
INC2 !&w INC2 !&>w
@<update-cursor> ( color addr* -- ) @<update-cursor> ( color addr* -- )
[ LIT2 00 -Screen/auto ] DEO [ LIT2 00 -Screen/auto ] DEO
@ -327,8 +355,9 @@
@|stdlib ) @|stdlib )
@scap ( str* -- end* ) @scap ( str* -- end* )
&w ( -- ) &w ( -- )
INC2 & LDAk ?&w INC2 & LDAk ?&w
JMP2r JMP2r
@scmp3 ( a* b* -- f ) @scmp3 ( a* b* -- f )
@ -337,31 +366,32 @@
LDA2r LDA2 STH2r EQU2 JMP2r LDA2r LDA2 STH2r EQU2 JMP2r
@lcap ( str* -- next-line* ) @lcap ( str* -- next-line* )
&w ( -- ) &w ( -- )
LDAk #0a EQU ?{ LDAk #0a EQU ?{ INC2 & LDAk ?&w }
INC2 & LDAk ?&w }
JMP2r JMP2r
@<lcpy> ( src* dst* -- ) @<lcpy> ( src* dst* -- )
STH2 STH2
&w ( -- ) &w ( -- )
LDAk #1f GTH ?{ LDAk #1f GTH ?{
POP2 #00 STH2r STA POP2 #00 STH2r STA
JMP2r } JMP2r }
LDAk #00 STH2kr STA2 LDAk #00 STH2kr STA2
INC2r INC2 !&w INC2r INC2 !&w
@<scpy> ( src* dst* -- ) @<scpy> ( src* dst* -- )
STH2 STH2
&w ( -- ) &w ( -- )
LDAk #00 STH2kr STA2 LDAk #00 STH2kr STA2
INC2r INC2 LDAk ?&w INC2r INC2 LDAk ?&w
POP2 POP2r JMP2r POP2 POP2r JMP2r
@<pstr> ( str* -- ) @<pstr> ( str* -- )
&w ( -- ) &w ( -- )
LDAk #18 DEO LDAk #18 DEO
INC2 & LDAk ?&w INC2 & LDAk ?&w
POP2 JMP2r POP2 JMP2r
( (
@ -372,11 +402,12 @@
#0002 .File/length DEO2 #0002 .File/length DEO2
[ LIT2 -System/debug -System/r ] [ LIT2 -System/debug -System/r ]
&l ( -- ) &l ( -- )
;&buf .File/read DEO2 ;&buf .File/read DEO2
[ LIT2 00 -File/success-lb ] DEI EQU ?{ [ LIT2 00 -File/success-lb ] DEI EQU ?{
[ LIT2r &buf $2 ] STHk DEO2r [ LIT2r &buf $2 ] STHk DEO2r
INC INC NEQk ?&l } INC INC NEQk ?&l }
POP2 JMP2r POP2 JMP2r
&path ".theme $1 &path ".theme $1
( (
@ -388,7 +419,12 @@
@dash-icn [ 0000 00aa 0000 0000 ] @dash-icn [ 0000 00aa 0000 0000 ]
@dict &home-path "./ $1 @line-icn [ 0000 00ff 0000 0000 ]
@marker-icn
@dict
&home-path "./ $1
&mp3-ext "mp3 $1 &mp3-ext "mp3 $1
&empty "(empty) $1 &empty "(empty) $1