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