Исходники LZCE32
  ~~~~~~~~~~~~~~~~
   Я  очень удивился, когда, скачав на TopDevicе LZCE32, решил посмотреть
как  она  написана.  Ну,  человек,  блин,  автор, так его, сырцы зажал, а
вместо  них в LZ?1.INC hex-дампы положил. И тогда я сказал: "Господи, дай
мне исходные тексты этого движка", и, вуаля ...

   Короче,  думаю  автор  не обидится на меня за публикацию исходников, а
ежели обидится... разберемся в суде ;-)

   Просто,  после  того,  как  посмотрел  на  дамп  вместо текста, первое
желание было отослать весь каталог на нуль (aka nul), потому как не люблю
пользовать  чужие  куски  кода  "без  понимания  сути происходящего" [(c)
кажется by Lozinsky]. Но потом чувство спортивного интереса взяло верх, и
я решил поковырять код (347+365 bytes).

   Ковырял IDA'ой. Результаты ковыряния в первозданном виде можно найти в
DISASMED\IDBS\*.idb,   немного   причесанные   и  откомментированные  - в
DISASMED\lz?1.inc

   С  точки  зрения оригинальности, ммм... по моему глубоко субъективному
IMHO   это  есть  обычная,  правда  достаточно  компактная  и  аккуратная
реализация  простейшего  LZxxx  или  же  LZW  (отличий точно не помню, но
алгоритм прям по описалову)


  Далее
  ~~~~~
   Далее было замечено, что поскольку движок не под DOS, а вовсе даже под
маздай,  его  можно  несколько улучшить, увеличив размер словаря (и время
сжатия  соответственно).  Для  этого  пришлось  СЛЕГКА  изменить код (см.
IMPROVED\*.*)

  Тестировалось файло на 54k:

  Разрядность, биты у 10 у 11 у 12 у 13 у 14 у 15
  
  Сжатый файл, Kb   у 34 у 30 у 28 у 24 у 22 у 21,9

   Более  того,  на 15 битах декомпрессор вылетел с ошибкой, но это вроде
по хер, т.к. от 14 мало отличается.

---------------------------------------------------------------
                                        Green Monster, 24.05.00
                                                    [email protected]