... | ... |
@@ -18,6 +18,8 @@ |
18 | 18 |
%DEBUG { ;print-hex/byte JSR2 #0a .Console/write DEO } |
19 | 19 |
%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO } |
20 | 20 |
|
21 |
+%SEL-ENTRY { ;dir/entries #00 .browser/sel LDZ DUP2 ADD2 ADD2 } |
|
22 |
+ |
|
21 | 23 |
( devices ) |
22 | 24 |
|
23 | 25 |
|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 |
137 | 139 |
#1000 .File/length DEO2 |
138 | 140 |
;dir/data .File/read DEO2 |
139 | 141 |
|
140 |
- ( count lines ) |
|
141 |
- LITr 00 |
|
142 |
- ;dir/data |
|
142 |
+ ( separate into lines ) |
|
143 |
+ #00 ;dir/data STH2k |
|
143 | 144 |
&while |
144 | 145 |
LDAk #0a ! ,&no-lb JCN |
145 |
- INCr |
|
146 |
- &no-lb |
|
147 |
- INC2 LDAk ,&while JCN |
|
146 |
+ STAk |
|
147 |
+ STH2r ;add-entry JSR2 |
|
148 |
+ INC2 STH2k ,&while JMP |
|
149 |
+ &no-lb INC2 LDAk ,&while JCN |
|
150 |
+ POP2r POP2 POP |
|
151 |
+RTN |
|
152 |
+ |
|
153 |
+@add-entry ( line* -- ) |
|
154 |
+ DUP2 ;filter-entry JSR2 ,&ignored JCN |
|
155 |
+ |
|
156 |
+ ( just add entry to end for now, FIXME sort entries ) |
|
157 |
+ ;dir/entries |
|
158 |
+ #00 ;dir/lines LDA DUP2 ADD2 |
|
159 |
+ ADD2 |
|
160 |
+ STA2 |
|
161 |
+ ;dir/lines LDAk INC ROT ROT STA |
|
162 |
+ #0000 |
|
163 |
+ |
|
164 |
+ &ignored |
|
148 | 165 |
POP2 |
149 |
- STHr #02 - ;dir/lines STA |
|
166 |
+RTN |
|
150 | 167 |
|
168 |
+@filter-entry ( line* -- ignore-flag ) |
|
169 |
+ POP2 #00 |
|
151 | 170 |
RTN |
152 | 171 |
|
153 | 172 |
@select-file ( id -- ) |
... | ... |
@@ -179,21 +198,8 @@ RTN |
179 | 198 |
|
180 | 199 |
@run-file ( id -- ) |
181 | 200 |
|
182 |
- STH |
|
183 |
- ( count lines ) |
|
184 |
- LITr 00 |
|
185 |
- ;dir/data |
|
186 |
- &while |
|
187 |
- LDAk #0a ! ,&no-lb JCN |
|
188 |
- INCr |
|
189 |
- &no-lb |
|
190 |
- EQUkr STHr ,&end JCN |
|
191 |
- INC2 LDAk ,&while JCN |
|
192 |
- &end |
|
193 |
- POP2r |
|
194 |
- |
|
195 |
- DUP2 INC2 ;close-path JSR2 |
|
196 |
- #0006 ++ DUP2 ;print-string JSR2 |
|
201 |
+ SEL-ENTRY LDA2 |
|
202 |
+ #0005 ++ DUP2 ;print-string JSR2 |
|
197 | 203 |
#0a .Console/write DEO |
198 | 204 |
|
199 | 205 |
DUP2 ;check-rom JSR2 ,&valid JCN |
... | ... |
@@ -204,19 +210,6 @@ RTN |
204 | 210 |
|
205 | 211 |
RTN |
206 | 212 |
|
207 |
-@close-path ( addr* -- ) |
|
208 |
- |
|
209 |
- &while |
|
210 |
- LDAk #0a ! ,&no-lb JCN |
|
211 |
- STH2k #00 STH2r STA |
|
212 |
- ,&end JMP |
|
213 |
- &no-lb |
|
214 |
- INC2 LDAk ,&while JCN |
|
215 |
- &end |
|
216 |
- POP2 |
|
217 |
- |
|
218 |
-RTN |
|
219 |
- |
|
220 | 213 |
@print-string ( addr* -- ) |
221 | 214 |
|
222 | 215 |
&loop |
... | ... |
@@ -234,28 +227,33 @@ RTN |
234 | 227 |
|
235 | 228 |
@draw-browser ( -- ) |
236 | 229 |
|
237 |
- ( line counter ) #00 STH |
|
238 | 230 |
.browser/x LDZ2 .Screen/x DEO2 |
239 | 231 |
.browser/y LDZ2 .Screen/y DEO2 |
240 |
- ;dir/data |
|
232 |
+ SEL-ENTRY ;dir/entries |
|
233 |
+ &outer ( selected-entry* this-entry* ) |
|
234 |
+ EQU2k #0c * #01 + STH |
|
235 |
+ LDA2k ORAk #00 = ,&end JCN |
|
236 |
+ STHr ,&draw-one JSR |
|
237 |
+ .browser/x LDZ2 .Screen/x DEO2 |
|
238 |
+ .Screen/y DEI2 #0010 ++ .Screen/y DEO2 |
|
239 |
+ INC2 INC2 ,&outer JMP |
|
240 |
+ &end |
|
241 |
+ POP2 POP2 POP2 POPr |
|
242 |
+RTN |
|
243 |
+ |
|
244 |
+ &draw-one ( line* color -- ) |
|
245 |
+ STH |
|
241 | 246 |
&loop |
242 |
- LDAk #0a ! ,&no-lb JCN |
|
243 |
- .browser/x LDZ2 .Screen/x DEO2 |
|
244 |
- .Screen/y DEI2 #0010 ++ .Screen/y DEO2 |
|
245 |
- ( incr line counter ) INCr |
|
246 |
- ,&skip JMP |
|
247 |
- &no-lb |
|
248 | 247 |
( top-addr ) LDAk #20 - TOS #0010 MUL2 ;font ++ .Screen/addr DEO2 |
249 |
- ( top-draw ) #01 [ .browser/sel LDZ STHkr = #0c * + ] .Screen/sprite DEO |
|
248 |
+ ( top-draw ) STHkr .Screen/sprite DEO |
|
250 | 249 |
( bottom-addr ) .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2 |
251 | 250 |
( next-y ) .Screen/y DEI2 #0008 ++ .Screen/y DEO2 |
252 |
- ( bottom-draw ) #01 [ .browser/sel LDZ STHkr = #0c * + ] .Screen/sprite DEO |
|
251 |
+ ( bottom-draw ) STHkr .Screen/sprite DEO |
|
253 | 252 |
( prev-y ) .Screen/y DEI2 #0008 -- .Screen/y DEO2 |
254 | 253 |
( move ) .Screen/x DEI2 #0008 ++ .Screen/x DEO2 |
255 | 254 |
&skip |
256 | 255 |
INC2 LDAk ,&loop JCN |
257 | 256 |
POP2 POPr |
258 |
- |
|
259 | 257 |
RTN |
260 | 258 |
|
261 | 259 |
@draw-time ( -- ) |
... | ... |
@@ -407,4 +405,5 @@ include projects/assets/msx01x02.tal |
407 | 405 |
@dir |
408 | 406 |
&path ". $1 |
409 | 407 |
&lines $1 |
408 |
+ &entries $100 |
|
410 | 409 |
&data |