SNA — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Новая: '''SNA''' ('''*.sna''') - формат для сохранения состояния эмулируемого ZX Spectrum 48K или 128K. Вероятно, был разраб...)
 
 
(не показана одна промежуточная версия этого же участника)
Строка 1: Строка 1:
'''SNA''' ('''*.sna''') - формат для сохранения состояния эмулируемого [[ZX Spectrum]] 48K или [[128K]]. Вероятно, был разработан автором эмулятора [[Spectrum (эмулятор)|Spectrum]] ([[Rui Ribeiro]]?). В настоящее время поддерживается большинством эмуляторов.  
+
'''SNA''' ('''*.sna''') - формат для сохранения состояния эмулируемого [[ZX Spectrum]] 48K или [[128K]] (т.н. [[снапшот]]). Вероятно, был разработан автором эмулятора [[Spectrum (эмулятор)|Spectrum]] ([[Rui Ribeiro]]?). В настоящее время поддерживается большинством эмуляторов.  
  
 
Исходная версия формата, предназначенная для сохранения состояния только 48K компьютеров, имела недостаток - регистр PC сохранялся на стеке эмулируемого компьютера, таким образом изменяя содержимое двух байт ОЗУ. В версии формата для 128K компьютеров этот недостаток был устранён.
 
Исходная версия формата, предназначенная для сохранения состояния только 48K компьютеров, имела недостаток - регистр PC сохранялся на стеке эмулируемого компьютера, таким образом изменяя содержимое двух байт ОЗУ. В версии формата для 128K компьютеров этот недостаток был устранён.
Строка 43: Строка 43:
 
|27
 
|27
 
|49152
 
|49152
|Содержимое ОЗУ по адресам 16384..65536
+
|Содержимое ОЗУ по адресам 16384..65535
 
|}
 
|}
  
 
== Версия для 128K ==
 
== Версия для 128K ==
 +
Файл имеет размер 131103 или 147487 байт. Содержимое текущего выбранного банка ОЗУ сохраняется в любом случае, даже если это банк 2 или 5 - в этом случае соответствующий банк хранится в файле дважды. Банки в конце файла сохраняются в порядке возрастания номеров, но только если они не сохранены в первой части файла. Например, если в первой части файла сохранены банки 5, 2 и 4 - в конце файла должны быть сохранены банки 0, 1, 3, 6 и 7; если в первой части сохранены банки 5, 2 и 5 - в конце файла должны находится банки 0, 1, 3, 4, 6 и 7.
  
 +
{| class="standard"
 +
!Смещение
 +
!Размер
 +
!Назначение
 +
|-
 +
|0
 +
|27
 +
|Соответствует версии для 48K
 +
|-
 +
|27
 +
|16384
 +
|Содержимое 5 банка ОЗУ
 +
|-
 +
|16411
 +
|16384
 +
|Содержимое 2 банка ОЗУ
 +
|-
 +
|32795
 +
|16384
 +
|Содержимое текущего банка ОЗУ, отображаемого в адресах 49152..65535
 +
|-
 +
|49179
 +
|2
 +
|Регистровая пара PC
 +
|-
 +
|49181
 +
|1
 +
|Состояние порта [[Порт 7FFD|#7FFD]]
 +
|-
 +
|49182
 +
|1
 +
|Выбор ПЗУ [[TR-DOS]] (0 - неактивно, 1 - активно)
 +
|-
 +
|49183
 +
|16384*n
 +
|Оставшиеся банки ОЗУ в порядке возрастания номеров
 +
|}
  
 
[[Категория:Форматы файлов]]
 
[[Категория:Форматы файлов]]

Текущая версия на 19:35, 15 сентября 2008

SNA (*.sna) - формат для сохранения состояния эмулируемого ZX Spectrum 48K или 128K (т.н. снапшот). Вероятно, был разработан автором эмулятора Spectrum (Rui Ribeiro?). В настоящее время поддерживается большинством эмуляторов.

Исходная версия формата, предназначенная для сохранения состояния только 48K компьютеров, имела недостаток - регистр PC сохранялся на стеке эмулируемого компьютера, таким образом изменяя содержимое двух байт ОЗУ. В версии формата для 128K компьютеров этот недостаток был устранён.

Версия для 48K

Смещение Размер Назначение
0 1 Регистр I
1 8 Альтернативные регистровые пары HL, DE, BC, AF
9 10 Основные регистровые пары HL, DE, BC и пары IY, IX
19 1 Флаги прерываний. Бит 2 содержит состояние IFF2 (сброшен при DI, установлен при EI)
20 1 Регистр R
21 4 Регистровые пары AF, SP
25 1 Режим прерываний (0..2)
26 1 Цвет бордюра (0..7)
27 49152 Содержимое ОЗУ по адресам 16384..65535

Версия для 128K

Файл имеет размер 131103 или 147487 байт. Содержимое текущего выбранного банка ОЗУ сохраняется в любом случае, даже если это банк 2 или 5 - в этом случае соответствующий банк хранится в файле дважды. Банки в конце файла сохраняются в порядке возрастания номеров, но только если они не сохранены в первой части файла. Например, если в первой части файла сохранены банки 5, 2 и 4 - в конце файла должны быть сохранены банки 0, 1, 3, 6 и 7; если в первой части сохранены банки 5, 2 и 5 - в конце файла должны находится банки 0, 1, 3, 4, 6 и 7.

Смещение Размер Назначение
0 27 Соответствует версии для 48K
27 16384 Содержимое 5 банка ОЗУ
16411 16384 Содержимое 2 банка ОЗУ
32795 16384 Содержимое текущего банка ОЗУ, отображаемого в адресах 49152..65535
49179 2 Регистровая пара PC
49181 1 Состояние порта #7FFD
49182 1 Выбор ПЗУ TR-DOS (0 - неактивно, 1 - активно)
49183 16384*n Оставшиеся банки ОЗУ в порядке возрастания номеров