mirror of
https://github.com/emmanuel-marty/lzsa.git
synced 2024-12-22 16:30:01 +00:00
Rearrange match offset code to save 2 bytes in 6809 LZSA depacker
This commit is contained in:
parent
7f0316b81c
commit
b5b8ca556a
@ -1,4 +1,4 @@
|
|||||||
; unlzsa1.s - 6809 decompression routine for raw LZSA1 - 111 bytes
|
; unlzsa1.s - 6809 decompression routine for raw LZSA1 - 109 bytes
|
||||||
; compress with lzsa -r <original_file> <compressed_file>
|
; compress with lzsa -r <original_file> <compressed_file>
|
||||||
;
|
;
|
||||||
; in: x = start of compressed data
|
; in: x = start of compressed data
|
||||||
@ -25,8 +25,7 @@
|
|||||||
|
|
||||||
decompress_lzsa1 equ lz1token
|
decompress_lzsa1 equ lz1token
|
||||||
|
|
||||||
lz1bigof ldb ,x+ ; O set: load long 16 bit (negative, signed) offset
|
lz1bigof lda ,x+ ; O set: load MSB 16-bit (negative, signed) offest
|
||||||
lda ,x+ ; (little endian)
|
|
||||||
lz1gotof leau d,y ; put backreference start address in U (dst+offset)
|
lz1gotof leau d,y ; put backreference start address in U (dst+offset)
|
||||||
|
|
||||||
puls b ; restore token
|
puls b ; restore token
|
||||||
@ -97,9 +96,9 @@ lz1cpylt lda ,u+ ; copy literal byte
|
|||||||
bne lz1cpylt ; loop until all literal bytes are copied
|
bne lz1cpylt ; loop until all literal bytes are copied
|
||||||
tfr u,x
|
tfr u,x
|
||||||
|
|
||||||
lz1nolt ldb ,s ; get token again, don't pop it from the stack
|
lz1nolt ldb ,x+ ; load either 8-bit or LSB 16-bit offset (negative, signed)
|
||||||
|
lda ,s ; get token again, don't pop it from the stack
|
||||||
bmi lz1bigof ; test O bit (small or large offset)
|
bmi lz1bigof ; test O bit (small or large offset)
|
||||||
|
|
||||||
ldb ,x+ ; O clear: load 8 bit (negative, signed) offset
|
|
||||||
lda #$ff ; set high 8 bits
|
lda #$ff ; set high 8 bits
|
||||||
bra lz1gotof
|
bra lz1gotof
|
||||||
|
Loading…
Reference in New Issue
Block a user