Формат файла снапшота (.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


back