Z80 (формат) — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
'''Z80''' ('''*.z80''') - наиболее распространённый формат для сохранения состояния эмулируемого [[ZX Spectrum]]. Был разработан [[Gerton Lunter|Гертоном Люнтером]] для использования в его эмуляторе ZX Spectrum - [[Lunter Z80|Z80]] ([[1991]]), впоследствии стал поддерживаться большинством других эмуляторов.
+
'''Z80''' ('''*.z80''') наиболее распространённый формат для сохранения состояния эмулируемого [[ZX Spectrum]] (т.н. [[снапшот]]). Был разработан [[Gerton Lunter|Гертоном Люнтером]] для использования в его эмуляторе ZX Spectrum - [[Lunter Z80|Z80]] ([[1991]]), впоследствии стал поддерживаться большинством других эмуляторов.
  
 
Формат трижды изменялся автором. Авторы других эмуляторов также вносили некоторые изменения в формат.
 
Формат трижды изменялся автором. Авторы других эмуляторов также вносили некоторые изменения в формат.
Строка 83: Строка 83:
 
|29
 
|29
 
|1
 
|1
|Биты 0-1: режим прерываний (0-2)<br>Бит 2: эмуляция второй версии платы<br>Бит 3: удвоенная частота прерываний<br>Биты 4-5: точность синхронизации эмулятора<br>Биты 6-7: джойстик (0 - Cursor/Protek/AGF, 1 - [[Kempston joystick|Kempston]], 2 - [[Sinclair joystick|Sinclair]] левый, 3 - Sinclair правый)
+
|Биты 0-1: режим прерываний (0-2)<br>Бит 2: эмуляция второй версии платы<br>Бит 3: удвоенная частота прерываний<br>Биты 4-5: точность синхронизации эмулятора<br>Биты 6-7: [[джойстик]] (0 - Cursor/Protek/AGF, 1 - [[Kempston joystick|Kempston]], 2 - [[Sinclair joystick|Sinclair]] левый, 3 - Sinclair правый)
 
|}
 
|}
  

Текущая версия на 22:48, 21 ноября 2009

Z80 (*.z80) — наиболее распространённый формат для сохранения состояния эмулируемого ZX Spectrum (т.н. снапшот). Был разработан Гертоном Люнтером для использования в его эмуляторе ZX Spectrum - Z80 (1991), впоследствии стал поддерживаться большинством других эмуляторов.

Формат трижды изменялся автором. Авторы других эмуляторов также вносили некоторые изменения в формат.

Первая версия

Первая версия формата использовалась в версиях эмулятора Z80 до 1.45 включительно и позволяет сохранять состояние только для ZX Spectrum 48K.

Файл состоит из заголовка и образа ОЗУ. Заголовок имеет длину 30 байт и следующую организацию:

Смещение Размер Назначение
0 2 регистры A, F
2 2 регистры C, B
4 2 регистры L, H
6 2 регистр PC (младший, старший байты)
8 2 регистр SP
10 1 Регистр I
11 1 Регистр R (старший бит не используется)
12 1 Бит 0: старший бит регистра R
Биты 1-3: цвет бордюра
Бит 4: установлен при подключенном Basic SamRom
Бит 5: установлен при использовании сжатия
Биты 6-7: не используются
Если байт содержит значение 255, оно должно считаться как 1
13 2 Регистры E, D
15 2 Альтернативные регистры C, B
17 2 Альтернативные регистры E, D
19 2 Альтернативные регистры L, H
21 2 Альтернативные регистры A, F
23 2 Регистр IY (младший, старший байты)
25 2 Регистр IX
27 1 Флаг прерываний - 0 при DI, иначе EI
28 1 Флаг IFF2
29 1 Биты 0-1: режим прерываний (0-2)
Бит 2: эмуляция второй версии платы
Бит 3: удвоенная частота прерываний
Биты 4-5: точность синхронизации эмулятора
Биты 6-7: джойстик (0 - Cursor/Protek/AGF, 1 - Kempston, 2 - Sinclair левый, 3 - Sinclair правый)

После заголовка следует образ ОЗУ компьютера (48 килобайт). Если бит 5 в 12-ом байте заголовка сброшен, данные хранятся в несжатом виде, иначе используется простое RLE-сжатие. Все последовательности 5 и более одинаковых байт кодируются как #ED #ED #xx #yy, где xx количество повторений, а yy значение повторяемого байта. Если в исходных данных встречается последовательность #ED #ED, она кодируется как #ED #ED #02 #ED. Если в исходных данных встречается одиночный байт #ED, первый последующий за ним байт не считается частью повтора - так, последовательность #ED и шести нулей будет закодирована как #ED 00 #ED #ED #05 #00. В конце сжатого образа ОЗУ указывается маркер конца файла - #00 #ED #ED 00.