More name fun

This commit is contained in:
Joshua Bell 2017-09-01 18:58:36 -07:00
parent f391d210e8
commit e702bcf8b0
3 changed files with 60 additions and 44 deletions

View File

@ -185,6 +185,7 @@ Current file: stf.s
000800 2 000800 2
000800 1 000800 1
000800 1 zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline 000800 1 zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline
000800 1 zp_code_mod := $0027 ; self-modified address in stash
000800 1 000800 1
000800 1 4C 04 08 start: jmp copy2aux 000800 1 4C 04 08 start: jmp copy2aux
000803 1 000803 1
@ -540,8 +541,6 @@ Current file: stf.s
0009E7 1 path_index := $DF20 0009E7 1 path_index := $DF20
0009E7 1 path_table := $DFB3 ; prefix address table 0009E7 1 path_table := $DFB3 ; prefix address table
0009E7 1 0009E7 1
0009E7 1
0009E7 1
0009E7 1 A9 00 lda #0 0009E7 1 A9 00 lda #0
0009E9 1 8D 04 09 sta pathname::length 0009E9 1 8D 04 09 sta pathname::length
0009EC 1 AD 21 DF lda $DF21 ; ??? 0009EC 1 AD 21 DF lda $DF21 ; ???
@ -551,7 +550,7 @@ Current file: stf.s
0009F6 1 60 abort: rts 0009F6 1 60 abort: rts
0009F7 1 continue: 0009F7 1 continue:
0009F7 1 0009F7 1
0009F7 1 0009F7 1 ;; Copy path (prefix) into pathname buffer.
0009F7 1 src := $06 0009F7 1 src := $06
0009F7 1 dst := $08 0009F7 1 dst := $08
0009F7 1 0009F7 1
@ -573,7 +572,8 @@ Current file: stf.s
000A14 1 85 09 sta dst+1 000A14 1 85 09 sta dst+1
000A16 1 20 72 0A jsr copy_pathname ; copy x bytes (src) to (dst) 000A16 1 20 72 0A jsr copy_pathname ; copy x bytes (src) to (dst)
000A19 1 000A19 1
000A19 1 A9 2F lda #'/' ; append separator to path 000A19 1 ;; Append separator.
000A19 1 A9 2F lda #'/'
000A1B 1 A0 00 ldy #0 000A1B 1 A0 00 ldy #0
000A1D 1 91 08 sta (dst),y 000A1D 1 91 08 sta (dst),y
000A1F 1 EE 04 09 inc pathname::length 000A1F 1 EE 04 09 inc pathname::length
@ -581,45 +581,53 @@ Current file: stf.s
000A24 1 D0 02 bne :+ 000A24 1 D0 02 bne :+
000A26 1 E6 09 inc dst+1 000A26 1 E6 09 inc dst+1
000A28 1 000A28 1
000A28 1 filename_index := $DF22 000A28 1 file_index := $DF22
000A28 1 filename_table := $DD9F 000A28 1 file_table := $DD9F
000A28 1 000A28 1
000A28 1 AD 22 DF : lda filename_index ; file index in table 000A28 1 ;; Check file properties.
000A28 1 AD 22 DF : lda file_index ; file index in table
000A2B 1 0A asl a ; (since table is 2 bytes wide) 000A2B 1 0A asl a ; (since table is 2 bytes wide)
000A2C 1 AA tax 000A2C 1 AA tax
000A2D 1 BD 9F DD lda filename_table,x 000A2D 1 BD 9F DD lda file_table,x
000A30 1 85 06 sta src 000A30 1 85 06 sta src
000A32 1 BD A0 DD lda filename_table+1,x 000A32 1 BD A0 DD lda file_table+1,x
000A35 1 85 07 sta src+1 000A35 1 85 07 sta src+1
000A37 1 A0 02 ldy #$02 000A37 1
000A37 1 A0 02 ldy #2 ; 2nd byte in entry ???
000A39 1 B1 06 lda (src),y 000A39 1 B1 06 lda (src),y
000A3B 1 29 70 and #$70 000A3B 1 29 70 and #$70 ; check that one of bits 4,5,6 is set ???
000A3D 1 D0 01 bne :+ 000A3D 1 D0 01 bne :+
000A3F 1 60 rts ; abort ??? 000A3F 1 60 rts ; abort ???
000A40 1
000A40 1 ;; Set window title.
000A40 1 18 : clc 000A40 1 18 : clc
000A41 1 A5 06 lda src 000A41 1 A5 06 lda src ; name is 11 bytes into entry (2 + 9)
000A43 1 69 09 adc #$09 000A43 1 69 09 adc #9
000A45 1 8D 96 09 sta window_params::title 000A45 1 8D 96 09 sta window_params::title
000A48 1 A5 07 lda src+1 000A48 1 A5 07 lda src+1
000A4A 1 69 00 adc #$00 000A4A 1 69 00 adc #0
000A4C 1 8D 97 09 sta window_params::title+1 000A4C 1 8D 97 09 sta window_params::title+1
000A4F 1 A0 09 ldy #$09 000A4F 1
000A4F 1 A0 09 ldy #9
000A51 1 B1 06 lda (src),y 000A51 1 B1 06 lda (src),y
000A53 1 AA tax 000A53 1 AA tax
000A54 1 CA dex 000A54 1 CA dex
000A55 1 CA dex 000A55 1 CA dex
000A56 1 18 clc 000A56 1 18 clc
000A57 1 A5 06 lda src 000A57 1 A5 06 lda src
000A59 1 69 0B adc #$0B 000A59 1 69 0B adc #11 ; name is 11 bytes into entry
000A5B 1 85 06 sta src 000A5B 1 85 06 sta src
000A5D 1 90 02 bcc L0A61 000A5D 1 90 02 bcc :+
000A5F 1 E6 07 inc src+1 000A5F 1 E6 07 inc src+1
000A61 1 20 72 0A L0A61: jsr copy_pathname ; copy x bytes (src) to (dst) 000A61 1 20 72 0A : jsr copy_pathname ; copy x bytes (src) to (dst)
000A64 1 A9 1E lda #$1E 000A64 1
000A66 1 85 27 sta $27 000A64 1 addr := $401E
000A68 1 A9 40 lda #$40 000A64 1 A9 1E lda #<addr
000A6A 1 85 28 sta $28 000A66 1 85 27 sta zp_code_mod
000A68 1 A9 40 lda #>addr
000A6A 1 85 28 sta zp_code_mod+1
000A6C 1 20 20 00 jsr zp_code_stash 000A6C 1 20 20 00 jsr zp_code_stash
000A6F 1
000A6F 1 4C 8A 0A jmp open_file_and_init_window 000A6F 1 4C 8A 0A jmp open_file_and_init_window
000A72 1 000A72 1
000A72 1 .proc copy_pathname ; copy x bytes from src to dst 000A72 1 .proc copy_pathname ; copy x bytes from src to dst

