Формат файла снапшота RSS использовался в Emu80 версий до 3.xx включительно. Также применяется в некоторых эмуляторах других авторов
Формат файла снапшота (.RSS) для использования в эмуляторах ПК на базе процессора 8080 (580ВМ80) Редакция 15. Координатор редакций форматов -- автор, Виктор Пыхонин. На данный момент этот формат поддерживается в эмуляторах: - EMU80, Виктор Пыхонин, pyva@uic.nnov.ru, pyk@mail.ru - PK86, Александр Демин, barsuk@pccenter.ru - Emulator3000, Евгений Троицкий, eugene_programmer@nm.ru - Эмулятор Львов ПК-01, Антон Игнатичев, antonign@mail.ru Предлагаемый формат разработан для упрощения обмена данными между различными эмуляторами. Он является расширяемым, поэтому данное описание будет в дальнейшем подвергаться дополнению. Если ваша программа будет записывать файлы в данном формате, следует предварительно зарегистрировать в данном документе четырехсимвольную сигнатуру вашего эмулятора во избежание возможного дублирования сигнатур. Принимаются следующие предложения по дальнейшему развитию формата: - Форматы заголовков для других ПК - Нумерация отсутствующих на данный момент в этом документе версий Монитора - Дополнительные поля в существующих заголовках - Дополнительная информация, хранимая в файле (доп. заголовки, блоки данных и т.п.) - Предложения по другим методам компрессии По вопросам регистрации сигнатур и предложений по формату обращаться к автору - Виктору Пыхонину (pyk@emu80.org, pyk@mail.ru). =========================================================================== Структура файла: ~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 18 (?) Заголовок процессора 0012 ? Заголовок ПК ???? ? Заголовок эмулятора ???? 1 Количество блоков данных ???? ? Блок данных 1 .......................................... ???? ? Блок данных n Опциональные данные ???? ? Расширенный блок данных 1 .......................................... ???? ? Расширенный блок данных n Опциональные данные, которые могут быть описаны в последующих редакциях формата ???? ? Дополнительные данные Длина заголовков может варьироваться (см. ниже). Заголовок процессора: ~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 4 'RKSS' - сигнатура (RK SnapShot) 0004 1 Модель компьютера 0005 2 PC 0007 2 BC 0009 2 DE 000B 2 HL 000D 2 AF 000F 2 SP 0011 1 Interrupt flag (0-off, не 0 - on) Модель компьютера: 00 - РК-86 01 - Микроша 02 - Партнер 03 - Апогей 04 - Специалист 05 - Орион 06 - Микро-80 07 - ЮТ-88 08 - Специалист-MX 09 - Львов ПК-01 ............ Заголовок ПК зависит от модели компьютера. Он содержит обязательную часть и некоторые опциональные параметры, наличие которых, а также их количество определяется полем размера заголовка. В случае, если некоторые из параметров не используются, в них должны быть занесены значения по умолчанию, приведенные ниже в скобках. Заголовок ПК для "Радио-86РК": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 2 Начало экранной области (76D0H) 0005 2 Длина экранной области (2340) 0007 1 Количество строк (30) 0008 1 Количество столбцов (78) 0009 1 4 младших бита порта C ППА (0) 000A 1 Текущая позиция X курсора 000B 1 Текущая позиция Y курсора Опциональные параметры 000C 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 93H) 0010 1 Регистр режима контроллера ПДП ВТ57 (0A4H) 0011 2 Регистр начала экранной области ВТ57 (76D0H) 0013 2 Регистр размера экранной области ВТ75 (2339) 0015 1 Последняя команда ВГ75 (27H) 0017 2 Делитель канала 0 таймера ВИ53 (1-нет звука) (1) 0019 2 Делитель канала 1 таймера ВИ53 (1) 001B 2 Делитель канала 2 таймера ВИ53 (1) 001D 2 Тек. знач. счетчика канала 2 таймера ВИ53 (0) 001F 2 Тек. знач. счетчика канала 0 таймера ВИ53 (0) 0021 2 Тек. знач. счетчика канала 1 таймера ВИ53 (0) 0023 1 Режим счетчика канала 0 таймера ВИ53 (26H) 0024 1 Режим счетчика канала 1 таймера ВИ53 (66H) 0025 1 Режим счетчика канала 2 таймера ВИ53 (90H) 0026 1 Признак загрузки счетчика канала 0 таймера ВИ53 (0) 0027 1 Признак загрузки счетчика канала 1 таймера ВИ53 (0) 0028 1 Признак загрузки счетчика канала 2 таймера ВИ53 (0) Версия Монитора: 01 - 32К 02 - 16К 03 - расширенный (размером 4К) ....... 00 - по умолчанию (32К) или содержится в одном из блоков данных Заголовок ПК для "Партнера": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 2 Начало экранной области (76D0) 0005 2 Длина экранной области (2340) 0007 1 Количество строк (30) 0008 1 Количество столбцов (78) 0009 1 4 младших бита порта C ППА (0AH) 000A 1 Текущая позиция X курсора 000B 1 Текущая позиция Y курсора Опциональные параметры 000C 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 0D9H) 0010 1 Регистр режима контроллера ПДП ВТ57 (0A4H) 0011 2 Регистр начала экранной области ВТ57 (76D0H) 0013 2 Регистр размера экранной области ВТ75 (2339) 0015 1 Последняя команда ВГ75 (2BH) Версия Монитора: 01 - V.3. 02 - V.2. ....... 00 - по умолчанию (V.3.) или содержится в одном из блоков данных Заголовок ПК для "Микроши": ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 2 Начало экранной области (76D0H) 0005 2 Длина экранной области (2340) 0007 1 Количество строк (30) 0008 1 Количество столбцов (78) 0009 1 4 младших бита порта C ППА (0) 000A 1 Текущая позиция X курсора 000B 1 Текущая позиция Y курсора Опциональные параметры 000C 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 93H) 0010 1 Регистр режима контроллера ПДП ВТ57 (0A4H) 0011 2 Делитель канала 2 таймера ВИ53 (1-нет звука) (1) 0013 2 Регистр начала экранной области ВТ57 (76D0H) 0015 2 Регистр размера экранной области ВТ75 (2339) 0017 1 Последняя команда ВГ75 (27H) 0018 1 Регистр B второго ППА (0) 0019 2 Делитель канала 0 таймера ВИ53 (1) 001B 2 Делитель канала 1 таймера ВИ53 (1) 001D 2 Тек. знач. счетчика канала 2 таймера ВИ53 (0) 001F 2 Тек. знач. счетчика канала 0 таймера ВИ53 (0) 0021 2 Тек. знач. счетчика канала 1 таймера ВИ53 (0) 0023 1 Режим счетчика канала 0 таймера ВИ53 (36H) 0024 1 Режим счетчика канала 1 таймера ВИ53 (76H) 0025 1 Режим счетчика канала 2 таймера ВИ53 (0B6H) 0026 1 Признак загрузки счетчика канала 0 таймера ВИ53 (0) 0027 1 Признак загрузки счетчика канала 1 таймера ВИ53 (0) 0028 1 Признак загрузки счетчика канала 2 таймера ВИ53 (0) Версия Монитора: 01 - Оригинальная версия ....... 00 - по умолчанию или содержится в одном из блоков данных Заголовок ПК для "Апогея": ~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 2 Начало экранной области (0E1D0H) 0005 2 Длина экранной области (2340) 0007 1 Количество строк (30) 0008 1 Количество столбцов (78) 0009 1 4 младших бита порта C ППА (0) 000A 1 Текущая позиция X курсора 000B 1 Текущая позиция Y курсора Опциональные параметры 000C 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H D3H) 0010 1 Регистр режима контроллера ПДП ВТ57 (0A4H) 0011 2 Делитель канала 0 таймера ВИ53 (1-нет звука) (1) 0013 2 Делитель канала 0 таймера ВИ53 (1-нет звука) (1) 0015 2 Делитель канала 0 таймера ВИ53 (1-нет звука) (1) 0017 2 Регистр начала экранной области ВТ57 (0E1D0H) 0019 2 Регистр размера экранной области ВТ75 (2339) 001B 1 Последняя команда ВГ75 (27H) 001D 2 Тек. знач. счетчика канала 2 таймера ВИ53 (0) 001F 2 Тек. знач. счетчика канала 0 таймера ВИ53 (0) 0021 2 Тек. знач. счетчика канала 1 таймера ВИ53 (0) 0023 1 Режим счетчика канала 0 таймера ВИ53 (36H) 0024 1 Режим счетчика канала 1 таймера ВИ53 (76H) 0025 1 Режим счетчика канала 2 таймера ВИ53 (0B6H) 0026 1 Признак загрузки счетчика канала 0 таймера ВИ53 (0) 0027 1 Признак загрузки счетчика канала 1 таймера ВИ53 (0) 0028 1 Признак загрузки счетчика канала 2 таймера ВИ53 (0) Версия Монитора: 01 - Оригинальная версия ....... 00 - по умолчанию или содержится в одном из блоков данных Заголовок ПК для "Специалист": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 1 4 старших бита порта C ППА (0) Опциональные параметры 0004 x Блок цвета Версия Монитора: 01 - Монитор-2 (4K) 02 - Монитор-1 03 - Оконный Монитор 04 - Монитор ПК "Лик" ....... 00 - по умолчанию или содержится в одном из блоков данных Блок цвета: ~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 1 Тип блока 0001 2 Длина блока (вместе с полями типа и длины) 0003 x Блок Тип блока: 0 - нет информации о цвете (длина блока = 3) 1 - режим 5 цветов (длина блока = 3072+3=3075) 2 - зарезервировано для режима 9 цветов Кодирование: В одном байте блока содержится информация о цвете четырех байт видеопамяти. Младшие пары битов в этом блоке соответствуют младшим байтам в видеопамяти и соответствуют битам 6 и 7 порта C ППА. Заголовок ПК для "Орион": ~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора 0003 1 4 младших бита порта C ППА (0) 0004 1 Регистр режима цветности (0) 0005 1 Текущая страница памяти (0) 0006 1 Текущая экранная область (0) 0007 1 Количество дополнительных блоков данных Опциональные параметры на данный момеент отсутствуют Версия Монитора: 01 - Монитор-1 02 - Монитор-2 03 - Монитор-3 (Петербург) ....... 00 - по умолчанию или содержится в одном из блоков данных Заголовок ПК для "Микро-80": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора Опциональные параметры в текущей версии отсутствуют Версия Монитора: 01 - Оригинальая версия ....... 00 - по умолчанию или содержится в одном из блоков данных Заголовок ПК для "ЮТ-88": ~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия Монитора Опциональные параметры в текущей версии отсутствуют Версия Монитора: 01 - Оригинальая версия ....... 00 - по умолчанию или содержится в одном из блоков данных Заголовок ПК для "Львов ПК-01": ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 2 Длина вторичного заголовка 0002 1 Версия ПЗУ (0 - оригинальное ПЗУ) 0003 1 Содержимое порта C0 0004 1 Содержимое порта C1 0005 1 Содержимое порта C2 0006 1 Содержимое порта C3 0007 1 Содержимое порта D0 0008 1 Содержимое порта D1 0009 1 Содержимое порта D2 000A 1 Содержимое порта D3 Опциональные параметры в текущей версии отсутствуют Версия ПЗУ: 00 - по умолчанию Заголовок эмулятора: ~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 4 Сигнатура эмулятора 0000 2 Размер заголовка эмулятора 0002 ? Специфические для эмулятора данные (тек. режим) Применяемые сигнатуры: NULL - пустой заголовок (размер=6, данные отсутствуют) EM80 - эмулятор EMU80 PK86 - эмулятор PK86 LVOV - эмулятор Львов ПК-01 ........ Блок данных: ~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 1 Тип компрессии (0-нет, 1-с компрессией) 0001 2 Размер блока (с этим заголовком) 0003 2 Начальный адрес блока 0005 2 Размер несжатых данных 0007 ? Данные Расширенный блок данных ("Орион"): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Смещение Длина Назначение --------------------------------------------------- 0000 1 Номер страницы памяти 0001 x Блок данных Способ компрессии: Если подряд идут более 3 одинаковых байтов, то они кодируются следующим образом: 0CBH <повторяющийся байт> <счетчик повторов>. Длина счетчика повторов - 1 байт. Если подряд идут более 256 байт, то они разбиваются на несколько CB-последовательностей. Байт CB кодируется как CB CB 01. Выбор байта CB обусловлен статистическими данными: он реже всего встречается в программах. Другие значения в поле типа компрессии (например 2) могут означать в будущем другие типы компрессии (например LZW). =========================================================================== История: ~~~~~~~~ Редакция 15: - Изменен адрес e-mail одного из авторов - Виктора Пыхонина Редакция 14: - Исправлено большое количество ошибок предыдущей версии - Добавлена информация по ПК "Львов" - Уточнена контактная информация Редакция 13: - Значительно расширена информация о состоянии таймера ВИ53 на всех ПЭВМ - Введены заголовки ПК "Микро-80" и "ЮТ-88" Редакция 12: - Введена информация о регистре B второго ППА на "Микроше" - Введена информация о делителях каналов 0 и 1 таймера ВИ53 на "Микроше" Редакция 11: - Введена информация о состоянии таймера ВИ53 в "Радио-86РК" Редакция 10: - Введены дополнительные типы Мониторов для ПК "Радио-86РК", "Партнер", "Специалист", "Орион" Редакция 9: - Введено описание заголовка ПК "Орион" - Введены расширенные блоки данных Редакция 8: - Введена информация о последней команде ВГ75 Редакция 7: - Введена информация о начале экранной области и ее длине согласно контроллера ПДП ВТ57 для ПК "Радио-86РК", "Партнер", "Микроша" и "Апогей" Редакция 6: - Введена информация о делителях каналов ВИ53 для ПК "Апогей" Редакция 5: - Введена информация о цвете для ПК "Специалист" Редакция 4: - Изменения в структуре документа Редакция 3: - Исправлена неточность в номерах версий Монитора для РК-16 и РК-32 Редакция 2: - Восстановлена пропущенная строка: начальный адрес блока - Описан заголовок ПК для "Специалиста" Редакция 1: - Оригинальная версия =========================================================================== Виктор Пыхонин 01.02.2003 pyk@emu80.org Александр Демин barsuk@pccenter.ru 04.04.99