ZX Club #06
31 декабря 1997
  Софт  

Users group - Компрессия экранных файлов: Обзор ПО. Дискография. Анализ результатов компрессии.


Программное обеспечение Описание Упаковщики и архиваторы

Единственная  самостоятельная   программа,
которую написал Юз Гарриссон за  всю  свою
жизнь - это его жизненная программа CREDO.

Хитрые хакеры (самым хитрым из которых яв-
ляется его собственная жена)  неоднократно
пытались взломать жизненную программу  Юза
Гарриссона, но у них ничего  не  выходило.
Программа CREDO надежно защищена  непроби-
ваемым эгоизмом и непроходимой ленью авто-
ра.

История создания InterNet.  Из письма  Юза
Гарриссона хакеру Хаку: "Хак! Доколе можно
терпеть! Я целых три раза щелкаю "мышкой",
а твоя программа только и делает, что  чи-
тает мои мысли и распечатывает их на прин-
тере... А отсылать в редакцию кто будет?!"
И тут хакера Хака осенила гениальная  идея
создания глобальной сети InterNet. Теперь,
по третьему  щелчку  "мышки",  бессмертные
мысли Юза Гарриссона отправляются прямо по
назначению: в мировое пространство.

══════════════════════════════════════════


        КОМПРЕССИЯ ЭКРАННЫХ ФАЙЛОВ

1. Вступление...........................36
2. Обзор ПО. Дискография...............133
3. Библиография........................341
4. Анализ результатов компрессии.......491


              1. Вступление

  Эта статья адресована, в первую очередь,
пользователям, не преодолевшим "барьер ма-
шинного кода", но кое-чем, смею надеяться,
может заинтересовать и кодеров.

  Я знаком по меньшей мере с двумя любите-
лями  Спектрум,  с  удовольствием  пишущих
объемные программы на Basic, но с  опаской
и недоверием  относящихся  ко  всему,  что
имеет отношение к Machine Code. И дело да-
же не в том, что они принципиально и наот-
рез не желают пользоваться кучей  непонят-
ных цифирей.  Детальному  разъяснению эле-
ментарных приемов программирования и рань-
ше-то не особенно  уделялось  внимание;  в
большинстве статей все это "само собой ра-
зумеется", "давно известно", "не раз осве-
щалось" и т.д.  Складывается  впечатление,
что авторам просто лень набрать  несколько
дополнительных строк текста.  А между  тем
есть категория пользователей, для  которых
существенны  как  раз  эти   отсутствующие
строки.

  У пользователей,  пишущих  программы  на
Basic, может  сложиться  впечатление,  что
машинные коды, а тем более - вопросы  ком-
прессии кодовых блоков, их не касаются ни-
каким боком. Так ли это?

  Попробуйте написать  программу  учебного
или справочного характера без  использова-
ния компрессии кодовых блоков  или  вообще
без использования машинных кодов. Нормаль-
но развитая программа вряд ли уместится на
одном диске.  А какова будет ее коммерчес-
кая ценность? Так  что,  уважаемые  Users,
если  хотите,  чтобы  Вашими   программами
заинтересовался еще кто-то, кроме Вас  са-
мих, давайте вместе и неспеша разбираться,
как можно, обходясь минимальными средства-
ми и знаниями, создавать нечто похожее  на
настоящий программный продукт.

  С уверенностью  могу  сказать, что боль-
шинство юзеров не  знают  о  существовании
многих прикладных  программ,  использовать
которые в практике программирования  прос-
то, удобно, а иногда - необходимо. К числу
таких программ относятся  компрессоры  эк-
ранных файлов, особое место среди  которых
занимает замечательный Laser Compact Дмит-
рия Пьянкова из Горно-Алтайска.  С горечью
приходится констатировать, что несмотря на
доступность программы, о ее существовании,
тем более - о ее возможностях, знают  нем-
ногие местные синклеристы.

                 *  *  *

  Основное назначение  программ-компрессо-
ров - экономия памяти, дискового простран-
ства и времени  обмена данными.  В зависи-
мости от своего назначения  программы  для
компрессии кодовых блоков можно разбить на
две большие группы:

       1) компрессоры-"упаковщики";
       2) компрессоры-архиваторы.

  Первая группа компрессоров подразумевает
