Now proceed to the consideration of accelerated DECRUNCHERa
to DSQ. To use it you
need to pack in DSQ
the file and write the uncompressed file on disk without
DECRUNCHERa by answering NO to the question "INCLUDE DECRUNCHER
(Y / N)?". There you will be asked a few more
questions for which answers are not
have no value (bug
DSQ).
Here it is necessary to stipulate a
moment, which can lead to
fatal consequences: the starting address of packed files
(ORG in the following program) should be several
bytes lower than address in which to unpack the original file.
In DECRUNCHER (the first three
line) must be replaced
the following values:
- In the first row (DATLEN) to record the length of the packed
file, which you kept the DSQ.
- The second (STRFIL) - start address of the original file
ie address to which you want
raspakovt file.
- In the third line (ENDFIL) must enter a last byte of the
source file, which is calculated by adding the starting address
and length, minus 1.
Also, if necessary,
instead of the last command RET
You can put JP # xxxx for
Startup after unpacking.
For example, to unpack the OSD files packed DSQ
2048 bytes, first line
you need to put 2048 in the second - 16384, and the third line -
16384 +6912-1 = # 5AFF (23,295).
But, in fact, the text
most DECRUNCHERa:
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 1923
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, 1923
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 - the name of the packed
a DSQ file recorded without
DECRUNCHERa.
*