diff --git a/asm_routines/lz4_decode.s b/asm_routines/lz4_decode.s index c8a58afe..65484095 100644 --- a/asm_routines/lz4_decode.s +++ b/asm_routines/lz4_decode.s @@ -30,36 +30,34 @@ ; 4 added to it. As with the literal length, if it is 15 then ; you read a byte and add (and if that byte is 255, keep adding) -src EQU $FC -dst EQU $02 -end EQU $04 -count EQU $06 -delta EQU $08 +;LZ4_SRC EQU $00 +;LZ4_DST EQU $02 +;LZ4_END EQU $04 +;COUNT EQU $06 +;DELTA EQU $08 orgoff EQU $6000 ; offset of first unpacked byte ;====================== ; LZ4 decode ;====================== - ; input buffer in INH:INL + ; input buffer in LZ4_SRC ; output buffer hardcoded still ; size in ENDH:ENDL lz4_decode: - lda INL ; packed data offset -; sta src + lda LZ4_SRC ; packed data offset clc - adc end - sta end - lda INH -; sta src+1 - adc end+1 - sta end+1 + adc LZ4_END + sta LZ4_END + lda LZ4_SRC+1 + adc LZ4_END+1 + sta LZ4_END+1 lda #>orgoff ; original unpacked data offset - sta dst+1 + sta LZ4_DST+1 lda #(LZ4_BUFFER+3) - sta INH + sta LZ4_SRC+1 lda #<(LZ4_BUFFER+3) - sta INL + sta LZ4_SRC - lda (INL),Y ; get header skip + lda (LZ4_SRC),Y ; get header skip clc - adc INL - sta INL - lda INH + adc LZ4_SRC + sta LZ4_SRC + lda LZ4_SRC+1 adc #0 - sta INH + sta LZ4_SRC+1 - lda (INL),Y - sta SIZEL + lda (LZ4_SRC),Y + sta LZ4_END iny - lda (INL),Y - sta SIZEH + lda (LZ4_SRC),Y + sta LZ4_END+1 lda #2 clc - adc INL - sta INL - lda INH + adc LZ4_SRC + sta LZ4_SRC + lda LZ4_SRC+1 adc #0 - sta INH + sta LZ4_SRC+1 jsr lz4_decode diff --git a/chiptune_player/zp.inc b/chiptune_player/zp.inc index 81b20c0d..4ec04f7f 100644 --- a/chiptune_player/zp.inc +++ b/chiptune_player/zp.inc @@ -1,5 +1,12 @@ .define EQU = +LZ4_SRC EQU $00 +LZ4_DST EQU $02 +LZ4_END EQU $04 +COUNT EQU $06 +DELTA EQU $08 + + ;; Zero page monitor routines addresses WNDLFT EQU $20