автостарт  программ и, соответственно, ав-
томатическую декомпрессию  кодовых  блоков
после их загрузки в  сжатом  виде в опера-
тивную память  компьютера.  Цели,  пресле-
дуемые "упаковщиками": быстрая загрузка  с
диска и подготовка программ к работе (эко-
номия времени), экономия  дискового  прос-
транства.

  Вторая группа - более прозаична и  пред-
назначена исключительно для экономного ар-
хивного хранения данных на дискетах. Чтобы
воспользоваться архивным файлом, его необ-
ходимо  предварительно  разархивировать  с
помощью программы-декомпрессора, и  только
потом разархивированный файл можно  загру-
жать в компьютер.

  Здесь мы остановимся на  анализе  работы
компрессоров-"упаковщиков",  делая  акцент
на сжатие  экранных  файлов  -  "картинок"
(address: 16384, length: 6912).


         2. Обзор ПО. Дискография

    2.1. Специализированные программы

  ASC v.2.06

  Andrew Screen Crasher (C) Андрей Сендец-
кий (г. Днепропетровск, 1991). Распростра-
няется Инфорком на  системных  дискетах  с
шифром CD18.

  Программа записывает сжатый  блок  кодов
(экранный файл вместе с декомпрессором) по
адресу 27000.  Загрузку можно  производить
по произвольному адресу start, расположен-
ному выше RAMTOP. Для вызова "картинки" на
экран,  достаточно  обратиться  по  адресу
start:

...
095 REM Загpужаем сжатую "каpтинку"
        в ОЗУ компьютера
100 RANDOMIZE USR 15619: REM: LOAD
    "name $" CODE start
