┌─┐ ┌─┐ ┌───┐ ┌───┐ ┌─────┐
│ │ │ │ │ ┌┐└┐ ┌┘ └┐ ┌┘ ┌───┘
└┐└┐┌┘┌┘ · ││ └┐ · ┌─┐ │ └┐ └┐
└┐└┘┌┘ ┌─┐│ │└┐ │ │ │ │ │ └┐ └─┐
┌┘┌┐└┐ └─┘│ │ │ └┐ │ │ │ └┐ └─┐ └┐
┌┘┌┘└┐└┐ │ │ └┐ │ │ └┐│ │ ┌┘ │
│ │ │ │ │ └──┘ │ └┐ └┘ │ ┌──┘ ┌┘
└─┘ └─┘ └──────┘ └─────┘ └─────┘
(c) Boh/Image Crew...
Проекты на будущее... Cейчас у нас тут как бы просто
текучка идет, то есть никто никаких планов не строит, а просто
живут.
Если конкретно о X-Dos, то очень много всего было
придумано, и многое начато. Hо все приходится делать мне одному,
и слишком много всего на мне висит (и не только на Спекки),
поэтому почти ничего не завершено. А чего там только не было..
- база данных, в которой кстати уже работает вполне
визуальный редактор структуры, дело за браузом стало.
- XMetaFile, часть идеологии которого присутстует в
муз.плеере X-MetaPlayer, а именно там есть формат XM,
объединяющий в себе абсолютно любые форматы музык.
- И самый главный был план, это X-Dos 2.0... Для которой
уже были написаны менеджеры памяти и задач (невытесняющая
многозадачность).
Сейчас же новые программы появляются, когда меня кто-либо
попросит утилитку какую-нибудь написать, или вот например игру
Life. Для чего-то большего одному мне времени не хватает, а
больше никого реально и нет.
А что ты имеешь ввиду под "как народ воспринимает"? Те кто
в нее вникся, вполне довольны, и с радостью принимают что-то
новое. С такой, что как скачают, бегом бегут смотреть :) Кроме
меня писал проги только один известный мне человек, но сейчас он
скорее всего уже и забыл это...
С появлением глобальной zxnet я хоть и расспространил
ядро+некоторые проги (естественно не все), но откликов почему-то
ооочень мало. Я конечно моря писем и не ждал, но по сути
заинтересовался дальше лишь ты да еще один.
Теперь расскажем по конкретнее... В этот раз - о
универсальном контейнере X-Metafile ..
Hу что ж, рассказываю...
X-MetaFile - это файлы, имеющие обычно расширение XM. (не
путать с музыкальными модулями на ПЦ!)
Этот формат был придуман специально для универсальности
хранения совершенно любых данных, причем еще и с информацией о
них!
Даю описение текущей версии формата, хотя имхо он требуется
еще в доработке, так как некоторых вещей не хватает.
Hужно сначала ввести такое понятие, как атом . Атом - это
4-символьный текстовый идентификатор содержимого файла. О том,
какие атомы уже заданы, позже, но приведу пример: атом "ASM0"
означает что здесь содержится музыка в формате ASM 0.XX !
Итак, каждый xm-файл имеет 128-байтный заголовок,
непосредственно за которым идут данные. Вот описание заголовка
(в стиле паскаля):
Atom: array[1..4] of Char;
Len: Word; {полный размер файла}
Reserv: array[1..11] of Byte; {11 резервных байт}
Name: String[50]; {Hазвание}
Author: String[50]; {Автор}
Date: String[10]; {Дата}
Строки тоже в стиле паскаля (ксдос с такими и работает),
где первый байт - длина строки, а число в [] - макс.длина.
Для тех, кому непонятно, вот аналогия на асме:
ATOM DB "ASM0"
LEN DW (длина)
RESERV DS 11
NAME DS 51
AUTHOR DS 51
DATE DS 11
В сумме 128 байт.
Исходя из атома, программа-плейер ищет оверлей-плейер,
который зарегистрировал этот атом как свой. Таким образом,
идентификация файла очень проста. Пока зарегистрированы лишь
музыкальные форматы, вот список атомов, и содержимое xm-файла
при этом атоме:
(все без плейеров)
ASM0 модуль от ASC Sound Master v 0.XX
ASM1 модуль от ASC Sound Master v 1.XX
PT2X модуль от Pro Tracker v 2.X
PT24 модуль от Pro Tracker v 2.4
PT3X модуль от Pro Tracker v 3.X
PSC1 модель от Pro Sound Creator v 1.XX
первые два байта данных содержат уточненный номер версии
например #01#07 - PSC 1.07
затем сама музыка
ST модуль от Sound Tracker
STP модуль от Sound Tracker Pro
Это пока все, но для поддержки нового формата нужно лишь
оверлей написать.
Теперь немного о программе X-MetaPlayer. Это оверлейный
проигрыватель X-MetaFile, однако способен понимать и
оригинальные (без XM-заголовка) файлы от вышеперечисленных
муз.редакторов. Сделано это следующим образом. Оверлеи разделены
на три типа: input, player и visualisation. По порядку о каждом
типе:
input - оверлей, распознающий тип файла, и автоматом
конвертирующий его в X-Meta формат (с заголовком)
player - проигрыватель для конкретного или нескольких
атомов (например ASM0 и ASM1 реализованы в одном оверлее)
visualisation - визуализация музыки :) Канальчики,
индикаторы, частотный анализатор, либо просто любой эффект в
нижней трети экрана.
При выборе файла в каталоге (или как параметра в
ком.строке) алгоритм такой:
- вызываются по порядку все input-оверлеи, пока какой-либо
из них не скажет, что этот файл его. После этого считается что в
памяти лежит уже готовый xm-файл.
- проверяются все player-оверлеи на поддержку нужного
атома. Если такой плейер найден, запускается проигрывание, иначе
сообщаем что нет нужного плейера.
Вот и все, ведь все очень просто. А так как все оверлеи на
рамдиске, скорость поиска приемлемая.
О формате оверлеев и их функциях пока рассказывать не буду,
если надо, то в следующий раз.
Скажу лишь, что были мысли расширить заголовок до 256 байт.
Тем самым упростится загрузка и остальное.
Продолжение следует...
Ekaterinburg city 2001.