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