forked from KolibriOS/kolibrios
7dfe6ad257
git-svn-id: svn://kolibrios.org@3122 a494cfbc-eb01-0410-851d-a64ba20cac60
177 lines
7.9 KiB
Plaintext
177 lines
7.9 KiB
Plaintext
@RCHER FOR MENUET v1.0 July 14, 2005
|
||
Written in pure assembler by Ivushkin Andrey aka Willow
|
||
|
||
Deflate unpacker
|
||
|
||
Vivat assembler et MENUETOS!
|
||
I tender thanks to everyone who spends his time in feasible effortsfor that
|
||
little OS evolution. Now in my own rating the Mario79's distro named Kolibri4
|
||
takes 1th place. It is always pleasant to use modern software. Go on!
|
||
|
||
@RCHER is intended to view & unpack data compressed by Deflate method
|
||
(including both static and dynamic Huffman). This method (although it isn't the
|
||
best already) is used by such file formats as ZIP (modern versions: PKZIP for
|
||
MS-DOS can create archives using other, less effective compression methods,
|
||
which @RCHER doesn't support), GZIP, JAR, OpenOffice files, SFX ZIP executables
|
||
and some others. I couldn't prevent myself to include support of PNG images
|
||
(they use the similar compression) and TAR and TAR+GZIP archives.
|
||
|
||
When the program is started, a little button carrying a @ symbol appears in the
|
||
left top corner of screen. Clicking this button opens a SYSXTREE dialog to
|
||
select a file being unpacked. Doubleclick closes the application. @RCHER
|
||
outputs its information messages to Debug Board. If an archive contains more
|
||
than one file, the 1st is by default unpacked into /HD/1/OUT.TXT (you may
|
||
change the DUMPFILE constant in @RCHER.ASM) and is opened through TINYPAD
|
||
or - if it's a PNG image - in the built-in viewer.
|
||
|
||
These are unpacking flags that may exist in a commandline before an archive
|
||
filename:
|
||
|
||
s - do not close the program after unpacking;
|
||
n - decompress the K-th archive file, where K is the following dword in
|
||
commandline;
|
||
N - decompress the K-th archive file, where K is ASCII number from the
|
||
following 6 bytes of commandline;
|
||
R - "raw" Deflate data, without descriptors and headers;
|
||
q - begin file parsing from offset of K, where K is following dword in
|
||
commandline;
|
||
Q - begin file parsing from offset of K, where K is ASCII number from the
|
||
following 6 bytes of commandline.
|
||
|
||
Commandline example:
|
||
|
||
cmd_string:
|
||
db 'sN000037q'
|
||
dd 1465
|
||
db '/hd/1/png.zip',0
|
||
|
||
It means to open the 34th (counting from 0) file of archive /hd/1/png.zip
|
||
and do not terminate. Archive will be parsed starting at offset 1465.
|
||
|
||
|
||
To-Do list:
|
||
|
||
1. Support for interlaced PNG, alpha-channels, gamma-correction, background,
|
||
Significant bits and a lot of cool parts of that format.
|
||
2. Output of archive content through IPC or into a built-in window like SYSTREE
|
||
(as we are going to decide with the respected colleagues).
|
||
3. Searching of archive files by name and wildcards!
|
||
4. Unpacking into a file specified.
|
||
5. Means on saving memory space (now @RCHER gorges 8 Mb!): moving RAM areas,
|
||
blocked file output. To do the last thing it is necessary to test carefully
|
||
the reliability of harddisk I/O, directory creation and file deletion. These
|
||
kernel capabilities aren't still documented.
|
||
6. Archive contents integration into SYSXTREE & MFAR filemanagers. We have to
|
||
unify the calling format (like a structure in the sysfunc 58).
|
||
7. Add comments to source.
|
||
8. Correct bugs to be found
|
||
|
||
Special thanks to:
|
||
|
||
Explanation of algorythm of Deflate format decoder with decoding samples
|
||
(evm.narod.ru)
|
||
RFC 1951 DEFLATE Compressed Data Format Specification version 1.3
|
||
ZIP File Format Specification version 4.5 by PKWARE Inc.
|
||
"An Explanation of the Deflate Algorithm" by Antaeus Feldspar
|
||
RFC 1952 GZIP file format specification version 4.3
|
||
TAR Format. Information from File Format List 2.0 by Max Maischein.
|
||
RFC 1950 ZLIB Compressed Data Format Specification version 3.3
|
||
PNG (Portable Network Graphics) Specification version 1.0
|
||
Michael Dipperstein's Huffman Code Page
|
||
|
||
I expect your remarks and suggestions on the @RCHER's topic, "Coding" section
|
||
at meos.sysbin.com forum.
|
||
|
||
See you later!
|
||
|
||
|
||
****************************************
|
||
****************************************
|
||
|
||
@RCHER „‹Ÿ MENUET v1.0 14 ¨î«ï 2005 £.
|
||
� ¯¨á ç¨á⮬ áᥬ¡«¥à¥ ˆ¢ãèª¨ë¬ €¤à¥¥¬ (Willow)
|
||
|
||
Deflate à ᯠª®¢é¨ª
|
||
|
||
Vivat assembler et MenuetOS!
|
||
‚ëà ¦ î ¨áªà¥îî ¡« £®¤ à®áâì ¢á¥¬ ⥬, ªâ® ¥ ¦ «¥ï ᢮¥£® ¢à¥¬¥¨,
|
||
¤¥« ¥â ¯®á¨«ìë© ¢ª« ¤ ¢ à §¢¨â¨¥ í⮩ ¬ «¥ìª®© Ž‘. ‘¥©ç á ¢ ¬®¥¬ ᮡá⢥®¬
|
||
३⨣¥ 1-¥ ¬¥áâ® § ¨¬ ¥â ¤¨áâਡã⨢ Mario79 Kolibri4. ‚ᥣ¤ ¯à¨ïâ®
|
||
¯®«ì§®¢ âìáï ᮢ६¥ë¬ �Ž. ’ ª ¤¥à¦ âì!
|
||
|
||
@RCHER ¯à¥¤ § ç¥ ¤«ï ¯à®á¬®âà ¨ à ᯠª®¢ª¨ ¤ ëå, ᦠâëå á ¯®¬®éìî ¬¥â®¤
|
||
Deflate (¢ª«îç ï áâ â¨ç¥áª¨© ¨ ¤¨ ¬¨ç¥áª¨© • ää¬ ). „ ë¬ ¬¥â®¤®¬ (å®âï ®
|
||
㦥 ¥ ¯à¥â¥¤ã¥â §¢ ¨¥ ¨«ãç襣®) ¯®«ì§ãîâáï ä®à¬ âë ä ©«®¢ ZIP
|
||
(ᮢ६¥ë¥ ¢¥àᨨ: PKZIP ¤«ï MS-DOS ¬®¦¥â á®§¤ ¢ âì à娢ë á ¤à㣨¬¨, ¬¥¥¥
|
||
íä䥪⨢묨 ¬¥â®¤ ¬¨ ᦠâ¨ï, ª®â®àë¥ @RCHER ¥ ¯®¤¤¥à¦¨¢ ¥â), GZIP, JAR,
|
||
ä ©«ë OpenOffice, SFX-ZIP ¯à¨«®¦¥¨ï ¨ àï¤ ¤à㣨å. Ÿ ¥ ¬®£ 㤥ঠâìáï ¨ ¥
|
||
ᤥ« âì ¯®¤¤¥à¦ªã ¨§®¡à ¦¥¨© ¢ ä®à¬ ⥠PNG (¨á¯®«ì§ãîé¨å தáâ¢¥ë© ¬¥â®¤
|
||
ᦠâ¨ï) ¨ à娢®¢ TAR ¨ TAR+GZIP.
|
||
|
||
�ਠ§ ¯ã᪥ ¯à®£à ¬¬ë ¢ «¥¢®¬ ¢¥à奬 㣫ã íªà ¯®ï¢«ï¥âáï ¬ «¥ìª ï ª®¯ª
|
||
á® § 窮¬ @. �ਠ¦ ⨨ ¥¥ ®âªàë¢ ¥âáï ®ª® ¢ë¡®à ä ©« (SYSXTREE) ¤«ï
|
||
à ᯠª®¢ª¨. „¢®©®© 饫箪 § ªàë¢ ¥â ¯à¨«®¦¥¨¥. ˆä®à¬ æ¨®ë¥ á®®¡é¥¨ï
|
||
@RCHER ¢ë¢®¤¨â ¤®áªã ®â« ¤ª¨. …᫨ à娢 ᮤ¥à¦¨â ¥áª®«ìª® ä ©«®¢, ¯®
|
||
㬮«ç ¨î ¯¥à¢ë© ¨§ ¨å à ᯠª®¢ë¢ ¥âáï /HD/1/OUT.TXT (¯®¬¥ï©â¥ ¯à¨
|
||
¥®¡å®¤¨¬®á⨠ª®áâ âã DUMPFILE ¢ @RCHER.ASM) ¨ ®âªàë¢ ¥âáï ç¥à¥§ TINYPAD
|
||
¨«¨ - ¢ á«ãç ¥ ª à⨪¨ PNG - ¢ ®ª¥ ¢áâ஥®£® ¯à®á¬®âà騪 .
|
||
|
||
‚ ª®¬ ¤®© áâப¥ ¯¥à¥¤ ¨¬¥¥¬ à娢 ¬®£ãâ ¢ ¯à®¨§¢®«ì®¬ ¯®à浪¥ 㪠§ë¢ âìáï
|
||
ä« £¨ à ᯠª®¢ª¨:
|
||
|
||
s - ¥ § ªàë¢ âì ¯à®£à ¬¬ã ¯®á«¥ à ᯠª®¢ª¨;
|
||
n - à ᯠª®¢ âì K-© ä ©« à娢 , £¤¥ K - á«¥¤ãî騩 dword ¢ ª®¬ ¤®© áâப¥;
|
||
N - à ᯠª®¢ âì K-© ä ©« à娢 , £¤¥ K - ASCII ç¨á«® ¨§ á«¥¤ãîé¨å 6 ¡ ©â
|
||
ª®¬ ¤®© áâப¨;
|
||
R - "áëàë¥" Deflate-¤ ë¥, ¡¥§ ®¯¨á ⥫¥© ¨ § £®«®¢ª®¢;
|
||
q - ¯à®á¬®âà ä ©« ç âì ᮠᬥ饨ï K, £¤¥ K - á«¥¤ãî騩 dword ¢ ª®¬ ¤®©
|
||
áâப¥;
|
||
Q - ¯à®á¬®âà ä ©« ç âì ᮠᬥ饨ï K, £¤¥ K - ASCII ç¨á«® ¨§ á«¥¤ãîé¨å 6
|
||
¡ ©â ª®¬ ¤®© áâப¨.
|
||
|
||
�ਬ¥à ª®¬ ¤®© áâப¨:
|
||
|
||
cmd_string:
|
||
db 'sN000037q'
|
||
dd 1465
|
||
db '/hd/1/png.zip',0
|
||
|
||
�â® ®§ ç ¥â, çâ® á«¥¤ã¥â ®âªàëâì 34-© (áç¨â ï ®â 0) ä ©« à娢 /hd/1/png.zip
|
||
¨ ¥ § ¢¥àè âì à ¡®âã. �à®á¬®âà à娢 ç¥âáï ᮠᬥ饨ï 1465.
|
||
|
||
|
||
—â® ¥é¥ 㦮 ᤥ« âì:
|
||
|
||
1. �®¤¤¥à¦ª ç¥à¥ááâà®çëå (interlaced) PNG, â ª¦¥ «ìä -ª «®¢, £ ¬¬ë,
|
||
ä® , Significant bits ¨ ªãç¨ ¤àã£¨å ¯à¨¬®ç¥ª í⮣® ä®à¬ â .
|
||
2. ‚뢮¤ ᮤ¥à¦¨¬®£® à娢®¢ ç¥à¥§ IPC ¨«¨ ¢® ¢áâ஥®¬ ®ª¥ ¯®¤®¡¨¥ SYSTREE
|
||
(íâ® ª ª à¥è¨¬ á 㢠¦ ¥¬ë¬¨ ª®««¥£ ¬¨).
|
||
3. �®¨áª ä ©«®¢ ¢ à娢¥ ¯® ¨¬¥¨ ¨ ¤ ¦¥ ¬ ᪥!
|
||
4. � ᯠª®¢ª ¢ 㪠§ ë© ä ©«.
|
||
5. Œ¥à®¯à¨ïâ¨ï ¯® íª®®¬¨¨ ¯ ¬ï⨠(ᥩç á @RCHER ¦à¥â 8 Œ¡!): ¯¥à¥¬¥é¥¨¥
|
||
ãç á⪮¢ ¯ ¬ïâ¨, ¡«®çë© ¢ë¢®¤ ¢ ä ©«. „«ï ¯®á«¥¤¥£® ¥®¡å®¤¨¬® âé ⥫ì®
|
||
¯à®â¥áâ¨à®¢ âì ¤¥¦®áâì ¢®®¤ -¢ë¢®¤ †„, á®§¤ ¨ï ª â «®£®¢ ¨ 㤠«¥¨ï
|
||
ä ©«®¢. �®ª í⨠¢®§¬®¦®á⨠ï¤à ¥ ¤®ªã¬¥â¨à®¢ ë.
|
||
6. ˆâ¥£à æ¨ï à娢ëå ª â «®£®¢ ¢ ä ©«®¢ë¥ ¬¥¥¤¦¥àë SYSXTREE, MFAR.
|
||
�®âॡã¥âáï ã¨ä¨æ¨à®¢ âì ä®à¬ ⠢맮¢ ( ¯®¤®¡¨¥ áâàãªâãàë ¢ 58 äãªæ¨¨).
|
||
7. Žâª®¬¬¥â¨à®¢ âì ª®¤.
|
||
8. ˆá¯à ¢¨âì ¡ £¨, ª®â®àë¥, ¥á®¬¥®, ©¤ãâáï ;-)
|
||
|
||
Žá®¡ë¥ ¡« £®¤ à®áâ¨:
|
||
|
||
ޝ¨á ¨¥ «£®à¨â¬ ¤¥ª®¤¥à ä®à¬ â Deflate ¯à¨¬¥à å ¤¥ª®¤¨à®¢ ¨ï
|
||
(evm.narod.ru)
|
||
RFC 1951 DEFLATE Compressed Data Format Specification version 1.3
|
||
ZIP File Format Specification version 4.5 by PKWARE Inc.
|
||
"An Explanation of the Deflate Algorithm" by Antaeus Feldspar
|
||
RFC 1952 GZIP file format specification version 4.3
|
||
TAR Format. Information from File Format List 2.0 by Max Maischein.
|
||
RFC 1950 ZLIB Compressed Data Format Specification version 3.3
|
||
PNG (Portable Network Graphics) Specification version 1.0
|
||
Michael Dipperstein's Huffman Code Page
|
||
|
||
†¤ã ¢ è¨å § ¬¥ç ¨© ¨ ¯à¥¤«®¦¥¨© ®¤®¨¬¥®© ¢¥âª¥ à §¤¥« "Š®¤¨£" ä®àã¬
|
||
meos.sysbin.com
|
||
|
||
„® ®¢ëå ¢áâà¥ç!
|