From b93ada07697c793a593a8ec8599d63309a2ac305 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Fri, 1 Sep 2017 22:08:43 -0700 Subject: [PATCH] path/name --- desk.acc/show.text.file/stf.list | 39 ++++++++++++++++++------------ desk.acc/show.text.file/stf.o | Bin 21893 -> 21916 bytes desk.acc/show.text.file/stf.s | 40 +++++++++++++++++++------------ 3 files changed, 49 insertions(+), 30 deletions(-) diff --git a/desk.acc/show.text.file/stf.list b/desk.acc/show.text.file/stf.list index e14d59b..2d3ae44 100644 --- a/desk.acc/show.text.file/stf.list +++ b/desk.acc/show.text.file/stf.list @@ -536,7 +536,7 @@ Current file: stf.s 000994 1 .proc window_params 000994 1 64 id: .byte window_id ; window identifier 000995 1 02 flags: .byte 2 ; window flags (2=include close box) -000996 1 00 10 title: .addr $1000 +000996 1 00 10 title: .addr $1000 ; overwritten to point at filename 000998 1 00 C1 L0998: .byte $00,$C1 ; ??? 00099A 1 00099A 1 20 L099A: .byte $20 ; hscroll? @@ -587,12 +587,19 @@ Current file: stf.s 0009E1 1 AD 8B C0 lda LCBANK1 0009E4 1 AD 8B C0 lda LCBANK1 0009E7 1 -0009E7 1 path_index := $DF20 -0009E7 1 path_table := $DFB3 ; prefix address table +0009E7 1 file_selected := $DF21 ; 0 if no selection, 1 otherwise +0009E7 1 path_index := $DF20 ; index of selected window (used to get prefix) +0009E7 1 path_table := $DFB3 ; window address table +0009E7 1 ;; each entry is length-prefixed path string (no trailing /) +0009E7 1 file_index := $DF22 ; index of selected file (global, not w/in window) +0009E7 1 file_table := $DD9F ; file address table +0009E7 1 ;; each entry is +0009E7 1 ;; ... byte 2 = type (bits 4,5,6 clear = directory) +0009E7 1 ;; ... byte 9 = start of length-prefixed filename 0009E7 1 0009E7 1 A9 00 lda #0 0009E9 1 8D 04 09 sta pathname::length -0009EC 1 AD 21 DF lda $DF21 ; ??? +0009EC 1 AD 21 DF lda file_selected 0009EF 1 F0 05 beq abort ; some file properties? 0009F1 1 AD 20 DF lda path_index ; prefix index in table 0009F4 1 D0 01 bne :+ @@ -629,10 +636,7 @@ Current file: stf.s 000A24 1 D0 02 bne :+ 000A26 1 E6 09 inc dst+1 000A28 1 -000A28 1 file_index := $DF22 -000A28 1 file_table := $DD9F -000A28 1 -000A28 1 ;; Check file properties. +000A28 1 ;; Get file entry. 000A28 1 AD 22 DF : lda file_index ; file index in table 000A2B 1 0A asl a ; (since table is 2 bytes wide) 000A2C 1 AA tax @@ -641,29 +645,34 @@ Current file: stf.s 000A32 1 BD A0 DD lda file_table+1,x 000A35 1 85 07 sta src+1 000A37 1 -000A37 1 A0 02 ldy #2 ; 2nd byte in entry ??? +000A37 1 ;; Exit if a directory. +000A37 1 A0 02 ldy #2 ; 2nd byte of entry 000A39 1 B1 06 lda (src),y 000A3B 1 29 70 and #$70 ; check that one of bits 4,5,6 is set ??? +000A3D 1 ;; some vague patterns, but unclear +000A3D 1 ;; basic = $32,$33, text = $52, sys = $11,$14,??, bin = $23,$24,$33 +000A3D 1 ;; dir = $01 (so not shown) 000A3D 1 D0 01 bne :+ 000A3F 1 60 rts ; abort ??? 000A40 1 -000A40 1 ;; Set window title. +000A40 1 ;; Set window title to point at filename (9th byte of entry) 000A40 1 18 : clc -000A41 1 A5 06 lda src ; name is 11 bytes into entry (2 + 9) +000A41 1 A5 06 lda src ; name is 9 bytes into entry 000A43 1 69 09 adc #9 000A45 1 8D 96 09 sta window_params::title 000A48 1 A5 07 lda src+1 000A4A 1 69 00 adc #0 000A4C 1 8D 97 09 sta window_params::title+1 000A4F 1 +000A4F 1 ;; Append filename to path. 000A4F 1 A0 09 ldy #9 -000A51 1 B1 06 lda (src),y -000A53 1 AA tax -000A54 1 CA dex +000A51 1 B1 06 lda (src),y ; grab length +000A53 1 AA tax ; this is... confusing +000A54 1 CA dex ; sets x to length - 2 ??? 000A55 1 CA dex 000A56 1 18 clc 000A57 1 A5 06 lda src -000A59 1 69 0B adc #11 ; name is 11 bytes into entry +000A59 1 69 0B adc #11 ; jumps to 11th byte in entry (1 past name???) 000A5B 1 85 06 sta src 000A5D 1 90 02 bcc :+ 000A5F 1 E6 07 inc src+1 diff --git a/desk.acc/show.text.file/stf.o b/desk.acc/show.text.file/stf.o index fce59524ca67158770201406755802b48731c34a..e21b75706cd1987ea0a1668f8552c5199e0846d5 100644 GIT binary patch literal 21916 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 literal 21893 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 Qvf<-tan0LiWCX$g12d#HtpET3 diff --git a/desk.acc/show.text.file/stf.s b/desk.acc/show.text.file/stf.s index b722b31..cebcf2a 100644 --- a/desk.acc/show.text.file/stf.s +++ b/desk.acc/show.text.file/stf.s @@ -302,7 +302,7 @@ len: .byte 0 ; length .proc window_params id: .byte window_id ; window identifier flags: .byte 2 ; window flags (2=include close box) -title: .addr $1000 +title: .addr $1000 ; overwritten to point at filename L0998: .byte $00,$C1 ; ??? L099A: .byte $20 ; hscroll? @@ -349,12 +349,19 @@ height: .word 150 lda LCBANK1 lda LCBANK1 - path_index := $DF20 - path_table := $DFB3 ; prefix address table + file_selected := $DF21 ; 0 if no selection, 1 otherwise + path_index := $DF20 ; index of selected window (used to get prefix) + path_table := $DFB3 ; window address table + ;; each entry is length-prefixed path string (no trailing /) + file_index := $DF22 ; index of selected file (global, not w/in window) + file_table := $DD9F ; file address table + ;; each entry is + ;; ... byte 2 = type (bits 4,5,6 clear = directory) + ;; ... byte 9 = start of length-prefixed filename with spaces before/after lda #0 sta pathname::length - lda $DF21 ; ??? + lda file_selected beq abort ; some file properties? lda path_index ; prefix index in table bne :+ @@ -391,10 +398,7 @@ abort: rts bne :+ inc dst+1 - file_index := $DF22 - file_table := $DD9F - - ;; Check file properties. + ;; Get file entry. : lda file_index ; file index in table asl a ; (since table is 2 bytes wide) tax @@ -403,29 +407,35 @@ abort: rts lda file_table+1,x sta src+1 - ldy #2 ; 2nd byte in entry ??? + ;; Exit if a directory. + ldy #2 ; 2nd byte of entry lda (src),y and #$70 ; check that one of bits 4,5,6 is set ??? + ;; some vague patterns, but unclear + ;; basic = $32,$33, text = $52, sys = $11,$14,??, bin = $23,$24,$33 + ;; dir = $01 (so not shown) bne :+ rts ; abort ??? - ;; Set window title. + ;; Set window title to point at filename (9th byte of entry) + ;; (title includes the spaces before/after from the icon) : clc - lda src ; name is 11 bytes into entry (2 + 9) + lda src ; name is 9 bytes into entry adc #9 sta window_params::title lda src+1 adc #0 sta window_params::title+1 + ;; Append filename to path. ldy #9 - lda (src),y - tax - dex + lda (src),y ; grab length + tax ; name has spaces before/after + dex ; so subtract 2 to get actual length dex clc lda src - adc #11 ; name is 11 bytes into entry + adc #11 ; 9 = length, 10 = space, 11 = name sta src bcc :+ inc src+1