Menu: simplify some memory accesses
This commit is contained in:
parent
d65d657ff7
commit
37a9f09a78
@ -1,15 +1,15 @@
|
|||||||
.data
|
.data
|
||||||
;don't anger the stack!
|
;don't anger the stack!
|
||||||
dirptr_addr .word 0
|
dirptr_addr .word 0
|
||||||
dirptr_bank .byt 0
|
dirptr_bank .word 0
|
||||||
dirstart_addr .word 0
|
dirstart_addr .word 0
|
||||||
dirstart_bank .byt 0
|
dirstart_bank .word 0
|
||||||
dirend_addr .word 0
|
dirend_addr .word 0
|
||||||
dirend_bank .byt 0
|
dirend_bank .word 0
|
||||||
dirend_idx .word 0
|
dirend_idx .word 0
|
||||||
dirptr_idx .word 0
|
dirptr_idx .word 0
|
||||||
dirent_addr .word 0
|
dirent_addr .word 0
|
||||||
dirent_bank .byt 0
|
dirent_bank .word 0
|
||||||
dirent_type .byt 0
|
dirent_type .byt 0
|
||||||
dirend_onscreen .byt 0
|
dirend_onscreen .byt 0
|
||||||
dirlog_idx .byt 0,0,0 ; long ptr
|
dirlog_idx .byt 0,0,0 ; long ptr
|
||||||
|
|||||||
@ -188,32 +188,26 @@ redraw_filelist_loop
|
|||||||
lsr
|
lsr
|
||||||
cmp listdisp
|
cmp listdisp
|
||||||
beq redraw_filelist_last
|
beq redraw_filelist_last
|
||||||
lda dirptr_bank
|
|
||||||
phb
|
|
||||||
pha
|
|
||||||
plb
|
|
||||||
rep #$20 : .al
|
rep #$20 : .al
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
sta @dirent_addr
|
sta @dirent_addr
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
lda (dirptr_addr), y ; load fileinfo bank
|
lda [dirptr_addr], y ; load fileinfo bank
|
||||||
clc
|
clc
|
||||||
adc #$c0 ; add $C0 for memory map
|
adc #$c0 ; add $C0 for memory map
|
||||||
sta @dirent_bank ; store as current bank
|
sta @dirent_bank ; store as current bank
|
||||||
cmp #$c0 ; if bank was 0 -> dirend entry in DB
|
cmp #$c0 ; if bank was 0 -> dirend entry in DB
|
||||||
beq redraw_filelist_dirend ; handle dirend
|
beq redraw_filelist_dirend ; handle dirend
|
||||||
iny
|
iny
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
iny
|
iny
|
||||||
sta @dirent_type
|
sta @dirent_type
|
||||||
plb
|
|
||||||
sty dirptr_idx
|
sty dirptr_idx
|
||||||
jsr print_direntry
|
jsr print_direntry
|
||||||
bra redraw_filelist_loop
|
bra redraw_filelist_loop
|
||||||
redraw_filelist_dirend
|
redraw_filelist_dirend
|
||||||
plb
|
|
||||||
dey ; recover last valid direntry number
|
dey ; recover last valid direntry number
|
||||||
dey ; (we had 2x iny of the direntry pointer above,
|
dey ; (we had 2x iny of the direntry pointer above,
|
||||||
dey ; so account for those too)
|
dey ; so account for those too)
|
||||||
@ -225,15 +219,10 @@ redraw_filelist_dirend
|
|||||||
sta dirend_onscreen
|
sta dirend_onscreen
|
||||||
bra redraw_filelist_out
|
bra redraw_filelist_out
|
||||||
redraw_filelist_last ;check if next offscreen item is end of dir
|
redraw_filelist_last ;check if next offscreen item is end of dir
|
||||||
lda dirptr_bank
|
|
||||||
phb
|
|
||||||
pha
|
|
||||||
plb
|
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
beq redraw_filelist_dirend
|
beq redraw_filelist_dirend
|
||||||
plb
|
|
||||||
redraw_filelist_out
|
redraw_filelist_out
|
||||||
ldx #$0000
|
ldx #$0000
|
||||||
stx dirptr_idx
|
stx dirptr_idx
|
||||||
@ -352,7 +341,7 @@ menu_key_down:
|
|||||||
lda listdisp
|
lda listdisp
|
||||||
dec
|
dec
|
||||||
cmp menu_sel
|
cmp menu_sel
|
||||||
bne +
|
bne down_noscroll
|
||||||
lda #$01
|
lda #$01
|
||||||
sta menu_dirty
|
sta menu_dirty
|
||||||
lda dirend_onscreen
|
lda dirend_onscreen
|
||||||
@ -361,10 +350,13 @@ menu_key_down:
|
|||||||
lda dirptr_addr
|
lda dirptr_addr
|
||||||
clc
|
clc
|
||||||
adc #$04
|
adc #$04
|
||||||
sta dirptr_addr
|
bcc +
|
||||||
|
inc dirptr_bank
|
||||||
|
+ sta dirptr_addr
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
rts
|
rts
|
||||||
+ lda dirend_onscreen
|
down_noscroll
|
||||||
|
lda dirend_onscreen
|
||||||
beq +
|
beq +
|
||||||
lda dirend_idx
|
lda dirend_idx
|
||||||
lsr
|
lsr
|
||||||
@ -380,7 +372,7 @@ down_out
|
|||||||
|
|
||||||
menu_key_up:
|
menu_key_up:
|
||||||
lda menu_sel
|
lda menu_sel
|
||||||
bne +
|
bne up_noscroll
|
||||||
lda #$01
|
lda #$01
|
||||||
sta menu_dirty
|
sta menu_dirty
|
||||||
rep #$20 : .al
|
rep #$20 : .al
|
||||||
@ -389,9 +381,12 @@ menu_key_up:
|
|||||||
beq up_out
|
beq up_out
|
||||||
sec
|
sec
|
||||||
sbc #$04
|
sbc #$04
|
||||||
sta dirptr_addr
|
bcs +
|
||||||
|
dec dirptr_bank
|
||||||
|
+ sta dirptr_addr
|
||||||
bra up_out
|
bra up_out
|
||||||
+ dec
|
up_noscroll
|
||||||
|
dec
|
||||||
sta menu_sel
|
sta menu_sel
|
||||||
up_out
|
up_out
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
@ -480,14 +475,10 @@ select_item:
|
|||||||
asl
|
asl
|
||||||
tay
|
tay
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
lda dirptr_bank
|
|
||||||
phb
|
|
||||||
pha
|
|
||||||
plb
|
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
cmp #$01
|
cmp #$01
|
||||||
beq sel_is_file
|
beq sel_is_file
|
||||||
cmp #$04
|
cmp #$04
|
||||||
@ -497,7 +488,6 @@ select_item:
|
|||||||
cmp #$81
|
cmp #$81
|
||||||
beq sel_is_parent
|
beq sel_is_parent
|
||||||
select_item_cont
|
select_item_cont
|
||||||
plb
|
|
||||||
rts
|
rts
|
||||||
sel_is_file
|
sel_is_file
|
||||||
jsr select_file
|
jsr select_file
|
||||||
@ -513,12 +503,12 @@ select_file:
|
|||||||
; have avr load the rom
|
; have avr load the rom
|
||||||
dey
|
dey
|
||||||
rep #$20 : .al
|
rep #$20 : .al
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
and #$00ff
|
and #$00ff
|
||||||
sta @AVR_PARAM+2
|
sta @AVR_PARAM+2
|
||||||
dey
|
dey
|
||||||
dey
|
dey
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
sta @AVR_PARAM
|
sta @AVR_PARAM
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
lda #$01
|
lda #$01
|
||||||
@ -559,14 +549,14 @@ select_dir:
|
|||||||
; y = direntry ptr
|
; y = direntry ptr
|
||||||
txy
|
txy
|
||||||
dey
|
dey
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
clc
|
clc
|
||||||
adc #$c0
|
adc #$c0
|
||||||
sta @dirent_bank
|
sta @dirent_bank
|
||||||
dey
|
dey
|
||||||
dey
|
dey
|
||||||
rep #$20 : .al
|
rep #$20 : .al
|
||||||
lda (dirptr_addr), y
|
lda [dirptr_addr], y
|
||||||
sta @dirent_addr
|
sta @dirent_addr
|
||||||
tax
|
tax
|
||||||
sep #$20 : .as
|
sep #$20 : .as
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user