Binary file not shown.

View File

@ -6,6 +6,7 @@
.include "a2d.inc" .include "a2d.inc"
zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline zp_code_stash := $0020 ; Scratch space used for "call 1000 main" trampoline
zp_code_mod := $0027 ; self-modified address in stash
start: jmp copy2aux start: jmp copy2aux
@ -343,8 +344,6 @@ L09DE: sta ALTZPON
path_index := $DF20 path_index := $DF20
path_table := $DFB3 ; prefix address table path_table := $DFB3 ; prefix address table
lda #0 lda #0
sta pathname::length sta pathname::length
lda $DF21 ; ??? lda $DF21 ; ???
@ -354,7 +353,7 @@ L09DE: sta ALTZPON
abort: rts abort: rts
continue: continue:
;; Copy path (prefix) into pathname buffer.
src := $06 src := $06
dst := $08 dst := $08
@ -376,7 +375,8 @@ continue:
sta dst+1 sta dst+1
jsr copy_pathname ; copy x bytes (src) to (dst) jsr copy_pathname ; copy x bytes (src) to (dst)
lda #'/' ; append separator to path ;; Append separator.
lda #'/'
ldy #0 ldy #0
sta (dst),y sta (dst),y
inc pathname::length inc pathname::length
@ -384,45 +384,53 @@ continue:
bne :+ bne :+
inc dst+1 inc dst+1
filename_index := $DF22 file_index := $DF22
filename_table := $DD9F file_table := $DD9F
: lda filename_index ; file index in table ;; Check file properties.
: lda file_index ; file index in table
asl a ; (since table is 2 bytes wide) asl a ; (since table is 2 bytes wide)
tax tax
lda filename_table,x lda file_table,x
sta src sta src
lda filename_table+1,x lda file_table+1,x
sta src+1 sta src+1
ldy #$02
ldy #2 ; 2nd byte in entry ???
lda (src),y lda (src),y
and #$70 and #$70 ; check that one of bits 4,5,6 is set ???
bne :+ bne :+
rts ; abort ??? rts ; abort ???
;; Set window title.
: clc : clc
lda src lda src ; name is 11 bytes into entry (2 + 9)
adc #$09 adc #9
sta window_params::title sta window_params::title
lda src+1 lda src+1
adc #$00 adc #0
sta window_params::title+1 sta window_params::title+1
ldy #$09
ldy #9
lda (src),y lda (src),y
tax tax
dex dex
dex dex
clc clc
lda src lda src
adc #$0B adc #11 ; name is 11 bytes into entry
sta src sta src
bcc L0A61 bcc :+
inc src+1 inc src+1
L0A61: jsr copy_pathname ; copy x bytes (src) to (dst) : jsr copy_pathname ; copy x bytes (src) to (dst)
lda #$1E
sta $27 addr := $401E
lda #$40 lda #<addr
sta $28 sta zp_code_mod
lda #>addr
sta zp_code_mod+1
jsr zp_code_stash jsr zp_code_stash
jmp open_file_and_init_window jmp open_file_and_init_window
.proc copy_pathname ; copy x bytes from src to dst .proc copy_pathname ; copy x bytes from src to dst