На такой случай разумнее делать бэкапы,завести под них отдельный диск или облачное хранилище.
А снапы не тот тип файлов, по которым будешь сильно скучать. Вот по исходникам да, обидно.
- - - Добавлено - - -
Кроме того, такие снапы, если это не рабочие материалы, наверняка будут припакованы архиватором, а там сигнатура уже есть)
- - - Добавлено - - -
По поводу .snv - в строке с TStates/Frames Counter последние 4 байта надо отвести под конфиг пространства памяти Z80: номера страниц памяти в окнах 0..3FFF,4000..7FFF,8000..BFFF,C000..FFFF, чтобы их сходу было видно без декодирования выводов в порт. Отрицательные значения - страницы ПЗУ, положительные - страницы ОЗУ. Тогда освобождается один байт в последней строке файла. Больше двух мегабайт ОЗУ так не закодируешь, но может и не надо. 8-килобайтные конфиги, как в TC2068, конечно, придется кодировать как-то по-другому, в дополнительных строках.
- - - Добавлено - - -
Опять же, чтобы лучше читалось, номера страниц ПЗУ можно хранить в формате $80 + номер страницы ПЗУ из списка возможных, чтобы не декодировать в уме отрицательные значения.
- - - Добавлено - - -
Итого свободных два байта в 3й строке от конца, и 1 байт в 1й строке. Пусть вместо номера страницы ПЗУ в первой строке с конца будет 8 бит конфигурации системы (Issue 2/3 и прочее).
А 3я строка с конца - 4 байта TStates, 4 байта Frames Counter, MemPtr, 2 байта свободно пока, и 4 байта конфига памяти, последний байт - 3е окно (C000..FFFF).
- - - Добавлено - - -
Вот и нашлось применение для свободных байтов в третьей строке с конца - 1 байт - количество сохраненных страниц ОЗУ, 2й байт - количество сохраненных страниц ПЗУ. Если в текущем конфиге памяти активны страницы ПЗУ, и указано, что в снапе ненулевое количество страниц ПЗУ, они идут в первых 64 кб снапшота, остальные - после текущего конфига и остальных страниц ОЗУ. А сразу после сохраненных страниц ПЗУ идут байты порядка номеров сохраненных неактивных страниц памяти, выровненные в 16-байтную строку (или строки). Т.е. можно сохранять не все неактивные страницы ОЗУ/ПЗУ, а только нужные.
- - - Добавлено - - -
Итого третья строка с конца - 4 байта TStates, 4 байта Frames Counter, MemPtr, количество сохраненных страниц ОЗУ, количество сохраненных страниц ПЗУ, 4 байта номеров страниц текущего конфига памяти.
А первая 16-байтовая строка с конца файла:
PC, SP, IX, IY, IR, байт флагов состояния системы и режима прерываний, байт флагов конфигурации системы (например, Issue 2/3), последнее значение для портов FE, 1FFD, 7FFD и байт кода модели Spectrum.



Ответить с цитированием

