87 lines
4.2 KiB
Plaintext
87 lines
4.2 KiB
Plaintext
4DECOMP V1.0 (c) 1993 by Akisoft, Vienna
|
|
|
|
4DOSs New Version 5.0 came up right now! It has a lot of new features,
|
|
including BATCOMP.EXE, also from JP Software, which is assumed to compress
|
|
.BTM-Files.
|
|
|
|
Its purpose is to make .BTM-files shorter (to use less space on the hard-
|
|
disk) and to make .BTM-files something like "encrypted". That makes it
|
|
possible for batch-file-programmers to distribute their files without
|
|
distributing the batch-file-source-code, which is imanent to distributing
|
|
flat batch-files. The encryption algorithm is as simple as the decryption
|
|
algorithm. A very short program, with pascal-source-code, can decrypt such
|
|
batch-files. The maximum file-length is, like in .BTM-files, limited to 64k.
|
|
|
|
File-format of the compressed file:
|
|
===================================
|
|
(like everything in this package distributed without any warranty)
|
|
|
|
The first 2 Bytes are equal to EBh BEh, the indicator for compressed 4DOS-
|
|
.BTM-files. the next 2 Bytes contain the size of the original BATCH-file.
|
|
|
|
The encryption (compression) uses the following cheme: from position 5 there
|
|
are 30 characters stored, which are the most frequently used characters. The
|
|
rest of the file contains nibbles (2 nibbles per byte).The first 14 of the
|
|
most frequently used characters have nibble-codes from 2 to 15 (2h to Fh),
|
|
the others have 2-nibble-codes (use the same size as one byte, but may be lo-
|
|
cated separated inside 2 bytes), the first nibble is always 1 and the second
|
|
goes from 0 to 15 (0h to Fh). The nibble code 0 (at a first-level-nibble-
|
|
position) is used to indicate that the following 2 nibbles represent one char
|
|
in ASCII, but the lower 4 bits swapped with the upper 4 (the 2 nibbles are
|
|
swapped). Summary: If there are only a few different chars inside the text,
|
|
for example by using a lot of ECHO-directives, the text can be compressed to
|
|
one half of its original size (1 char uses only 1 nibble of storage place). If
|
|
there are a lot of different characters in the text, and most of them appear
|
|
often, it is possible that the "compressed" file is larger than the original
|
|
batch-file.
|
|
|
|
A short example:
|
|
|
|
Original .BTM-File:
|
|
|
|
ECHO OFF
|
|
echo abcdefghijklmnopqrstuvwxyz
|
|
|
|
Compressed .BTM-File (HEX-output of DEBUG):
|
|
|
|
0000 EB BE 28 00 20 46 4F 63-65 68 6F 0D 43 45 48 61 ..(. FOceho.CEHa
|
|
0010 62 64 66 67 69 6A 6B 6C-6D 6E 70 71 72 73 74 75 bdfgijklmnpqrstu
|
|
0020 76 77 BA C4 24 33 96 57-82 DE 5F 61 01 17 12 13 vw..$3.W.._a....
|
|
0030 14 15 16 17 81 81 91 A1-B1 C1 D1 E1 F0 87 09 70 ...............p
|
|
0040 A7 .
|
|
|
|
*) 0000: EB BE, indicates compressed .BTM-file.
|
|
*) 0002: 28 00, size of original .BTM-file (0028h=40 bytes).
|
|
*) 0005-0011: The very most frequently used characters, 0dh stands
|
|
for both 0dh and 0ah (carriage return+line feed).
|
|
*) 0012-0022: The other most frequently used characters.
|
|
*) 0023-0040: Token for the used characters in the original .BTM-file:
|
|
BA = Token bh (Token 11 is "E"), Token ah (Token 10 is "C")
|
|
C4 = Token for "H" and "O"
|
|
24 = Token for " " and "O"
|
|
33 = twice the Token for "F"
|
|
96 = Token for NEW-LINE and "e"
|
|
57 82 DE 5F = Token for "cho abcd"
|
|
61 = Token for "e" and prefix for second table
|
|
01 = Token 0 from second table = "f" + prefix for second table
|
|
17 = Token 1 from second table = "g" + first Token 7 = "h"
|
|
12 13 14 15 16 17 = all token from second table "ijklmn"
|
|
81 = Token "o" + prefix, second table
|
|
81 91 A1 B1 C1 D1 E1 = Token "pqrstuv" from second table
|
|
F0 87 = Token 15 from second table "w" and character 78h="x"
|
|
09 70 A7 = again Token for character, character "y", token, "z"
|
|
|
|
That's it!
|
|
|
|
Use the program as long as JP software doesn't change the encryption
|
|
algorithm ...
|
|
|
|
The program, source, documentation is uploaded "as is", without any warranty,
|
|
etc. Use, modify, copy, and delete the program excessively the way you want,
|
|
but keep in mind, the idea was MINE (pow!)!
|
|
|
|
mfg to all my hacking friends i don't know yet
|
|
|
|
and "Viele Gruesse aus Oesterreich!"
|
|
|
|
Akisoft, Vienna (c) december 1993 |