switch to determinate progress bar during initial decompression, and upgrade to ProDOS 2.4.3

This commit is contained in:
4am 2024-03-27 19:59:52 -04:00
parent 6213b948f8
commit cc3a9c4f7e
3 changed files with 24 additions and 59 deletions

Binary file not shown.

View File

@ -66,7 +66,7 @@ EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE = 1
; ------------------------------------------------------------------- ; -------------------------------------------------------------------
; optional progress UI ; optional progress UI
!IFNDEF SHOW_PROGRESS_DURING_DECRUNCH { !IFNDEF SHOW_PROGRESS_DURING_DECRUNCH {
SHOW_PROGRESS_DURING_DECRUNCH = 0 !set SHOW_PROGRESS_DURING_DECRUNCH = 0
} }
; ------------------------------------------------------------------- ; -------------------------------------------------------------------
; zero page addresses used ; zero page addresses used
@ -160,23 +160,18 @@ gb_get_hi:
decrunch: decrunch:
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
lda $FBB3 kExoProgressWidth = 23 ; depends on total size, max 38
cmp #$EA ldx #(kExoProgressWidth+2)
bne + lda #$DF
lda #$A1 ; use ! instead of | for initial spinner animation - sta $0528+(20-(kExoProgressWidth/2))-1, x
sta progress_char+1 sta $05A8+(20-(kExoProgressWidth/2))-1, x
sta progress_char+5 dex
+ bpl -
; ------------------------------------------------------------------- lda #$20
; show initial on-screen progress UI sta $05A8+(20-(kExoProgressWidth/2))-1
; sta $05A8+(20-(kExoProgressWidth/2))+kExoProgressWidth+1
ldy #7 lda #$A8+(20-(kExoProgressWidth/2))
init_progress_loop: sta ExoProgressPtr+1
lda progress_char,y
jsr show_one_progress_char
dey
bpl init_progress_loop
done_init_progress_loop:
} }
; ------------------------------------------------------------------- ; -------------------------------------------------------------------
; init zeropage, x and y regs. (12 bytes) ; init zeropage, x and y regs. (12 bytes)
@ -259,25 +254,15 @@ no_hi_decr:
sta (zp_dest_lo),y sta (zp_dest_lo),y
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
; periodically update on-screen progress UI dec ExoProgressCounter
dec progress_counter bne +
bne dont_update_progress_ui lda #$20
tya ExoProgressPtr
pha sta $0500 ; SMC lo byte
ldy progress_index inc ExoProgressPtr+1
lda progress_char,y +
jsr show_one_progress_char
inc progress_index
lda progress_index
and #$07
sta progress_index
tay
lda #$20
jsr show_one_progress_char
pla
tay
dont_update_progress_ui:
} }
} else { } else {
literal_start1: literal_start1:
jsr get_crunched_byte jsr get_crunched_byte
@ -473,28 +458,8 @@ tabl_bit:
!BYTE $8c, $e2 !BYTE $8c, $e2
} }
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
progress_index: ExoProgressCounter
!BYTE $00 !byte $00
progress_counter:
!BYTE $00
progress_char:
!BYTE $DC, $FC, $AF, $AD, $DC, $FC, $AF, $AD
progress_address_lo:
!BYTE $BB, $BC, $BD, $3D, $BD, $BC, $BB, $3B
progress_address_hi:
!BYTE $05, $05, $05, $06, $06, $06, $06, $06
show_one_progress_char:
; in: A=ASCII char to show
; y=0..7 index into progress_address_lo/hi array
pha
lda progress_address_lo,y
sta progress_STA+1
lda progress_address_hi,y
sta progress_STA+2
pla
progress_STA:
sta $FFFF
rts
} }
; ------------------------------------------------------------------- ; -------------------------------------------------------------------
; end of decruncher ; end of decruncher

View File

@ -387,7 +387,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a
.passport .passport
!text "Passport ",$00 !text "Passport ",$00
.header .header
!text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2023-12-07",$00 !text "@",s_passport,"by 4am@",s_space7,"@",s_space7," 2024-03-27",$00
.bar9 .bar9
!text "_________",$00 !text "_________",$00
.bar18 .bar18