home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Brotikasten
/
BROTCD01.iso
/
exoten
/
msx
/
accpack.pma
/
ACCPACK.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1993-05-26
|
5KB
|
204 lines
{$R-,I+}
PROGRAM ACCPACK30;
VAR
INFILE:FILE;
OUTFILE:FILE;
BUF1:ARRAY [1..4096] OF BYTE;
INNAME,OUTNAME:STRING[12];
A,B,C,H,L:INTEGER;
OK:BOOLEAN;
PROCEDURE EMPAQUETAR;
BEGIN
OK:=TRUE;
OUTNAME:=PARAMSTR(2);
ASSIGN(OUTFILE,OUTNAME+'.ACC');
{$I-}
RESET(OUTFILE);
{$I+}
OK:=(IORESULT=0);
IF NOT OK THEN REWRITE(OUTFILE);
B:=FILESIZE(OUTFILE);
SEEK(OUTFILE,B);
WRITELN;
WRITELN('ACCPACK v. 3.0 (c) 1990 by Associacio Catalunya Crackers');
FOR C:=3 TO PARAMCOUNT DO
BEGIN
INNAME:=PARAMSTR(C);
ASSIGN(INFILE,INNAME);
OK:=TRUE;
{$I-}
RESET(INFILE);
{$I+}
OK:=(IORESULT=0);
IF NOT OK THEN
BEGIN WRITELN;WRITELN('File no exist .......!!') END
ELSE
BEGIN
FOR A:=1 TO 4 DO
BUF1[A]:=255-A;
BUF1[5]:=LENGTH(INNAME);
FOR A:=6 TO (LENGTH(INNAME)+5) DO
BUF1[A]:=ORD(INNAME[A-5]);
A:=FILESIZE(INFILE);
H:=A DIV 256;
L:=A MOD 256;
A:=L+(H*256);
BUF1[50]:=L;BUF1[51]:=H;
WRITELN;
WRITE('Add. ',INNAME,'.. ',A,' BLOCKS ');
BLOCKWRITE(OUTFILE,BUF1,1);
WHILE NOT EOF(INFILE) DO
BEGIN
IF (FILESIZE(INFILE)-FILEPOS(INFILE))>31 THEN
BEGIN
BLOCKREAD(INFILE,BUF1,32);
BLOCKWRITE(OUTFILE,BUF1,32);
END
ELSE
IF (FILESIZE(INFILE)-FILEPOS(INFILE))>15 THEN
BEGIN
BLOCKREAD(INFILE,BUF1,16);
BLOCKWRITE(OUTFILE,BUF1,16);
END
ELSE
IF (FILESIZE(INFILE)-FILEPOS(INFILE))>7 THEN
BEGIN
BLOCKREAD(INFILE,BUF1,8);
BLOCKWRITE(OUTFILE,BUF1,8);
END
ELSE
IF (FILESIZE(INFILE)-FILEPOS(INFILE))>3 THEN
BEGIN
BLOCKREAD(INFILE,BUF1,4);
BLOCKWRITE(OUTFILE,BUF1,4);
END
ELSE
IF (FILESIZE(INFILE)-FILEPOS(INFILE))>1 THEN
BEGIN
BLOCKREAD(INFILE,BUF1,2);
BLOCKWRITE(OUTFILE,BUF1,2);
END
ELSE
BEGIN
BLOCKREAD(INFILE,BUF1,1);
BLOCKWRITE(OUTFILE,BUF1,1);
END;
WRITE('*');
END;
END;
CLOSE(INFILE);
END;
CLOSE(OUTFILE);
END;
PROCEDURE DESEMPAQUETAR;
BEGIN
INNAME:=PARAMSTR(2);
ASSIGN(INFILE,INNAME+'.ACC');
{$I-}
RESET(INFILE);
{$I+}
OK:=(IORESULT=0);
IF NOT OK THEN BEGIN WRITELN;WRITELN('Archive no exist ......!!') END
ELSE
BEGIN
WRITELN;
WRITELN('ACCPACK v. 3.0 (c) 1990 by Associacio Catalunya Crackers');
REPEAT
writeln;
OUTNAME:='';
BLOCKREAD(INFILE,BUF1,1);
FOR A:=6 TO BUF1[5]+5 DO
OUTNAME:=OUTNAME+CHR(BUF1[A]);
ASSIGN(OUTFILE,OUTNAME);
REWRITE(OUTFILE);
L:=BUF1[50];H:=BUF1[51];
B:=L+(H*256);
WRITE('Restoring ',OUTNAME,' .. ',B,' BLOCKS ');
REPEAT
IF B>31 THEN
BEGIN
B:=B-32;
BLOCKREAD(INFILE,BUF1,32);
BLOCKWRITE(OUTFILE,BUF1,32);
END
ELSE
IF B>15 THEN
BEGIN
B:=B-16;
BLOCKREAD(INFILE,BUF1,16);
BLOCKWRITE(OUTFILE,BUF1,16);
END
ELSE
IF B>7 THEN
BEGIN
B:=B-8;
BLOCKREAD(INFILE,BUF1,8);
BLOCKWRITE(OUTFILE,BUF1,8);
END
ELSE
IF B>3 THEN
BEGIN
B:=B-4;
BLOCKREAD(INFILE,BUF1,4);
BLOCKWRITE(OUTFILE,BUF1,4);
END
ELSE
IF B>1 THEN
BEGIN
B:=B-2;
BLOCKREAD(INFILE,BUF1,2);
BLOCKWRITE(OUTFILE,BUF1,2);
END
ELSE
BEGIN
B:=B-1;
BLOCKREAD(INFILE,BUF1,1);
BLOCKWRITE(OUTFILE,BUF1,1);
END;
WRITE('*');
UNTIL B=0;
CLOSE(OUTFILE);
UNTIL(EOF(INFILE));
CLOSE(INFILE);
END;
END;
PROCEDURE NOPARAM;
BEGIN
WRITELN;WRITELN;
WRITELN('ACCPACK Ver. 3.0 (c) 1990 by A.C.C.');
writeln('Use: ACCPACK <Option> <Archive> <Filename> [<Filename>]');
writeln;
writeln('Options:');
writeln(' -A ............... Add files in archive');
writeln(' -E ............... Extract all files');
writeln;writeln;
end;
(* --------------------- Start of the program ----------------- *)
BEGIN
OK:=FALSE;
if paramcount >0 then
if (paramstr(1)='-A') or (paramstr(1)='-a') or (paramstr(1)='-E') or
(paramstr(1)='-e') then OK:=true;
if not OK then NOPARAM
else
begin
if (paramstr(1)='-A') or (paramstr(1)='-a') then EMPAQUETAR;
if (paramstr(1)='-E') or (paramstr(1)='-e') then DESEMPAQUETAR;
end;
END.