Автор: Егор Вознесенский
Файлы программ здесь.
SOLID SOFTWARE inc.
Архиваторы серии PR версия 1.30 (некоммерческая) описание программ
Архиваторы серии PR предназначены для высокоэффективного сжатия информации на компьютерах MSX.
Благодаря применению для сжатия информации алгоритма LZW-M, более мощного, чем Хуффмановское сжатие, удалось получить быстрый однопроходный архиватор, по производительности приближающийся к используемым на IBM архиваторам. По коэффициенту сжатия архиватор PR немного лучше архиватора ZOO. Коэффициент сжатия архиватора PR лучше коэффициента ARC в среднем на 7%.
Особенно хорошо архиватор PR сжимает тексты, графику и ассемблерные программы. (Однако, весьма плохо сжимает REL-файлы.)
Основная статья про архиваторы здесь.
В новой версии (1.30) архиватора существенно изменена структура заголовка файла, что позволило деархиватору значительно быстрее находить в архиве нужный файл. Кроме того, теперь архиватор записывает в архив файлы, которые не может сжать, «так, как они есть», что улучшает характеристики сжатия. Избавление от части кода, унаследованной «по историческим причинам» от системы сжатия изображений PICPRESSOR, позволило значительно улучшить производительность архиватора - теперь он работает несколько быстрее, чем стандартный ARC.
В комплект поставки входят 4 файлов:
PR.COM | архиватор |
PRD.COM | деархиватор |
PRSFX.COM | изготовитель самораскрывающихся архивов |
PR.DOC | настоящий файл, версия в кодировке UTF |
Архиватор запускается командой:
PR [-gma] <имя архива> [<файл(ы)> …][@список]
Имя архива может быть указано без расширения, расширение по умолчанию «.AR».
<Файлы> — несколько спецификаций имён файлов, простых или с wildchards «?»,«*». Если не указано ни одного имени файла по умолчанию архивируются все файлы на диске.
Конструкция <@список> позволяет считывать имена файлов, подлежащие архивации из текстового файла с именем «список».
В этом файле перечислены спецификации файлов, каждая с новой строки. Спецификации файлов могут содержать wildchards.
После запуска программа запрашивает, какие именно файлы архивировать, выводя на экран файлы. Ответы: Y/N/G — имеют традиционное значение: Да/Нет/Все. Нажатие клавиши Q прекращает процесс архивации, архив закрывается. Значения ключей:
-g | архивация потоком, без запросов, имена файлов выводятся на консоль. |
-m | файлы переписываются в архив и удаляются с диска |
-a | файлы дописываются в существующий архив. |
Отсутствие архива не является ошибкой: создается новый архив.
Деархиватор запускается командой:
PRD [-d|v|-oX|-f] <имя архива> <спецификация>..,
После запуска программа выдает по очереди имена файлов из архива, ответить на которые также можно Y/N/G. При нажатии Q или CTRL+C процесс деархивирования прекращается.
<Спецификация> является маской имени файла для извлечения из архива нужных файлов. Пустая спецификация соответствует *.*.
Значения ключей:
-d | вывод оглавления архива |
-v | деархивация на экран (печать текста из архива) |
-oX | деархивированные файлы выводятся на диск X |
Как понятно из описания, эти ключи не могут комбинироваться, а используются только по одному.
-f | при деархивации не производить проверку наличия файла на диске. В противном случае будет каждый раз запрашиваться разрешение на перезапись файла. |
PRSFX запускается командой:
PRSFX <имя архива> [d:[<имя SFX-архива>]]
Создание самораскрывающегося архива проходит в 2 этапа.
Сначала следует создать обычный архив, а затем обработать его программой PRSFX. При этом создается COM–файл, а обычный архив удаляется. При создании SFX–архива следует помнить, что поскольку на MSX нет EXE–файлов, то объем SFX–архива может быть не более, чем 50 Кбайт.
Программы PR, PRD и PRSFX работают на MSX-компьютере любой марки и любого поколения. Используются только стандартные вызовы DOS. Обе программы не используют ни маппер, ни видеопамять, а также не используют никаких областей основной памяти, кроме зоны TPA, отведенной под COM–программы.
Программа PR использует память не ниже, чем до AF00h
Программа PRD использует всю доступную память.
Программа PRSFX может использовать всю TPA.
Использование для вывода символа на консоль не функции BIOS, а функции DOS(2) позволяет достичь следующих удобств при пользовании архиваторами PR:
б) Возможность использования переопределения вывода в файл в тех системах, где оно предусмотрено (я знаю две: MSXDOS-2 и MISIX). Действительно, можно написать:
PRD -d foo >prn
,
для того, чтобы оглавление вашего архива попало на принтер.
а) заголовок архива:
+0: 'AR ' | сигнатура архиватора |
+2: db 13 | максимальное число бит на слово LZ |
+3: db 2 | версия алгоритма |
б) один или несколько скомпрессированных файлов:
+0: ds 1 | флаговый байт |
+1: ds 11 | имя файла |
+12:ds 4 | длина файла до архивации |
+16:ds 4 | дата и время |
+20:ds 4 | ссылка на следующий заголовок |
+24 … … | файл, закодированный по LZW-M алгоритму |
Значения битов флагового байта:
0й бит | 0 — файл сжат, 1 — файл не сжат |
7й бит | 1 — признак конца архива (сейчас в последний байт архива пишется 0xFF) |
Остальные биты зарезервированы.
Данные пишутся пословно, начиная с длины слова 9 бит. Специальными кодами являются следующие:
256 | конец файла |
257 | увеличить длину слова на 1 бит |
258 | сбросить таблицу кодов |
259 | зарезервировано |
260 | CR/LF |
261 | два пробела |
262 | три пробела |
263 | точка и пробел |
264 | запятая и пробел |
265 | точка и CR |
266 | дефис и CR |
Более подробное описание LZW–алгоритма можно прочитать в журнале BYTE (9/1990). Там же есть хорошее описание Хуфф. сжатия за один проход. LZW-M алгоритм отличается от стандартного алгоритма тем, что длина слова увеличивается не при заполнении таблицы, а при передаче, что улучшает коэффициент сжатия.
Вскоре появится новая версия семейства PR, включающая:
Фирма SOLID Software также предлагает: