ACNews #18
08 мая 2003

Docs - Декомпрессор Медноногова основанный на LZ сжатие.

<b>Docs</b> - Декомпрессор Медноногова основанный на LZ сжатие.
     ▄▄▄  ▄▄▄▄ ▄▄▄▄ ▄▄▄▄
■▄░  ▓  ▓ ▓  ▓ ▓  ▀ ▓▄▄▄ ▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░ ■▄░
  ■▀ ░▄▄▒ ░▄▄░ ░▄▄░ ▄▄▄░  ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀░ ■▀

Декомпрессор Медноногова, использовавшийся, по-видимому, в "Чёр-
ном Вороне", любопытен тем,что битовый поток в его формате отсу-
тствует - несмотря на основанное на 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

----------------------------------------------------------------
А знаете ли вы, что...

По объёму 5,25" и 3,5" дискеты занимают примерно одинаковое про-
странство - 27,5 кубических сантиметров? Размеры первого носите-
ля, впрочем, завышены (на  самом деле он не квадратный и на нес-
колько  миллимметров  меньше). У второго же - несколько занижены
в одном из измерений (на самом деле 90 x 94 x 3,25 мм).



Другие статьи номера:

News - вернулись Shaitan, Valera Selev и Nuts!

Мысли - ДЕВЯТОГО МАЯ - день Победы, а ВАС ЖДУТ В ВОЕНКОМАТАХ ГОРОДА!

Docs - Декомпрессор Медноногова основанный на LZ сжатие.

ACEdit - Список Заслуженных Пользователей AC Edit.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Part 7 - Technical forum.
Supplement - краткое описание приложения к газете.
Приложение - Presentation, Wanted.
Рабочий стол - General Sound AY Emulator v1.0
От авторов - начиная с 3-го номера, положение с графикой и музыкой должно кардинальным образом измениться. K нашей группе присоединились 2 художника и композитор.

В этот день...   21 ноября