ZXNet эхоконференция «code.zx»


тема: гм.



от: Mihail Zharov
кому: All
дата: 01 Jan 1998


Приветствую тебя, All!

=== Begin file DEHRUST@.C ===
;Распаковщик файлов, упакованных методом
;Hrust1: (программы Hrust1.0, Hrust1.1)
;
;Hе использует регистр SP, поэтому рас-
;паковку можно проводить и при включен-
;ных прерываниях. Длина #121(289) байт.
; !!!Hеперемещаемый!!!
;
;Можно использовать "стандартный", пере-
;мещаемый распаковщик длиной 256 байт.
;Однако он использует регистр SP.
;
;формат файла:
;+0(2):"HR" - признак принадлежности
;+2(2) - длина исходного файла
;+4(2) - длина упакованного файла
;
;Для распаковки файла надо задать в:
;HL - откуда распаковывать
;DE - куда распаковывать
;и вызвать депакер (CALL DEHRUST).
;Области откуда/куда распаковывать могут
;пересекаться, депакер это учитывает.
;Если эти области не пересекаются, то
;распаковать файл можно несколько раз.
;Больше депакер не использует никаких
;областей (исключая 6 байт в стеке).
;
;Example:
;1) LD HL,#8000:LD DE,#8000:CALL DEHRUST
;2) LD HL,#C000:LD DE,#8000:CALL DEHRUST
;
; Есть вопросы ?
;
;**************************************
;* E-mail: dp@fmf.gasu.gorny.ru *
;* tel:(38822) 244-21. Дмитрий. *
;* Россия. г.Горно - Алтайск. *
;* 01.03.97 - 28.12.98 *
;**************************************


DEHRUST PUSH DE
PUSH HL
INC HL
INC HL
LD C,(HL)
INC HL
LD B,(HL)
INC HL
DEC BC
EX DE,HL
ADD HL,BC
EX DE,HL
LD C,(HL)
INC HL
LD B,(HL)
DEC BC
POP HL
ADD HL,BC
SBC HL,DE
ADD HL,DE
JR C,LL4019
LD D,H
LD E,L
LL4019 LDDR
EX DE,HL
POP DE
LD C,#0C
ADD HL,BC
PUSH HL
POP IX
LD A,#03
LL4025 DEC HL
LD B,(HL)
DEC HL
LD C,(HL)
PUSH BC
DEC A
JR NZ,LL4025
LD B,A
EXX
LD D,#BF
LD C,#10
CALL LL4115
LL4036 LD A,(IX+#00)
INC IX
EXX
LL403C LD (DE),A
INC DE
LL403E EXX
LL403F ADD HL,HL
DJNZ LL4045
CALL LL4115
LL4045 JR C,LL4036
LD E,#01
LL4049 LD A,#80
LL404B ADD HL,HL
DJNZ LL4051
CALL LL4115
LL4051 RLA
JR C,LL404B
CP #03
JR C,LL405D
ADD A,E
LD E,A
XOR C
JR NZ,LL4049
LL405D ADD A,E
CP #04
JR Z,LL40C4
ADC A,#FF
CP #02
EXX
LL4067 LD C,A
LL4068 EXX
LD A,#BF
JR C,LL4082
LL406D ADD HL,HL
DJNZ LL4073
CALL LL4115
LL4073 RLA
JR C,LL406D
JR Z,LL407D
INC A
ADD A,D
JR NC,LL4084
SUB D
LL407D INC A
JR NZ,LL408D
LD A,#EF
LL4082 RRCA
CP A
LL4084 ADD HL,HL
DJNZ LL408A
CALL LL4115
LL408A RLA
JR C,LL4084
LL408D EXX
LD H,#FF
JR Z,LL409B
LD H,A
INC A
LD A,(IX+#00)
INC IX
JR Z,LL40A6
LL409B LD L,A
ADD HL,DE
LDIR
LL409F JR LL403E
LL40A1 EXX
RRC D
JR LL403F
LL40A6 CP #E0
JR C,LL409B
RLCA
XOR C
INC A
JR Z,LL40A1
SUB #10
LL40B1 LD L,A
LD C,A
LD H,#FF
ADD HL,DE
LDI
LD A,(IX+#00)
INC IX
LD (DE),A
INC HL
INC DE
LD A,(HL)
JP LL403C
LL40C4 LD A,#80
LL40C6 ADD HL,HL
DJNZ LL40CC
CALL LL4115
LL40CC ADC A,A
JR NZ,LL40F3
JR C,LL40C6
LD A,#FC
JR LL40F6
LL40D5 LD B,A
LD C,(IX+#00)
INC IX
CCF
JR LL4068
LL40DE CP #0F
JR C,LL40D5
JR NZ,LL4067
LD B,#03
EX DE,HL
LL40E7 POP DE
LD (HL),E
INC HL
LD (HL),D
INC HL
DJNZ LL40E7
LD HL,#2758
EXX
RET
LL40F3 SBC A,A
LD A,#EF
LL40F6 ADD HL,HL
DJNZ LL40FC
CALL LL4115
LL40FC RLA
JR C,LL40F6
EXX
JR NZ,LL40B1
BIT 7,A
JR Z,LL40DE
SUB #EA
ADD A,A
LD B,A
LL410A LD A,(IX+#00)
INC IX
LD (DE),A
INC DE
DJNZ LL410A
JR LL409F
LL4115 LD B,C
LD L,(IX+#00)
INC IX
LD H,(IX+#00)
INC IX
RET
LCODE EQU $-DEHRUST
=== End file DEHRUST@.C ===

Так же, на всякий случай:

=== Cut ===
В версии 1.0 упаковщика данной програм-
мы были обнаружены 2 ошибки!

1. Если в конце файла записаны байты:
ABCXXXXX, и в последних 88 байтах файла
есть последовательность байт: AXC, где X
- любой байт, то при распаковке файл мо-
жет оказаться на 1 байт длиннее и послед-
ние 5 байт могут быть неверны.

2. В режиме 128 кб. файлы длиной более
#3000 байт упаковываются неверно и HRUST
сбрасывается, если одна из частей файла
длиной #2000, сжалась до #100 и менее
байт.(Hапример в файле длиной 16кб подряд
идут 8кб нулей).
=== Cut ===

Вообще v1.0 плохо общалась с кучей нулей.

Сам HRUST v1.1 юючить?

Счастливо. Михаил.




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

Похожие статьи:
Юмор - Законы Мерфи для рыболовов.
Мозаика - Комментари к журналу "Оберон 2". "Страна Мифов" для 128 ?! О развитии "ZX-Winword v1.3".
НА-ЧАЛО - Поздрaвляю с выходоm нaшeй гaзeты всeх, кто обрaдовaлся eё выходу, кто eю зaинтeрeсовaлся...

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