105 REM Вызываем "каpтинку" на экpан
110 RANDOMIZE USR start
...

  Перед распаковкой экрана (вызовом  "кар-
тинки" на экран) желательно  устанавливать
одинаковый цвет "чернил" и "бумаги".  Нап-
ример:

102 INK 0: PAPER 0: CLS

или  использовать  дополнительный    экран
Spectrum 128.

  COMPRES*  (C) А.С. Кёльн, 1992

  Программа выгружает сжатые "картинки" по
адресу 50000. Загружать кодовый блок можно
под произвольный адрес  start  и  вызывать
"картинку" на экран командой RANDOMIZE USR
start. Распространяется Инфорком на систе-
мных дискетах с шифром CD10, CD13.

  VD v.1.2

  Visual Decompressor (C) Thimoty  (Санкт-
-Петербург, 1995); из программного  прило-
жения электронного  журнала  "Spectrofon",
14.  Во время сжатия экранного  файла  за-
дается один из 12-ти возможных режимов вы-
вода "картинки"  на  экран.  Нетривиальный
вывод "картинок" несколько завышает  длину
сжатого блока кодов, но это сполна компен-
сируется сервисом: проблема эффектного вы-
вода заставки на экран решается  автомати-
чески.  Адрес  загрузки  кодовых   блоков:
40000 (файл неперемещаемый).

  LC v.3.1

  Laser Compact (C) Дмитрий Пьянков  (Гор-
но-Алтайск, 1995). Распространяется Инфор-
ком на системной дискете с шифром  AC12  и
автором: 659700 респ. Алтай,  г. Горно-Ал-
тайск, ул. Чорос-Гуркина, 49 - 6. С декаб-
ря 1997г. к распространению программ Дмит-
рия  Пьянкова  подключился  ZX-club  (Бар-
наул).  Авторскую дискету можно заказать в
редакции "ZX-club" или купить в  фирменном
отделе  Komel  магазина  "Клен"  (Барнаул,
ул. Г.Исакова, 239).

  Программа создает  самораспаковывающийся
перемещаемый файл: адрес выгрузки - 40000;
адрес загрузки - произвольный.  В качестве
пакетной,  к  Laser  Compact   прилагается
программа Connect  LC  v.3.1,  позволяющая
объединять сжатые "картинки" в один  кодо-
вый блок с возможностью вызова  "картинки"
на экран по ее  порядковому  номеру в соз-
данном блоке.  Кроме  очевидного  удобства
использования такого моноблока в  програм-
ме, длина моноблока меньше  арифметической
суммы длин составляющих его сжатых "карти-
нок".  Дополнительные возможности LC: сжа-
тие отдельных сегментов экрана (1-й,  2-й,
3-й), сжатие сегментов попарно (1-2, 2-3).

     2.2. Программы общего назначения

  PCD v.6.1

  Powerful Code Decreaser (C) KSA  (г.Мос-
ква, 1996).  Распространяется Инфорком  на
системной дискете с шифром AC32.

  Программа  имеет  два  режима    работы:
screen  (сжатие  экранных  файлов),   code
(сжатие  кодовых  блоков).  По  умолчанию,
сжатая "картинка" выгружается вместе с де-
компрессором по адресу 49152;  загрузка  -
под произвольный адрес.  При желании адрес
выгрузки можно изменить, а также - записы-
вать компрессированный файл без декомпрес-
сора.  Очевидный  недостаток  программы  -
изумляющая заторможенность:  операции,  на
которые у других компрессоров уходят  счи-
таные секунды, отнимают при работе  с  PCD
уже минуты пользовательского времени. Все-
стороннее тестирование программы не входи-
ло в мои планы, поэтому следующее  замеча-
ние является не абсолютной истиной, а слу-
чаем из практики работы с компрессором  на
эмуляторе UKV Spectrum Debugger v.1.2  (К.
Углеков, г. Москва). При запуске программы
из режима 128К и дальнейшей попытке вывес-
ти сжатую "картинку" на экран  из  Бейсик,
компьютер "зависает" окончательно и беспо-
воротно. Корректная работа - в режиме 48К.

  HRUM v.3.5i  (C) Дмитрий Пьянков, 1997г.

  Распространяется автором:  659700  респ.
Алтай, г.  Горно-Алтайск, ул. Чорос-Гурки-
на, 49-6.  HRUM  v.3.5i  входит  в  состав
Авторского Диска Дмитрия Пьянкова (см. вы-
ше - LC v.3.1).

  Отдельного режима  screen  программа  не
имеет,   поэтому  средняя  степень  сжатия
именно экранных файлов у нее несколько ни-
же, чем у специализированных программ  ASC
и Laser Compact. Однако, по совокупным по-
казателям работы:  степень  сжатия,  время
проведения  операции  -  HRUM  значительно
превосходит программу PCD. Подробнее о ра-
боте программы см. статью Дмитрия Пьянкова
"Компрессия кодовых блоков".

  Возможно, программу  общего  назначения,
каковой является HRUM, некорректно  упоми-
нать в  статье,  посвященной  специальному
вопросу  компрессии  экранных  файлов. Во-
-первых, - HRUM  предназначен  для  сжатия
разнородной  информации:  текст,  графика,
звук и т.д. Во-вторых, - графические файлы
такие программы распаковывают, как  прави-
ло, не на экран, а в специально отведенный
для этого буфер, и только после декомпрес-
сии картинка перебрасывается на  экран.  И
все же я не только оставил эту программу в
обзорной части ПО, но и ввел ее в  таблицу
сравнительных испытаний.  О причинах побу-
дивших меня к такому решению, будет сказа-
но особо в 4-ом параграфе данной статьи.

                 *  *  *

  В качестве резюме к  обзорной  части  ПО
выскажу несколько соображений, возникших у
меня во время подготовительной работы.

  Кажущееся изобилие программного  обеспе-
чения обманчиво.  Пытаясь "отделить  зерна
от плевел", я просмотрел  практически  все
общедоступные программы и обнаружил только
4 (четыре) работоспособные и  морально  не
устаревшие  (имеются в виду  специализиро-
ванные программы-упаковщики экранных  фай-
лов). К приведенному выше списку можно бы-
ло добавить  программу  SUPERPAK v.2.0 (C)
В. Василевский/ В. Катаев   (Киров/ Вятка,
1993) - шифр  CD9  по  каталогу  Инфорком.
Однако, имеющиеся у меня копии, в том чис-
ле и дистрибутивная, успешно сжимая  "кар-
тинки", никоим образом не желают их распа-
ковывать. Впрочем, и работоспособную копию
можно смело отнести к разряду морально-ус-
таревших.  Причем, морально эта  программа
не выдерживала конкуренции уже  на  момент
выхода в свет.

  Особое внимание хотелось бы обратить  на
АВТОРСКИЕ аннотации к программам: с  осто-
рожностью  относитесь  к  заявлениям  типа
"...лучшая (самая мощная)  на  сегодняшний
день...",  "...не имеющая  аналогов по эф-
фективности работы..." и т.д. Подобные за-
верения присутствуют практически  во  всех
упомянутых  программах.  Забегая   вперед,
скажу, что  перекрыть  показатель  степени
сжатия экранных файлов программы 91-го го-
да (ASC  v.2.6)  удалось  только  в  конце
95-го года (LC v.3.1)! И как понимать тог-
да слова  "...лучший screen optimizer...",
относящиеся  к  программе  96-го года (PCD
v.6.1), если по своим показателям она  ус-
тупает даже ASC '91? Наверное причина  по-
добных недоразумений кроется в  недостатке
работ как обзорного характера, так и работ
исследовательских - по отдельным вопросам.
Попробуем, хотя  бы  частично,  восполнить
этот пробел.

             3. Библиография

  Этому параграфу можно было дать название
"По страницам ZX-Ревю", т.к. у меня нет ни
времени, ни особого желания с головой  за-
рываться в вопросы компрессии и  проводить
широкий поиск, штудируя специальную  лите-
ратуру.  Другое дело - "настольные  книги"
синклериста, к которым без сомнения  можно
отнести книги Инфорком из графической  се-
рии.  О  целесообразности  обзорных  мате-
риалов я уже упоминал выше; здесь дополню:
приступая к разработке какого-либо  вопро-
са, просто необходимо изучать  опыт  своих
предшественников, если не хочешь оказаться
в смешном положении "изобретателя  велоси-
педов".  Кроме того, имея под  рукой  биб-
лиографическую  справку,  можно быстро по-
добрать готовую процедуру для  использова-
ния в своей программе.

  3.1. Теория компрессии кодовых блоков

  3.1.1. ZX-Ревю 1/95.:   Профессиональный
подход. - с. 16-22.

Сергей Симонович.  Архивация,  компрессия,
сжатие. "...  Существует множество  разных
методов компрессии данных.  Но если взгля-
нуть в их суть, то можно выделить два  ос-
новных напрвления. Первое напрвление пред-
ставляют разнообразные методы,  основанные
на использовании длин  последовательностей
повторяющихся  данных  (метод  RLE  -  Run
Length Encoding). Второе напрвление связа-
но с использованием не длины повторяющихся
данных, а частоты их повторения и эти  ме-
тоды строятся на  алгоритме,  носящем  имя
Хафмана (Huffman)."

В связи с описанием  метода  Хафмана,  для
примера приведены  две  системы  двоичного
кодирования символов и раскрыт секрет сос-
тавления словарей в компьютерных играх.

  3.1.2.  Прикладная графика. - М.: Инфор-
ком, 1993, с. 57-67.

Рассмотрен  принцип  упаковки экранной ин-
формации, состоящий в создании файла  шаб-
лонов графических  изображений.  При  этом
для каждого  экрана  должна  быть  создана
"карта" размещения шаблонов.  Подробно ра-
зобраны методики компрессии для подготовки
архива (библиотеки) шаблонов и  декомпрес-
сии шаблонов для вывода  их  в  дисплейный
файл или в буферный экран.

Здесь имеется в виду, что заархивированные
данные составляют единый блок кодов с  ка-
кой-либо программой, являются ее  неотъем-
лемой частью и загружаются вместе с ней  в
ОЗУ компьютера.

         3.2. Компрессия графики

  3.2.1.  Сборник  ZX-Ревю  '91.:  MACHINE
CODE. - с. 6, 24.

Процедуры компрессии/декомпрессии  экрана.
Автор: Н.  Девятко, г. Нальчик. Ассемблер-
ный текст программ снабжен подробными ком-
ментариями, что  дает  возможность  понять
реализацию алгоритма компрессии. При жела-
нии можно набрать шестнадцатеричный дамп и
использовать кодовый блок в своих програм-
мах.

  3.2.2. Сборник ZX-Ревю '93.: Форум. - с.
59-63.

1. Программа "Компрессор". Basic-программа
с загрузкой кодовых блоков: символьный на-
бор,   компрессор/ декомпрессор   экранных
файлов.  Автор процедуры компрессии: Алек-
сандр Балашов, г. Конаково Тверской облас-
ти.  Программа предназначена для работы  с
магнитофоном и дополнена  процедурой  заг-
рузки блока кодов  без заголовка.  Ассемб-
лерный текст  процедуры компрессии  сопро-
вожден подробными  комментариями,  дающими
представление об алгоритме работы процеду-
ры; параллельно приведены машинные коды  в
шестнадцатеричном представлении.

2. Другой вариант компрессии экранов. "...
В основе  программы  содержится  известный
многим пользователям блок кодов "compress"
CODE 28000, 650.  Бейсиковая часть сделана
практически заново, что позволило  пользо-
ваться программой с  большим  удобством  и
удовольствием. Кроме того, мы приводим два
варианта программы: для магнитофона и  для
дисковода.  ...Возможно,  компрессирование
как всего экрана, так и произвольно взятых
одного любого или двух соседних  сегментов
экрана (сравните с LC v.3.1. - SWdZ)".

В статье подробно  рассмотрена  Бейсиковая
часть программы, а результаты  сравнитель-
ных испытаний, которые провел автор данно-
го текста, приведены в  таблице  4.1  (см.
ниже).

  3.2.3. ZX-Ревю 3/96.: Форум. - с. 41-45.

Процедура  компрессии/ декомпрессии экрана
"COMPRESSOR 2". Автор: Дмитрий Булавин, г.
Самара. "...  Я предположил, что  выгоднее
компрессировать экран не по линиям,  а  по
знакоместам, т.е. сначала  8  байтов  1-го
знакоместа, затем 8  байтов  следующего  и
т.д.  Так получается, что 1-ый  байт  1-го
знакоместа сравнивается со  2-ым,  2-ой  с
3-им,..., 8-ой с  1-ым  байтом  следующего
знакоместа."

Бейсиковая часть программы-компрессора на-
писана для работы с магнитофоном.  Кодовый
блок компрессора загружается с применением
команды DATA Бейсика.

  3.2.4.  Элементарная  графика. - М.: Ин-
форком, 1993, с. 201-207.

В третьей части книги - Практикум по  гра-
фике в машинных кодах - приведены  кодовые
блоки и  дисассемблеры  программ  компрес-
сии/ декомпрессии экрана.  Для передачи  в
процедуры параметров - адрес,  с  которого
начинается  область,  отведенная для комп-
рессированных изображений; адрес,  начиная
с которого хранится компрессированное изо-
бражение - предлагается прием,  основанный
на использовании в Бейсике функций,  опре-
деляемых пользователем - DEF FN.  Подробно
с этим приемом можно ознакомиться,  прочи-
тав  главу   "Стандартный  формат  функции
пользователя" (с. 109-111).

     4. Анализ результатов компрессии
             экранных файлов

  Для анализа были  отобраны  10  экранных
файлов, 8 из которых общеизвестны, являют-
ся заставками к играм и приводились в  ка-
честве примеров в статьях,  опубликованных
в  "ZX-Ревю"  (см.  п.3   "Библиография").
Результаты компрессии сведены в табл. 4.1.
Для просмотра "картинки" нажмите  одну  из
цифровых клавиш: <1> - $1 ... <0> - $10.

                               Таблица 4.1
───────┬────┬────┬────┬─────────╥────┬────
Компр./│ASC │Comp│Comp│LC 3.1'95║PCD │HRUM
Экранн.│v2.6│res*│ress├────┬────╢6.1 │3.5i
файл   │1991│1992│1993│макс│ ── ║1996│1997
───────┼────┼────┼────┼────┼────╫────┼────
$ 1    │1402│2209│2306│1246│1327║1352│1310
$ 2    │1896│3182│3185│1673│1813║2427│2367
$ 3    │1986│3072│3070│1676│1851║2573│2509
$ 4    │2205│2203│2128│2021│2086║2452│2386
$ 5    │2237│3553│4205│2054│2177║2747│2654
$ 6    │2292│2613│2545│2126│2248║2632│2554
$ 7    │3080│3433│3439│2797│2889║3180│3125
$ 8    │3364│3925│3946│3156│3281║3839│3723
$ 9    │3659│3456│3638│3342│3464║3255│3194
$10    │3922│4595│4731│3697│3916║4305│4198
═══════╪════╪════╪════╪════╪════╬════╪════
Итого: │25,4│31,2│32,4│23,2│24,5║28,1│27,4
───────┼────┼────┼────┼────┼────╫────┼────
AP, %  │62,3│53,4│52,0│65,6│63,8║58,4│59,5

Примечания:

1.  При использовании программы Connect LC
v.3.1, общий объем блока из  10-ти  сжатых
"картинок" составляет:

режим максимальное сжатие включен  -
                     - 22542 байт (67.4%);
режим максимальное сжатие выключен -
                     - 23806 байт (65.6%).

2.  Средняя  степень  сжатия  в  процентах
(average percent):

       AP = [(TL - TLC)/TL] * 100%

  Естественно, что величиной AP  корректно
оперировать только для определенного набо-
ра экранов.

3.  Общий  объем  кодов  в  несжатом  виде
(total length):

            TL = scr * n, байт

 где scr - стандартный экран 6912 байт;
       n - количество экранов, шт.

4. Общий объем кодов в сжатом виде:

TLC = scr(1) + scr(2) +...+ scr(i) +...
...+ scr(n), байт

 где scr(i) - объем i-го экрана в сжатом
              виде, байт.

5.  В строке <Итого> общий объем в  сжатом
виде дан в килобайтах: TLC/1024

                 *  *  *

  Из сопоставления результатов  компрессии
видно, что в среднем программы общего наз-
начения с задачей сжатия  экранных  файлов
справляются хуже специализированных  прог-
рамм; однако, в некоторых  случаях  (файлы
$1 и $9) - лучше. Это еще раз подтверждает
вывод, что вопросы компрессии кодовых бло-
ков требуют индивидуального и внимательно-
го подхода. Обратим внимание на упомянутые
"картинки" $1 и $9.  В данном  наборе  они
являются  предельными  примерами  "рыхлой"
($1) и  "плотной"  ($9)  графики.  Поэтому
неудивительно, что программы общего назна-
чения эффективнее сжимают эти  "картинки",
так как они рассчитаны на работу с  инфор-
мацией именно такого рода: либо  предельно
упорядоченной ("рыхлой"),  либо  предельно
неупорядоченной ("плотной").

  Для завершения приведу критическое заме-
чание Дмитрия Пьянкова, который вниматель-
но читал черновики и  отвечал  на  вопросы
автора статьи.  При работе  декомпрессора,
программы  "...ASC,  PCD,  HRUM  запрещают
прерывания,  а на выходе - разрешают.  По-
этому при распаковке экрана музыка,  "под-
вешенная" на   IM 2,   будет  "подвывать".
Laser Compact не меняет  статуса  прерыва-
ний, поэтому музыка при распаковке застав-
ки не "подвывает"...".  Далее  Дм. Пьянков
пишет, что в распаковщике  (декомпрессоре)
ASC данный  недостаток  исправляется  сле-
дующим образом: команда Di (нулевой  байт)
забивается NOP'ом (нулем).  От себя добав-
лю, что "забить NOP'ом команду Di"  по-си-
лам далеко не каждому.  Да и зачем? Табли-
ца 4.1 ясно показывает,  что  лучшим комп-
рессором экранных  файлов  на  сегодняшний
день  является  программа  Laser  Compact.
Замечание последнего  абзаца  относительно
статуса прерываний окончательно убеждает в
правильности такого вывода.

                              Юз Гарриссон



Другие статьи номера:

От редакции - ZX-CLUB развивается и формируется.

Soft group - Драйвер ввода в режимах последовательного и прямого доступа из файлов системы TR-DOS. Как использовать драйвер.

Hard group - ZS Scorpion 2000 - о GMX-контроллере.

Users group - Компрессия экранных файлов: Обзор ПО. Дискография. Анализ результатов компрессии.

Users group - Компрессия кодовых блоков - работа с HRUM v3.5.

News - Барнаульская олимпиада по информатике 1997 года.

News - Барнаульская фирма Komel приняла решение о поддержкеавторских программ.

News - конкурс на лучший вирус продолжается.

Досье - О деятельности барнаульских программистов: Кротов Олег , Маяцкий Виталий , Ростов Александр , Ковалев Роман (DJ RUSH), Командир Нортон (NC).

ZX-Поппури - Письма читателей из Магадана и Коврова , Воронежа и Чебоксар.

Enjoy - Как выйти замуж за программиста.

Фантастика - Повесть А.Питерского "Четырнадцатое измерение".

Toys - Новелла к игре "BISMARK".

Toys - описание к игре "BISMARK".

Toys - словарь к игре "BISMARK".


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
SOFT - обзор ZX ZIP и ZX UNZIP.
Раскрутка - Архиватор HRIP.
Софт - музыкальный упаковщик Sound Agressor v1.0 beta.

В этот день...   7 декабря