Browse code

(boot.tal) Added little folder icons

neauoire authored on 09/01/2022 01:22:04
Showing 1 changed files
... ...
@@ -11,6 +11,8 @@
11 11
 %10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
12 12
 %20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
13 13
 
14
+%40** { #60 SFT2 }
15
+
14 16
 %RTN { JMP2r }
15 17
 %TOS { #00 SWP }
16 18
 
... ...
@@ -52,9 +54,9 @@
52 54
 |0100 ( -> )
53 55
 
54 56
 	( theme ) 
55
-	#f077 .System/r DEO2 
56
-	#f00c .System/g DEO2 
57
-	#f02a .System/b DEO2
57
+	#f079 .System/r DEO2 
58
+	#f0c2 .System/g DEO2 
59
+	#f0a4 .System/b DEO2
58 60
 
59 61
 	( vectors )
60 62
 	;on-frame .Screen/vector DEO2
... ...
@@ -111,7 +113,6 @@ BRK
111 113
 		.browser/scroll LDZ #00 = ,&no-up JCN
112 114
 		DUP .browser/scroll LDZ + ;scroll-to JSR2
113 115
 		&no-up
114
-
115 116
 	DUP #01 ! ,&no-down JCN
116 117
 		.browser/scroll LDZ ;dir/lines LDA = ,&no-down JCN
117 118
 		DUP .browser/scroll LDZ + ;scroll-to JSR2
... ...
@@ -121,16 +122,13 @@ BRK
121 122
 	( within browser )
122 123
 	.Mouse/y DEI2 .browser/y LDZ2 << ,&outside JCN
123 124
 	.Mouse/y DEI2 .browser/y2 LDZ2 #0010 -- >> ,&outside JCN
124
-
125 125
 	( select choice )
126 126
 	.Mouse/y DEI2 .browser/y LDZ2 --
127 127
 		10// NIP .browser/scroll LDZ + ;select-file JSR2
128
-
129 128
 	( run choice )
130 129
 	.Mouse/state DEI #00 = ,&no-click JCN
131 130
 		.browser/sel LDZ ;run-file JSR2
132 131
 		&no-click
133
-
134 132
 	&outside
135 133
 
136 134
 BRK
... ...
@@ -142,11 +140,13 @@ BRK
142 140
 	DUP #10 ! ,&no-up JCN
143 141
 		.browser/sel LDZ #00 = ,&no-up JCN
144 142
 		.browser/sel LDZ #01 - ;select-file JSR2 
143
+		;follow-selection JSR2
145 144
 		POP BRK
146 145
 		&no-up
147 146
 	DUP #20 ! ,&no-down JCN
148 147
 		.browser/sel LDZ INC ;dir/lines LDA = ,&no-down JCN 
149 148
 		.browser/sel LDZ INC ;select-file JSR2 
149
+		;follow-selection JSR2
150 150
 		POP BRK
151 151
 		&no-down
152 152
 	DUP #01 ! ,&no-a JCN
... ...
@@ -164,24 +164,6 @@ BRK
164 164
 
165 165
 BRK
166 166
 
167
-@scroll-to ( line -- )
168
-
169
-	STH
170
-	( more lines than visible )
171
-	;dir/lines LDA LINES-COUNT 
172
-	DUP2 > ,&can-scroll JCN
173
-		POPr POP2 RTN
174
-		&can-scroll
175
-	( less than max scroll )
176
-	- INC STHkr > ,&valid-scroll JCN
177
-		POPr RTN
178
-		&valid-scroll 
179
-	#00 ;draw-browser JSR2
180
-	STHr .browser/scroll STZ
181
-	#01 ;draw-browser JSR2
182
-
183
-RTN
184
-
185 167
 @load-dir ( -- )
186 168
 
187 169
 	;dir/path .File/name DEO2
... ...
@@ -193,8 +175,8 @@ RTN
193 175
 	;dir/data
194 176
 	&while
195 177
 		LDAk #1f > ,&no-lb JCN
196
-			STH2k #00 STH2r STA
197
-			;dir/lines LDA INC ;dir/lines STA
178
+			( split ) STH2k #00 STH2r STA
179
+			( count lines ) ;dir/lines LDA INC ;dir/lines STA
198 180
 			&no-lb
199 181
 		INC2 LDAk ,&while JCN
200 182
 	POP2
... ...
@@ -209,13 +191,9 @@ RTN
209 191
 		&has-changed
210 192
 
211 193
 	#00 ;draw-browser JSR2
212
-
213 194
 	DUP .browser/sel STZ
214 195
 	DUP .browser/last STZ
215 196
 		#30 + .Audio0/pitch DEO
216
-
217
-	;follow-selection JSR2
218
-
219 197
 	#01 ;draw-browser JSR2
220 198
 
221 199
 	( draw mascot )
... ...
@@ -223,41 +201,47 @@ RTN
223 201
 	;mascot-icn [ .browser/sel LDZ #03 AND TOS #0480 ** ++ ] #01 
224 202
 		;draw-icn JSR2
225 203
 
204
+	( draw position )
205
+	AUTO-YADDR
206
+	#0010 .Screen/x DEO2
207
+	#0080 .Screen/y DEO2
208
+	.browser/sel LDZ #02 ;draw-byte JSR2
209
+	LIT '/ #02 ;draw-char JSR2
210
+	;dir/lines LDA #01 - #02 ;draw-byte JSR2
211
+	AUTO-NONE
212
+
226 213
 RTN
227 214
 
228 215
 @follow-selection ( -- )
229 216
 
230 217
 	LINES-COUNT .browser/sel LDZ .browser/scroll LDZ -
231 218
 	DUP2 > ,&no-down JCN
232
-		.browser/scroll LDZ INC ;scroll-to JSR2
219
+		.browser/scroll LDZ INC ,scroll-to JSR
233 220
 		&no-down
234 221
 	DUP2 SWP < ,&no-up JCN
235
-		.browser/sel LDZ ;scroll-to JSR2
222
+		.browser/sel LDZ ,scroll-to JSR
236 223
 		&no-up
237 224
 	POP2
238 225
 
239 226
 RTN
240 227
 
241
-@print-str ( string* -- )
242
-
243
-	#0001 SUB2 
244
-	&while
245
-		INC2 LDAk DUP #18 DEO ,&while JCN 
246
-	POP2
247
-
248
-JMP2r
249
-
250
-@print-hex ( value* -- )
228
+@scroll-to ( line -- )
251 229
 
252
-	SWP ,&byte JSR 
253
-	&byte ( byte -- )
254
-		STHk #04 SFT ,&parse JSR #18 DEO
255
-		STHr #0f AND ,&parse JSR #18 DEO
256
-	JMP2r
257
-	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r 
258
-	&above #57 ADD JMP2r
230
+	STH
231
+	( more lines than visible )
232
+	;dir/lines LDA LINES-COUNT 
233
+	DUP2 > ,&can-scroll JCN
234
+		POPr POP2 RTN
235
+		&can-scroll
236
+	( less than max scroll )
237
+	- INC STHkr > ,&valid-scroll JCN
238
+		POPr RTN
239
+		&valid-scroll 
240
+	#00 ;draw-browser JSR2
241
+	STHr .browser/scroll STZ
242
+	#01 ;draw-browser JSR2
259 243
 
260
-JMP2r
244
+RTN
261 245
 
262 246
 @run-file ( id -- )
263 247
 
... ...
@@ -282,15 +266,18 @@ RTN
282 266
 	STH
283 267
 
284 268
 	( draw hand )
285
-	.browser/x LDZ2 #0018 -- .browser/y LDZ2 [ .browser/sel LDZ .browser/scroll LDZ - TOS 10** ++ ] 
269
+	.browser/x LDZ2 #0018 -- .browser/y LDZ2 
270
+	.browser/sel LDZ .browser/scroll LDZ - TOS 10** ++ 
286 271
 	#0010 #0010 
287
-		;hand-icn STHkr #03 * ;draw-icn JSR2
272
+		;hand-icn STHkr #02 * ;draw-icn JSR2
288 273
 	( draw files )
289 274
 	LINES-COUNT #00
290 275
 	&loop
291 276
 		.browser/x LDZ2 .Screen/x DEO2
292 277
 		DUP TOS 10** .browser/y LDZ2 ++ .Screen/y DEO2
293
-		DUP .browser/scroll LDZ + ;get-entry JSR2 #01 STHkr *  ;draw-str JSR2
278
+		DUP .browser/scroll LDZ + ;get-entry JSR2 
279
+			DUP2 ;get-type JSR2 ;draw-type JSR2
280
+			#01 STHkr * ;draw-str JSR2
294 281
 		INC GTHk ,&loop JCN
295 282
 	POP2
296 283
 
... ...
@@ -298,6 +285,13 @@ RTN
298 285
 
299 286
 RTN
300 287
 
288
+@get-type ( line* -- type )
289
+
290
+	;scap JSR2 #0004 -- ;&rom-ext ;scmp JSR2
291
+
292
+RTN
293
+	&rom-ext ".rom $1
294
+
301 295
 @get-entry ( id -- addr* )
302 296
 
303 297
 	( limit ) STH
... ...
@@ -317,9 +311,20 @@ RTN
317 311
 
318 312
 RTN
319 313
 
320
-@hex-char ( hex -- char )
314
+@draw-type ( type -- )
315
+
316
+	STHk TOS 20** ;file-icns ++ .Screen/addr DEO2
317
+	AUTO-XADDR
318
+	#02 STHkr - .Screen/sprite DEOk DEO
321 319
 
322
-	DUP #09 GTH #04 JCN #30 + RTN #57 +
320
+	.Screen/x DEI2k #0010 -- ROT DEO2
321
+	.Screen/y DEI2k #0008 ++ ROT DEO2
322
+	
323
+	#02 STHr - .Screen/sprite DEOk DEO
324
+
325
+	.Screen/x DEI2k #0008 ++ ROT DEO2
326
+	.Screen/y DEI2k #0008 -- ROT DEO2
327
+	AUTO-NONE
323 328
 
324 329
 RTN
325 330
 
... ...
@@ -402,6 +407,52 @@ JMP2r
402 407
 
403 408
 RTN
404 409
 
410
+( helpers )
411
+
412
+@print-str ( string* -- )
413
+
414
+	#0001 SUB2 
415
+	&while
416
+		INC2 LDAk DUP #18 DEO ,&while JCN 
417
+	POP2
418
+
419
+JMP2r
420
+
421
+@print-hex ( value* -- )
422
+
423
+	SWP ,&byte JSR 
424
+	&byte ( byte -- )
425
+		STHk #04 SFT ,&parse JSR #18 DEO
426
+		STHr #0f AND ,&parse JSR #18 DEO
427
+	JMP2r
428
+	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r 
429
+	&above #57 ADD JMP2r
430
+
431
+JMP2r
432
+
433
+@scmp ( a* b* -- flag )
434
+
435
+	STH2
436
+	&loop
437
+		LDAk LDAkr STHr = ,&not-diff JCN
438
+			POP2 POP2r #00 RTN
439
+			&not-diff
440
+		LDAk LDAkr STHr #0000 !! ,&not-end JCN
441
+			POP2 POP2r #01 RTN
442
+			&not-end
443
+		INC2 INC2r
444
+		,&loop JMP
445
+	POP2 POP2r #00
446
+
447
+RTN
448
+
449
+@scap ( str* -- str-end* )
450
+
451
+	( clamp ) LDAk #00 ! JMP RTN
452
+	&while INC2 LDAk ,&while JCN
453
+
454
+RTN
455
+
405 456
 @pointer-icn
406 457
 	80c0 e0f0 f8e0 1000
407 458
 @hand-icn
... ...
@@ -409,6 +460,15 @@ RTN
409 460
 	0000 0000 0000 fc02
410 461
 	8180 8080 8040 3f00
411 462
 	fc20 c020 c020 c000
463
+@file-icns
464
+	003f 3f30 3f30 3f30
465
+	00fc fc0c fc0c fc0c
466
+	3f33 3f3f 3f3f 3f00
467
+	fcfc fcc4 c8d0 e000
468
+	003f 3f30 3132 3231
469
+	00fc fc0c 8c4c 4c8c
470
+	303f 3f3f 3f3f 3f00
471
+	0cfc fcc4 c8d0 e000
412 472
 @sin-pcm
413 473
 	8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad
414 474
 	b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7