ZX7 decompressor. (last update: 12/10/21)
CODE: xxl
ENTRY:
mwa #packed_data ZX7_INPUT
mwa #destination ZX7_OUTPUT
jsr unZX7
packed_data
ins 'conan.zx7'
destination equ $A150
unZX7 lda #$80
sta token
copyby jsr GET_BYTE
jsr PUT_BYTE
mainlo jsr getbits
bcc copyby
lda #$01
sta lenL
lenval jsr getbits
rol lenL
bcs _ret ; koniec
jsr getbits
bcc lenval
jsr GET_BYTE
sta offsL
lda ZX7_OUTPUT
clc ; !!!! C=0
sbc #$ff
offsL equ *-1
sta copysrc
lda ZX7_OUTPUT+1
sbc #$00
sta copysrc+1
cop0 lda $ffff
copysrc equ *-2
inw copysrc
jsr PUT_BYTE
dec lenL
bne cop0
jmp mainlo
getbits asl token ; bez c
bne _ret
jsr GET_BYTE
rol @ ; c
sta token
_ret rts
token .HE 00
lenL .HE 00
GET_BYTE lda $ffff
ZX7_INPUT equ *-2
inw ZX7_INPUT
rts
PUT_BYTE sta $ffff
ZX7_OUTPUT equ *-2
inw ZX7_OUTPUT
rts
zobacz: https://github.com/antoniovillena/zx7mini
