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а. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября