Без изменения порядка байт:
Вложение 81887
Вид для печати
Без изменения порядка байт:
Вложение 81887
Спасибо! Еще и компактнее, собственный вариант у меня получился 9.5 Кб, а тут 3.5
При адаптации z80->8080 один из вопросов - во сколько раз увеличится размер? Можно попробовать оценить для такой задачи, как распаковщики LZ(+). Если взять zx0 и zx2, которые долго и упорно оптимизировал именно по размеру, то они разбухли в 1.33 и 1.35 раз соответственно. Текущий derip8080 в 1.38 раз больше deripz80, похоже это говорит о том, что он не так далек от предела.
Выложил derip8080 на гитхабе. Как уже писали ранее, по степени сжатия упаковщик Eugene85 между zx0 и shrinklerом. По скорости распаковщик в 4 раза медленнее zx0 и намного быстрее шринклера. Размер распаковщика 317 байт, можно сократить на 4 байта, но замедлится на 17%, поэтому не стал. И не забывайте после компрессии ripом битреверсить файл, например утилитой lexarr.
В упаковщик rip непосредственно встроена функция реверсинга битов.
После долгого перерыва попробовал улучшить zx0. Сократить не получилось, зато чуть-чуть ускорил. Обратите внимание, что адрес упакованных данных теперь в DE, не в HL (стало единообразно с zx1). Еще немного дополнил текстовую преамбулу, указал опции для упаковки и чем компилировать. Распаковщик нового формата для 8080 по-прежнему на байт длиннее и чуть медленнее, поэтому выкладываю только для "классики".
Дошли руки и до zx1. Новая версия на 2% быстрее, теперь безоговорочно опережает даже самый быстрый вариант распаковщика megalz для 8080, который почти в два раза больше, и сжимает megalz похуже. Размер прямой версии не изменился, обратная укоротилась на 2 байта.
Накопились обновления DeLZSA и DeZX, теперь и на гитхабе.
LZSA1 - ускорил быстрый вариант, но он стал побольше. Компактную "прямую" версию сократил на байт.
LZSA2 - добавил вариант с самомодификацией, он немного короче и быстрее. Вариант без самомодификации сократил на байт.
ZX2 - чуть ускорил вариант с опцией -y
ZX5 - немного сократил
Давно надо было прорекламировать альтернативный архиватор для формата zx0 - salvador
Он решает основную проблему оригинального упаковщика - сжимает радикально (на порядки!) быстрее, его можно спокойно включать в автоматическую сборку промежуточных вариантов и при этом не терять время. salvador почтиоптимальный, но иногда даже чуть опережает оригинальный оптимальный упаковщик, что вызывает вопрос к оригиналу. Автор пишет о 0.02% разницы в среднем. salvador поддерживает ограничение размера окна поиска совпадений, можно сделать потоковый распаковщик с циклическим буфером. Еще бы добавить ограничение на длину последовательности литералов и поддержать zx1/2 и стало бы совсем хорошо.
ivagor, перечитал все ветку на одном дыхании. Как захватывающий фильм. :) Ты проделал огромную работу! Спасибо!
Спасибо на добром слове, но основной респект конечно авторам современных архиваторов для ретрокомпов. Ну и некоторым авторам распаковщиков, которые высоко устанавливают планку и дают примеры, как ее преодолеть.