SNA

Материал из SpeccyWiki
Перейти к: навигация, поиск

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 Оставшиеся банки ОЗУ в порядке возрастания номеров