Spectrum.EXE/Docs/FORMATS/info_guide/xlpz
Anatoliy Belyanskiy bd2abb6229 Initial commit
2023-06-15 02:20:40 +10:00

114 lines
2.3 KiB
Plaintext

Äåêîìïðåññîð Ìåäíîíîãîâà, èñïîëüçîâàâøèéñÿ, ïî-âèäèìîìó, â "׸ð-
íîì Âîðîíå", ëþáîïûòåí òåì,÷òî áèòîâûé ïîòîê â åãî ôîðìàòå îòñó-
òñòâóåò - íåñìîòðÿ íà îñíîâàííîå íà LZ ñæàòèå. Çà ñ÷¸ò ýòîãî ïî-
ëó÷åí íåêîòîðûé âûèãðûø â ñêîðîñòè è ïðîèãðûø â ïëîòíîñòè.
 òåêñòå êîììåíòàðèè: æ¸ëòûå - àâòîðñêèå, çåë¸íûå - ìîè.
;Äåêîìïðåññîð äëÿ v 3.01
;HL-îòêóäà DE-êóäà
;DLPCB DEFM "v301"
DELPZ PUSH DE
LD DE,DLPCB
LD BC,4
LDIR
POP DE
xpD0 LD A,(HL)
SRL A
JR NC,xpD1
CALL xpSUB ;short copy
RRA ;%AAAlenB1
RL B ; ^^^nopacked
AND 7
xpM2 JR NZ,xpNex ;len<=9
LD A,(HL) ;len>9
INC HL
xpNex LD C,(HL) ;disp (ñ ó÷¸òîì B)
INC HL
PUSH HL
LD H,D
LD L,E
SBC HL,BC
LD B,0
LD C,A
xpM1 INC BC
INC BC ;>=3
LDIR
POP HL
EX AF,AF'
JR Z,xpD0
JR NZ,xpDRR ;nocompr 1..7
xpD1 RRA
JR C,xpZ1
RRA
JR C,xpZ2
JR Z,xpDEND ;%xxxxx000
INC HL
xpDRR LD B,A ;nocompr 1..31
xpDL0 LD A,(HL)
INC HL
XOR (HL)
LD (DE),A
INC DE
DJNZ xpDL0
JR xpD0
xpZ2 SRL A ;%xxxxx100 ;repeat
JR C,xpZ2L
LD C,A
XOR A
EX AF,AF'
xpZ22 INC HL
PUSH HL
LD H,D
LD L,E
DEC HL
JR xpM1
xpZ2L CALL xpSUB ;%xxxX1100
RRA ; ^
RL B ;0/1
LD C,(HL)
JR xpZ22
xpZ1 SRL A ;%xxxxxx10
JR NC,xpTWO
LD C,A ;%xxxxx110 ;long copy
INC HL
LD A,(HL)
AND #1F
LD B,A
LD A,C
CALL xpSUB
OR A
JR xpM2
xpTWO INC A ;äâà áàéòà %xxxxx010
LD C,A ;=1..32
INC HL
PUSH HL
LD H,D
LD L,E
SBC HL,BC
LD C,2
LDIR
POP HL
JR xpD0
xpDEND LD HL,DLPCB ;%xxxxx000
LD C,4
LDIR
RET
xpSUB EX AF,AF' ;ïîìåñòèòü 3 ñò.áèòà òåêóùåãî áàéòà â A'
LD A,(HL)
RLCA
RLCA
RLCA
AND 7
EX AF,AF'
INC HL
RET