commit 9b061bb9efe220c31a0b7e14cf3f0133e6badc3b
parent 198c28b10673292b345b46172362c581d77c2ff2
Author: Andrew Alderwick <andrew@alderwick.co.uk>
Date: Tue, 9 Nov 2021 07:06:19 +0000
Split directory entries into strings on load.
Diffstat:
1 file changed, 45 insertions(+), 46 deletions(-)
diff --git a/projects/software/boot.tal b/projects/software/boot.tal
@@ -18,6 +18,8 @@
%DEBUG { ;print-hex/byte JSR2 #0a .Console/write DEO }
%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
+%SEL-ENTRY { ;dir/entries #00 .browser/sel LDZ DUP2 ADD2 ADD2 }
+
( devices )
|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
@@ -137,17 +139,34 @@ BRK
#1000 .File/length DEO2
;dir/data .File/read DEO2
- ( count lines )
- LITr 00
- ;dir/data
+ ( separate into lines )
+ #00 ;dir/data STH2k
&while
LDAk #0a ! ,&no-lb JCN
- INCr
- &no-lb
- INC2 LDAk ,&while JCN
+ STAk
+ STH2r ;add-entry JSR2
+ INC2 STH2k ,&while JMP
+ &no-lb INC2 LDAk ,&while JCN
+ POP2r POP2 POP
+RTN
+
+@add-entry ( line* -- )
+ DUP2 ;filter-entry JSR2 ,&ignored JCN
+
+ ( just add entry to end for now, FIXME sort entries )
+ ;dir/entries
+ #00 ;dir/lines LDA DUP2 ADD2
+ ADD2
+ STA2
+ ;dir/lines LDAk INC ROT ROT STA
+ #0000
+
+ &ignored
POP2
- STHr #02 - ;dir/lines STA
+RTN
+@filter-entry ( line* -- ignore-flag )
+ POP2 #00
RTN
@select-file ( id -- )
@@ -179,21 +198,8 @@ RTN
@run-file ( id -- )
- STH
- ( count lines )
- LITr 00
- ;dir/data
- &while
- LDAk #0a ! ,&no-lb JCN
- INCr
- &no-lb
- EQUkr STHr ,&end JCN
- INC2 LDAk ,&while JCN
- &end
- POP2r
-
- DUP2 INC2 ;close-path JSR2
- #0006 ++ DUP2 ;print-string JSR2
+ SEL-ENTRY LDA2
+ #0005 ++ DUP2 ;print-string JSR2
#0a .Console/write DEO
DUP2 ;check-rom JSR2 ,&valid JCN
@@ -204,19 +210,6 @@ RTN
RTN
-@close-path ( addr* -- )
-
- &while
- LDAk #0a ! ,&no-lb JCN
- STH2k #00 STH2r STA
- ,&end JMP
- &no-lb
- INC2 LDAk ,&while JCN
- &end
- POP2
-
-RTN
-
@print-string ( addr* -- )
&loop
@@ -234,28 +227,33 @@ RTN
@draw-browser ( -- )
- ( line counter ) #00 STH
.browser/x LDZ2 .Screen/x DEO2
.browser/y LDZ2 .Screen/y DEO2
- ;dir/data
+ SEL-ENTRY ;dir/entries
+ &outer ( selected-entry* this-entry* )
+ EQU2k #0c * #01 + STH
+ LDA2k ORAk #00 = ,&end JCN
+ STHr ,&draw-one JSR
+ .browser/x LDZ2 .Screen/x DEO2
+ .Screen/y DEI2 #0010 ++ .Screen/y DEO2
+ INC2 INC2 ,&outer JMP
+ &end
+ POP2 POP2 POP2 POPr
+RTN
+
+ &draw-one ( line* color -- )
+ STH
&loop
- LDAk #0a ! ,&no-lb JCN
- .browser/x LDZ2 .Screen/x DEO2
- .Screen/y DEI2 #0010 ++ .Screen/y DEO2
- ( incr line counter ) INCr
- ,&skip JMP
- &no-lb
( top-addr ) LDAk #20 - TOS #0010 MUL2 ;font ++ .Screen/addr DEO2
- ( top-draw ) #01 [ .browser/sel LDZ STHkr = #0c * + ] .Screen/sprite DEO
+ ( top-draw ) STHkr .Screen/sprite DEO
( bottom-addr ) .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
( next-y ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2
- ( bottom-draw ) #01 [ .browser/sel LDZ STHkr = #0c * + ] .Screen/sprite DEO
+ ( bottom-draw ) STHkr .Screen/sprite DEO
( prev-y ) .Screen/y DEI2 #0008 -- .Screen/y DEO2
( move ) .Screen/x DEI2 #0008 ++ .Screen/x DEO2
&skip
INC2 LDAk ,&loop JCN
POP2 POPr
-
RTN
@draw-time ( -- )
@@ -407,4 +405,5 @@ include projects/assets/msx01x02.tal
@dir
&path ". $1
&lines $1
+ &entries $100
&data