Impulse #02
31 декабря 1997

Программистам - Ускоренный Decruncher к паковщику Data-Squeezer v4.x.



   Теперь приступлю к рассмотре-
нию  ускоренного  DECRUNCHERа  к
DSQ.  Для  его использования Вам
необходимо   запаковать   в  DSQ
необходимый файл  и записать за-
пакованный   файл  на  диск  без
DECRUNCHERа,  ответив NO на воп-
рос "INCLUDE DECRUNCHER (Y/N)?".
Там  Вам  зададут  еще несколько
вопросов,  ответы  на которые не
имеют  никакого  значения  (глюк
DSQ).

   Тут необходимо оговорить один
момент, который может привести к
фатальным  последствиям: старто-
вый  адрес  запакованного  файла
(ORG  в нижеприведенной програм-
ме)  должен  быть  на  несколько
байтов  ниже, чем адрес, в кото-
рый будет распаковываться исход-
ный файл.

   В   DECRUNCHER   (первые  три
строки)   необходимо  подставить
следующие значения:

 - В  первую строку (DATLEN) за-
писать  длину запакованного фай-
ла, который Вам сохранил DSQ.

- Во  вторую (STRFIL) - старто-
вый адрес первоначального файла,
т.е. адрес, в который необходимо
распаковть файл.

 - В третью строку (ENDFIL) нуж-
но вписать адрес последнего бай-
та исходного файла, который рас-
читывается  путем сложения стар-
тового адреса и длины, минус 1.


   Также,   при   необходимости,
вместо   последней  команды  RET
можно   поставить  JP #xxxx  для
автозапуска после распаковки.


   К примеру, для распаковки эк-
ранного файла, запакованного DSQ
в  2048  байт,  в  первую строку
нужно  поставить 2048,  во  вто-
рую - 16384, а в третью строку -
16384+6912-1=#5AFF(23295).

   А  вот,  собственно,  и текст
самого DECRUNCHERа:


DATLEN  EQU     2048
STRFIL  EQU     16384
ENDFIL  EQU     23295

        ORG     xx-nn   ; (!!!)
START   LD      DE,16384
        LD      HL,DECR
        PUSH    DE
        LD      BC,FL2-FL1
        LDIR
        LD      DE,START
        LD      HL,DATA
        LD      BC,DATLEN
        RET
DECR
FL1     LDIR
        LD      BC,264
        EX      DE,HL
        DEC     HL
        EXX
        PUSH    HL
        LD      DE,ENDFIL
DR5     LD      HL,1
        EXX
        DJNZ    DR20
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR20    RL      E
        EXX
        JR      NC,DR1
        LD      B,L
        INC     L
        EXX
        DJNZ    DR21
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR21    RL      E
        EXX
        JR      C,DR6
        INC     B
        LD      L,4
        EXX
        DJNZ    DR22
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR22    RL      E
        EXX
        JR      C,DR6
        EXX
        DJNZ    DR23
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR23    RL      E
        EXX
        JR      NC,DR7
        LD      B,L
        XOR     A
DR24    EXX
        DJNZ    DR25
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR25    RL      E
        EXX
        RLA
        DJNZ    DR24
        ADD     A,8
        LD      L,A
        CP      23
        JR      C,DR8
        LD      B,5
        XOR     A
DR35    EXX
        DJNZ    DR34
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR34    RL      E
        EXX
        RLA
        DJNZ    DR35
        ADD     A,14
        LD      L,A
DR1     LD      B,8
        XOR     A
DR26    EXX
        DJNZ    DR27
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR27    RL      E
        EXX
        RLA
        DJNZ    DR26
        LD      (DE),A
        DEC     DE
        DEC     L
        JR      NZ,DR1
        JR      DR9
HEDGE   JR      DR5
DR7     LD      L,23
DR2     LD      B,8
DR6     XOR     A
        LD      C,A
DR29    EXX
        DJNZ    DR28
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR28    RL      E
        EXX
        RL      C
        RLA
        DJNZ    DR29
        LD      B,A
        LD      A,C
        ADD     HL,BC
        INC     A
        JR      Z,DR2
DR8     PUSH    HL
        LD      HL,33
        EXX
        DJNZ    DR30
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR30    RL      E
        EXX
        JR      C,DR10
        LD      B,9
        ADD     HL,DE
        EXX
        DJNZ    DR31
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR31    RL      E
        EXX
        JR      NC,DR11
        LD      B,5
        LD      L,E
        LD      H,D
        INC     HL
        JR      DR11
DR10    LD      B,11
        LD      H,2
        ADD     HL,DE
DR11    XOR     A
        LD      C,A
DR32    EXX
        DJNZ    DR33
        LD      B,C
        LD      E,(HL)
        DEC     HL
DR33    RL      E
        EXX
        RL      C
        RLA
        DJNZ    DR32
        LD      B,A
        LD      A,C
        ADD     HL,BC
        POP     BC
        LDDR
DR9     LD      HL,STRFIL-1
        SBC     HL,DE
        JR      C,HEDGE
        POP     HL
        EXX
        RET
FL2
DATA    INSERT  "NAMEDATA"

   NAMEDATA - имя  запакованного
в  DSQ  файла,  записанного  без
DECRUNCHERа.


             * * *



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

Вступление - Новая оболочка у газеты.

Графики BBS - Графики работы BBS.

Бутылка канифоли - Контроллер BZ128 для компютер "Байт".

Программистам - Быстрая процедура вычерчивания окружности.

Программистам - Ускоренный Decruncher к паковщику Data-Squeezer v4.x.

Программистам - Корректная обработка дисковых ошибок, возникающих при обращении к TR-DOS через #3D13.

Сюжет - Новелла к игре "Криминальное аббтство" (La abadia).

AMIGA4EVER - Об Амижной сцене.

Рассказ - Рассказ "Новые приключения Винни Пуха" (глава 3,4).

Реклама - Реклама и объявления.

Заключение - Заключение.


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

Похожие статьи:
Экзамен - Вопрос к игре "ERIK THE VIKING".
О том, о ком - решил поведать Вам о некоторой личности, которая скрывается под оболочкой " Чиж и C' ".
B.B.S. Новости - О работе B.B.S.'ок.

В этот день...   16 декабря