141 lines
1.4 KiB
NASM
141 lines
1.4 KiB
NASM
|
; pletter v0.5c msx unpacker
|
||
|
|
||
|
; call unpack with hl pointing to some pletter5 data, and de pointing to the destination.
|
||
|
; changes all registers
|
||
|
|
||
|
; define lengthindata when the original size is written in the pletter data
|
||
|
|
||
|
; define LENGTHINDATA
|
||
|
|
||
|
module pletter
|
||
|
|
||
|
macro GETBIT
|
||
|
add a,a
|
||
|
call z,getbit
|
||
|
endmacro
|
||
|
|
||
|
macro GETBITEXX
|
||
|
add a,a
|
||
|
call z,getbitexx
|
||
|
endmacro
|
||
|
|
||
|
@unpack
|
||
|
|
||
|
ifdef LENGTHINDATA
|
||
|
inc hl
|
||
|
inc hl
|
||
|
endif
|
||
|
|
||
|
ld a,(hl)
|
||
|
inc hl
|
||
|
exx
|
||
|
ld de,0
|
||
|
add a,a
|
||
|
inc a
|
||
|
rl e
|
||
|
add a,a
|
||
|
rl e
|
||
|
add a,a
|
||
|
rl e
|
||
|
rl e
|
||
|
ld hl,modes
|
||
|
add hl,de
|
||
|
ld e,(hl)
|
||
|
ld ixl,e
|
||
|
inc hl
|
||
|
ld e,(hl)
|
||
|
ld ixh,e
|
||
|
ld e,1
|
||
|
exx
|
||
|
ld iy,loop
|
||
|
literal
|
||
|
ldi
|
||
|
loop
|
||
|
GETBIT
|
||
|
jr nc,literal
|
||
|
exx
|
||
|
ld h,d
|
||
|
ld l,e
|
||
|
getlen
|
||
|
GETBITEXX
|
||
|
jr nc,.lenok
|
||
|
.lus
|
||
|
GETBITEXX
|
||
|
adc hl,hl
|
||
|
ret c
|
||
|
GETBITEXX
|
||
|
jr nc,.lenok
|
||
|
GETBITEXX
|
||
|
adc hl,hl
|
||
|
ret c
|
||
|
GETBITEXX
|
||
|
jp c,.lus
|
||
|
.lenok
|
||
|
inc hl
|
||
|
exx
|
||
|
ld c,(hl)
|
||
|
inc hl
|
||
|
ld b,0
|
||
|
bit 7,c
|
||
|
jp z,offsok
|
||
|
jp ix
|
||
|
|
||
|
mode6
|
||
|
GETBIT
|
||
|
rl b
|
||
|
mode5
|
||
|
GETBIT
|
||
|
rl b
|
||
|
mode4
|
||
|
GETBIT
|
||
|
rl b
|
||
|
mode3
|
||
|
GETBIT
|
||
|
rl b
|
||
|
mode2
|
||
|
GETBIT
|
||
|
rl b
|
||
|
GETBIT
|
||
|
jr nc,offsok
|
||
|
or a
|
||
|
inc b
|
||
|
res 7,c
|
||
|
offsok
|
||
|
inc bc
|
||
|
push hl
|
||
|
exx
|
||
|
push hl
|
||
|
exx
|
||
|
ld l,e
|
||
|
ld h,d
|
||
|
sbc hl,bc
|
||
|
pop bc
|
||
|
ldir
|
||
|
pop hl
|
||
|
jp iy
|
||
|
|
||
|
getbit
|
||
|
ld a,(hl)
|
||
|
inc hl
|
||
|
rla
|
||
|
ret
|
||
|
|
||
|
getbitexx
|
||
|
exx
|
||
|
ld a,(hl)
|
||
|
inc hl
|
||
|
exx
|
||
|
rla
|
||
|
ret
|
||
|
|
||
|
modes
|
||
|
word offsok
|
||
|
word mode2
|
||
|
word mode3
|
||
|
word mode4
|
||
|
word mode5
|
||
|
word mode6
|
||
|
|
||
|
endmodule
|
||
|
|
||
|
;eof
|