* Emu80 *
Last update:
08.06.2013.
|
|
Формат файла снапшота (.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
Назад
|