| ... | ... |
@@ -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 = ,¬-diff JCN |
|
| 438 |
+ POP2 POP2r #00 RTN |
|
| 439 |
+ ¬-diff |
|
| 440 |
+ LDAk LDAkr STHr #0000 !! ,¬-end JCN |
|
| 441 |
+ POP2 POP2r #01 RTN |
|
| 442 |
+ ¬-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 |