From 54b0cff2fd86f5effb6b775ae4bd8f152663f8eb Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Thu, 25 Apr 2019 21:52:09 +0930 Subject: [PATCH] fix some bugs with unpacking literal chars --- c64/basic/pack_word.s | 1 - c64/basic/print_packed_message.s | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/c64/basic/pack_word.s b/c64/basic/pack_word.s index c1b9bf93..83559a9f 100644 --- a/c64/basic/pack_word.s +++ b/c64/basic/pack_word.s @@ -107,7 +107,6 @@ end_string_if_required: end_string: ;; Write end of string sequence if required - inc $d020 lda #$00 jsr write_unpacked_char rts diff --git a/c64/basic/print_packed_message.s b/c64/basic/print_packed_message.s index 1560f069..a215ad5b 100644 --- a/c64/basic/print_packed_message.s +++ b/c64/basic/print_packed_message.s @@ -115,8 +115,10 @@ next_packed_word_char: lda (temp_string_ptr),y cmp #$00 beq end_of_packed_word + cmp #$fe + beq last_literal and #$f0 - beq end_of_packed_word + beq end_of_packed_word ;; Check if it is an uncommon char lda (temp_string_ptr),y @@ -189,7 +191,15 @@ end_of_packed_word: ;; Hit end of packed data rts -next_is_literal_char: +last_literal: + jsr unpack_literal_char + rts + +next_is_literal_char: + jsr unpack_literal_char + jmp ready_for_next_char + +unpack_literal_char: ;; Output the literal char, and ready for next char iny tya @@ -198,7 +208,7 @@ next_is_literal_char: jsr $ffd2 pla tay - jmp ready_for_next_char + rts is_uncommon_char: ;; Lower nybl has offset into low-frequency part of the table