Формат файла снапшота (.RSS) для использования в эмуляторах
ПК на
базе процессора 8080 (580ВМ80)
Редакция 4.
Координатор редакций форматов -- автор, Виктор Пыхонин.
На данный момент этот формат поддерживается в эмуляторах:
- EMU80, Виктор Пыхонин, pyva@uic.nnov.ru
- PK86, Александр Демин, alexander@demin.ws
Предлагаемый формат разработан для упрощения обмена данными между
различными эмуляторами. Он является расширяемым, поэтому данное описание
будет в дальнейшем подвергаться дополнению.
Если ваша программа будет записывать файлы в данном формате, следует
предварительно зарегистрировать в данном документе четырехсимвольную
сигнатуру вашего эмулятора во избежание возможного дублирования сигнатур.
Принимаются следующие предложения по дальнейшему развитию формата:
- Форматы заголовков для других ПК
- Нумерация отсутствующих на данный момент в этом документе версий
Монитора
- Дополнительные поля в существующих заголовках
- Дополнительная информация, хранимая в файле (доп. заголовки, блоки
данных и т.п.)
- Предложения по другим методам компрессии
По вопросам регистрации сигнатур и предложений по формату обращаться к
автору - Виктору Пыхонину (pyva@uic.nnov.ru).
===========================================================================
Структура файла:
~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 18 (?) Заголовок процессора
0013 ? Заголовок ПК
???? ? Заголовок эмулятора
???? 1 Количество блоков данных
???? ? Блок данных 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
0010 1 Interrupt flag (0-off, не 0 - on)
Модель компьютера:
00 - РК-86
01 - Микроша
02 - Партнер
03 - Апогей
............
Заголовок ПК зависит от модели компьютера. Он содержит
обязательную часть и некоторые опциональные параметры, наличие
которых, а также их количество определяется полем размера заголовка.
В случае, если некоторые из параметров не используются, в них
должны быть занесены значения по умолчанию, приведенные ниже в
скобках.
Заголовок ПК для "Радио-86РК":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 2 Длина вторичного заголовка
0002 1 Версия Монитора
0004 2 Начало экранной области (76D0H)
0006 2 Длина экранной области (2340)
0008 1 Количество строк (30)
0009 1 Количество столбцов (78)
000A 1 4 младших бита порта C ППА (0)
000B 1 Текущая позиция X курсора
000C 1 Текущая позиция Y курсора
Опциональные параметры
000D 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 93H)
0011 1 Регистр режима контроллера ПДП ВТ57 (0A4H)
Версия Монитора:
01 - 32К // Внимание! Изменения по сравнению с редакцией 2.
02 - 16К // (Исправлено несоответствие с реализацией)
03 - расширенный (размером 4К)
.......
00 - по умолчанию (32К) или содержится в одном из блоков данных
Заголовок ПК для "Партнера":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 2 Длина вторичного заголовка
0002 1 Версия Монитора
0004 2 Начало экранной области (76D0)
0006 2 Длина экранной области (2340)
0008 1 Количество строк (30)
0009 1 Количество столбцов (78)
000A 1 4 младших бита порта C ППА (0AH)
000B 1 Текущая позиция X курсора
000C 1 Текущая позиция Y курсора
Опциональные параметры
000D 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 0D9H)
0011 1 Регистр режима контроллера ПДП ВТ57 (0A4H)
Версия Монитора:
01 - V.3.
.......
00 - по умолчанию (V.3.) или содержится в одном из блоков данных
Заголовок ПК для "Микроши":
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 2 Длина вторичного заголовка
0002 1 Версия Монитора
0004 2 Начало экранной области (76D0H)
0006 2 Длина экранной области (2340)
0008 1 Количество строк (30)
0009 1 Количество столбцов (78)
000A 1 4 младших бита порта C ППА (0)
000B 1 Текущая позиция X курсора
000C 1 Текущая позиция Y курсора
Опциональные параметры
000D 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H 93H)
0011 1 Регистр режима контроллера ПДП ВТ57 (0A4H)
0012 2 Делитель канала 2 таймера ВИ53 (1-нет звука) (1)
Версия Монитора:
01 - Оригинальная версия
.......
00 - по умолчанию или содержится в одном из блоков данных
Заголовок ПК для "Апогея":
~~~~~~~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 2 Длина вторичного заголовка
0002 1 Версия Монитора
0004 2 Начало экранной области (0E1D0H)
0006 2 Длина экранной области (2340)
0008 1 Количество строк (30)
0009 1 Количество столбцов (78)
000A 1 4 младших бита порта C ППА (0)
000B 1 Текущая позиция X курсора
000C 1 Текущая позиция Y курсора
Опциональные параметры
000D 4 4 регистра контроллера ЭЛТ ВГ75 (4DH 1DH 99H D3H)
0011 1 Регистр режима контроллера ПДП ВТ57 (0A4H)
Версия Монитора:
01 - Оригинальная версия
.......
00 - по умолчанию или содержится в одном из блоков данных
Заголовок ПК для "Специалист":
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 2 Длина вторичного заголовка
0002 1 Версия Монитора
000A 1 4 старших бита порта C ППА (0)
Опциональные параметры: в настоящий время отсутствуют
Версия Монитора:
01 - Оригинальная версия (4K)
.......
00 - по умолчанию или содержится в одном из блоков данных
Заголовок эмулятора:
~~~~~~~~~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 4 Сигнатура эмулятора
0000 2 Размер заголовка эмулятора
0002 ? Специфические для эмулятора данные (тек. режим)
Применяемые сигнатуры:
NULL - пустой заголовок (размер=6, данные отсутствуют)
EM80 - эмулятор EMU80
PK86 - эмулятор PK86
........
Блок данных:
~~~~~~~~~~~~
Смещение Длина Назначение
---------------------------------------------------
0000 1 Тип компрессии (0-нет, 1-с компрессией)
0001 2 Размер блока (с этим заголовком)
0003 2 Начальный адрес блока
0005 2 Размер несжатых данных
0007 ? Данные
Способ компрессии:
Если подряд идут более 3 одинаковых байтов, то они кодируются
следующим образом: 0CBH <повторяющийся байт> <счетчик повторов>. Длина
счетчика повторов - 1 байт. Если подряд идут более 256 байт, то они
разбиваются на несколько CB-последовательностей. Байт CB кодируется как
CB CB 01. Выбор байта CB обусловлен статистическими данными: он реже всего
встречается в программах. Другие значения в поле типа компрессии (например
2) могут означать в будущем другие типы компрессии (например LZW).
===========================================================================
История:
~~~~~~~~
Редакция 4:
- Изменения в структуре документа
Редакция 3:
- Исправлена неточность в номерах версий Монитора для РК-16 и РК-32
Редакция 2:
- Восстановлена пропущенная строка: начальный адрес блока
- Описан заголовок ПК для "Специалиста"
Редакция 1:
- Оригинальная версия
===========================================================================
Виктор Пыхонин
29.03.99. mailto:pyva@uic.nnov.ru
Александр Демин alexander@demin.ws
04.04.99