From cc3a9c4f7e11a363fad3bb1e6b6a660e1d96be71 Mon Sep 17 00:00:00 2001 From: 4am Date: Wed, 27 Mar 2024 19:59:52 -0400 Subject: [PATCH] switch to determinate progress bar during initial decompression, and upgrade to ProDOS 2.4.3 --- res/work.po | Bin 143360 -> 143360 bytes src/exodecrunch.s | 81 +++++++++++++--------------------------------- src/strings/en.a | 2 +- 3 files changed, 24 insertions(+), 59 deletions(-) diff --git a/res/work.po b/res/work.po index b0df7a1cf371ca488a2af37bacc10dcbc817e002..2718f132e29db80e617741a47808b088468baabc 100644 GIT binary patch delta 3725 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 delta 3825 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 L(lex#R^0ht9-|aB diff --git a/src/exodecrunch.s b/src/exodecrunch.s index 55c1e94..5c1a109 100644 --- a/src/exodecrunch.s +++ b/src/exodecrunch.s @@ -66,7 +66,7 @@ EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE = 1 ; ------------------------------------------------------------------- ; optional progress UI !IFNDEF SHOW_PROGRESS_DURING_DECRUNCH { - SHOW_PROGRESS_DURING_DECRUNCH = 0 + !set SHOW_PROGRESS_DURING_DECRUNCH = 0 } ; ------------------------------------------------------------------- ; zero page addresses used @@ -160,23 +160,18 @@ gb_get_hi: decrunch: !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { - lda $FBB3 - cmp #$EA - bne + - lda #$A1 ; use ! instead of | for initial spinner animation - sta progress_char+1 - sta progress_char+5 -+ -; ------------------------------------------------------------------- -; show initial on-screen progress UI -; - ldy #7 -init_progress_loop: - lda progress_char,y - jsr show_one_progress_char - dey - bpl init_progress_loop -done_init_progress_loop: +kExoProgressWidth = 23 ; depends on total size, max 38 + ldx #(kExoProgressWidth+2) + lda #$DF +- sta $0528+(20-(kExoProgressWidth/2))-1, x + sta $05A8+(20-(kExoProgressWidth/2))-1, x + dex + bpl - + lda #$20 + sta $05A8+(20-(kExoProgressWidth/2))-1 + sta $05A8+(20-(kExoProgressWidth/2))+kExoProgressWidth+1 + lda #$A8+(20-(kExoProgressWidth/2)) + sta ExoProgressPtr+1 } ; ------------------------------------------------------------------- ; init zeropage, x and y regs. (12 bytes) @@ -259,25 +254,15 @@ no_hi_decr: sta (zp_dest_lo),y !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { -; periodically update on-screen progress UI - dec progress_counter - bne dont_update_progress_ui - tya - pha - ldy progress_index - 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: + dec ExoProgressCounter + bne + + lda #$20 +ExoProgressPtr + sta $0500 ; SMC lo byte + inc ExoProgressPtr+1 ++ } + } else { literal_start1: jsr get_crunched_byte @@ -473,28 +458,8 @@ tabl_bit: !BYTE $8c, $e2 } !IF SHOW_PROGRESS_DURING_DECRUNCH = 1 { -progress_index: - !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 +ExoProgressCounter + !byte $00 } ; ------------------------------------------------------------------- ; end of decruncher diff --git a/src/strings/en.a b/src/strings/en.a index 2a3d2ac..cb03393 100755 --- a/src/strings/en.a +++ b/src/strings/en.a @@ -387,7 +387,7 @@ StringTableHigh ; must be kept in sync with constants in enid.a .passport !text "Passport ",$00 .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 !text "_________",$00 .bar18