Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. @RCHER FOR MENUET v1.0        July 14, 2005
  2.  Written in pure assembler by Ivushkin Andrey aka Willow
  3.  
  4. Deflate unpacker
  5.  
  6. Vivat assembler et MENUETOS!
  7. I tender thanks to everyone who spends his time in feasible effortsfor that
  8. little OS evolution. Now in my own rating the Mario79's distro named Kolibri4
  9. takes 1th place. It is always pleasant to use modern software. Go on!
  10.  
  11. @RCHER is intended to view & unpack data compressed by Deflate method
  12. (including both static and dynamic Huffman). This method (although it isn't the
  13. best already) is used by such file formats as ZIP (modern versions: PKZIP for
  14. MS-DOS can create archives using other, less effective compression methods,
  15. which @RCHER doesn't support), GZIP, JAR, OpenOffice files, SFX ZIP executables
  16. and some others. I couldn't prevent myself to include support of PNG images
  17. (they use the similar compression) and TAR and TAR+GZIP archives.
  18.  
  19. When the program is started, a little button carrying a @ symbol appears in the
  20. left top corner of screen. Clicking this button opens a SYSXTREE dialog to
  21. select a file being unpacked. Doubleclick closes the application. @RCHER
  22. outputs its information messages to Debug Board. If an archive contains more
  23. than  one file, the 1st is by default unpacked into /HD/1/OUT.TXT (you may
  24. change the DUMPFILE constant in @RCHER.ASM) and is opened  through TINYPAD
  25. or - if it's a PNG image - in the built-in viewer.
  26.  
  27. These are unpacking flags that may exist in a commandline before an archive
  28. filename:
  29.  
  30.   s - do not close the program after unpacking;
  31.   n - decompress the K-th archive file, where K is the following dword in
  32.       commandline;
  33.   N - decompress the K-th archive file, where K is ASCII number from the
  34.       following 6 bytes of commandline;
  35.   R - "raw" Deflate data, without descriptors and headers;
  36.   q - begin file parsing from offset of K, where K is following dword in
  37.       commandline;
  38.   Q - begin file parsing from offset of K, where K is ASCII number from the
  39.       following 6 bytes of commandline.
  40.  
  41. Commandline example:
  42.  
  43. cmd_string:
  44.    db  'sN000037q'
  45.    dd  1465
  46.    db  '/hd/1/png.zip',0
  47.  
  48. It means to open the 34th (counting from 0) file of archive /hd/1/png.zip
  49. and do not terminate. Archive will be parsed starting at offset 1465.
  50.  
  51.  
  52. To-Do list:
  53.  
  54. 1. Support for interlaced PNG, alpha-channels, gamma-correction, background,
  55.    Significant bits and a lot of cool parts of that format.
  56. 2. Output of archive content through IPC or into a built-in window like SYSTREE
  57.    (as we are going to decide with the respected colleagues).
  58. 3. Searching of archive files by name and wildcards!
  59. 4. Unpacking into a file specified.
  60. 5. Means on saving memory space (now @RCHER gorges 8 Mb!): moving RAM areas,
  61.    blocked file output. To do the last thing it is necessary to test carefully
  62.    the reliability of harddisk I/O, directory creation and file deletion. These
  63.    kernel capabilities aren't still documented.
  64. 6. Archive contents integration into SYSXTREE & MFAR filemanagers. We have to
  65.    unify the calling format (like a structure in the sysfunc 58).
  66. 7. Add comments to source.
  67. 8. Correct bugs to be found
  68.  
  69. Special thanks to:
  70.  
  71.   Explanation of algorythm of Deflate format decoder with decoding samples
  72.      (evm.narod.ru)
  73.   RFC 1951 DEFLATE Compressed Data Format Specification version 1.3
  74.   ZIP File Format Specification version 4.5 by PKWARE Inc.
  75.   "An Explanation of the Deflate Algorithm" by Antaeus Feldspar
  76.   RFC 1952 GZIP file format specification version 4.3
  77.   TAR Format. Information from File Format List 2.0 by Max Maischein.
  78.   RFC 1950 ZLIB Compressed Data Format Specification version 3.3
  79.   PNG (Portable Network Graphics) Specification version 1.0
  80.   Michael Dipperstein's Huffman Code Page
  81.  
  82. I expect your remarks and suggestions on the @RCHER's topic, "Coding" section
  83. at meos.sysbin.com forum.
  84.  
  85. See you later!
  86.  
  87.  
  88. ****************************************
  89. ****************************************
  90.  
  91. @RCHER ДЛЯ MENUET v1.0       14 июля 2005 г.
  92.  Написана на чистом ассемблере Ивушкиным Андреем (Willow)
  93.  
  94. Deflate распаковщик
  95.  
  96. Vivat assembler et MenuetOS!
  97. Выражаю искреннюю благодарность всем тем, кто не жалея своего времени,
  98. делает посильный вклад в развитие этой маленькой ОС. Сейчас в моем собственном
  99. рейтинге 1-е место занимает дистрибутив Mario79 Kolibri4. Всегда приятно
  100. пользоваться современным ПО. Так держать!
  101.  
  102. @RCHER предназначен для просмотра и распаковки данных, сжатых с помощью метода
  103. Deflate (включая статический и динамический Хаффман). Данным методом (хотя он
  104. уже не претендует на звание наилучшего) пользуются форматы файлов ZIP
  105. (современные версии: PKZIP для MS-DOS может создавать архивы с другими, менее
  106. эффективными методами сжатия, которые @RCHER не поддерживает), GZIP, JAR,
  107. файлы OpenOffice, SFX-ZIP приложения и ряд других. Я не мог удержаться и не
  108. сделать поддержку изображений в формате PNG (использующих родственный метод
  109. сжатия) и архивов TAR и TAR+GZIP.
  110.  
  111. При запуске программы в левом верхнем углу экрана появляется маленькая кнопка
  112. со значком @. При нажатии на нее открывается окно выбора файла (SYSXTREE) для
  113. распаковки. Двойной щелчок закрывает приложение. Информационные сообщения
  114. @RCHER выводит на доску отладки. Если архив содержит несколько файлов, по
  115. умолчанию первый из них распаковывается на /HD/1/OUT.TXT (поменяйте при
  116. необходимости константу DUMPFILE в @RCHER.ASM) и открывается  через TINYPAD
  117. или - в случае картинки PNG - в окне встроенного просмотрщика.
  118.  
  119. В командной строке перед именем архива могут в произвольном порядке указываться
  120. флаги распаковки:
  121.  
  122.   s - не закрывать программу после распаковки;
  123.   n - распаковать K-й файл архива, где K - следующий dword в командной строке;
  124.   N - распаковать K-й файл архива, где K - ASCII число из следующих 6 байт
  125.       командной строки;
  126.   R - "сырые" Deflate-данные, без описателей и заголовков;
  127.   q - просмотр файла начать со смещения K, где K - следующий dword в командной
  128.       строке;
  129.   Q - просмотр файла начать со смещения K, где K - ASCII число из следующих 6
  130.       байт командной строки.
  131.  
  132. Пример командной строки:
  133.  
  134. cmd_string:
  135.    db  'sN000037q'
  136.    dd  1465
  137.    db  '/hd/1/png.zip',0
  138.    
  139. Это означает, что следует открыть 34-й (считая от 0) файл архива /hd/1/png.zip
  140. и не завершать работу. Просмотр архива начнется со смещения 1465.
  141.  
  142.  
  143. Что еще нужно сделать:
  144.  
  145. 1. Поддержка чересстрочных (interlaced) PNG, а также альфа-каналов, гаммы,
  146.    фона, Significant bits и кучи других примочек этого формата.
  147. 2. Вывод содержимого архивов через IPC или во встроенном окне наподобие SYSTREE
  148.    (это как решим с уважаемыми коллегами).
  149. 3. Поиск файлов в архиве по имени и даже маске!
  150. 4. Распаковка в указанный файл.
  151. 5. Мероприятия по экономии памяти (сейчас @RCHER жрет 8 Мб!): перемещение
  152.    участков памяти, блочный вывод в файл. Для последнего необходимо тщательно
  153.    протестировать надежность воода-вывода на ЖД, создания каталогов и удаления
  154.    файлов. Пока эти возможности ядра не документированы.
  155. 6. Интеграция архивных каталогов в файловые менеджеры SYSXTREE, MFAR.
  156.    Потребуется унифицировать формат вызова (наподобие структуры в 58 функции).
  157. 7. Откомментировать код.
  158. 8. Исправить баги, которые, несомненно, найдутся ;-)
  159.  
  160. Особые благодарности:
  161.  
  162.   Описание алгоритма декодера формата Deflate на примерах декодирования
  163.      (evm.narod.ru)
  164.   RFC 1951 DEFLATE Compressed Data Format Specification version 1.3
  165.   ZIP File Format Specification version 4.5 by PKWARE Inc.
  166.   "An Explanation of the Deflate Algorithm" by Antaeus Feldspar
  167.   RFC 1952 GZIP file format specification version 4.3
  168.   TAR Format. Information from File Format List 2.0 by Max Maischein.
  169.   RFC 1950 ZLIB Compressed Data Format Specification version 3.3
  170.   PNG (Portable Network Graphics) Specification version 1.0
  171.   Michael Dipperstein's Huffman Code Page
  172.  
  173. Жду ваших замечаний и предложений на одноименной ветке раздела "Кодинг" форума
  174. meos.sysbin.com
  175.  
  176. До новых встреч!
  177.