Важная информация

User Tag List

Показано с 1 по 10 из 29

Тема: Спецификация формата .SNV (SNap for View)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,645
    Спасибо Благодарностей отдано 
    243
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Спецификация формата .SNV (SNap for View)

    Текущая спецификация формата .snv. (Формат разработан на основе идеи @Lethargeek об удобном для просмотра и модификации формате состояния компьютера ZX Spectrum)



    С самого начала файла сохраняется содержимое страниц памяти, без какого-либо сжатия. Есть два размера страницы памяти - 16384 и 8192, размер страницы специфицируется в битовом поле конфигурации системы далее.

    Порядок сохраняемых страниц указывается в списке номеров страниц, расположенных сразу после содержимого последней сохраненной в файле страницы, количество сохраняемых страниц сохраняется в конце файла в дескрипторе. Таким образом, начало списка номеров страниц выравнивается по началу сегмента файла длиной, равной длине страницы (удобно найти в шестнадцатеричном просмотрщике).

    Номера страниц в списке обычно однобайтовые, но могут быть двухбайтовыми, если необходимо адресовать более 128 страниц ОЗУ или ПЗУ. Старший бит номера страницы - 0 - ОЗУ, 1 - ПЗУ. Номера страниц 0..7 ОЗУ соответствуют нумерации страниц 128кб Спектрума. Номера страниц ПЗУ должны быть специфицированы дополнительно, включая страницы ПЗУ периферии. Длина номера страницы в списке специфицируется соответствующим битом поля конфигурации далее.


    В конце файла идет постфикс-блок (хвост, описатель) с остальной информацией снапшота. Все поля постфикс-блока имеют фиксированное смещение от конца файла - таким образом, перейдя на конец файла в хекс-вьювере, мы можем легко прочитать нужные данные по фиксированным смещениям. Все поля длиной больше одного байта записывются в формате big-endian (старшие байты в начале поля, младшие в конце), для удобства просмотра в хекс-вьювере.


    В первоначальной спецификации описаны 4 16-байтовых строк описателя. Порядок полей описан слева направо, как они будут выглядеть в хекс-вьювере, т.е. последнее поле имеет самое меньшее смещение от конца файла.

    1я строка с конца файла:
    регистры Z80 PC,SP,IX,IY,IR,MemPtr(WZ);

    последний вывод в вспомогательный порт конфигурации (#1FFD +3 и Скорпиона, #EFF7 для Пентагона 1024, #FF для таймекс моделей)
    последний вывод в основной порт конфигурации (#7FFD для 128х моделей, #F4 для Таймекс-моделей)

    байт инфы по прерываниям и флагов состояния системы (предпоследний байт файла):
    7й бит - Was Jump (1 - последней была выполнена команда перехода), нужен для определения флагов временного запрета прерываний и состояния Halted процессора: после команды EI и префиксов #DD/#FD прерывания запрещены, если PC не выставлен на данный адрес после команды перехода. Аналогично после команды HALT процессор находится в состоянии Halted, если PC не выставлен на данный адрес после команды перехода
    5й бит IFF2,
    4й - IFF1,
    1й-0й биты - режим прерываний. Пока содержимое 6го, 3-го и 2го бита не специфицировано, они должны быть нулевыми. Данные номера битов выбраны исходя из удобства чтения в хекс-файле.
    (Снэпшот должен сохраняться после подтверждения прерывания, если оно должно было быть после последней выполненной команды Z80, поэтому нет необходимости хранить флаг временного запрета прерывания после команды EI или индексных префиксов).

    код модели ZX Spectrum или его клона (последний байт файла).



    2я строка с конца файла - регистры Z80 AF,BC,DE,HL,AF',BC',DE',HL' (самые значимые регистры по краям и в центре строки хекс-вьювера);



    3я строка с конца файла:

    общее количество сохраненных в файле страниц памяти (2 байта).

    турбо-множитель стандартной частоты Z80 для турбо режимов (1 байт)

    последний вывод в порт #FE

    Битовое поле флагов конфигурации системы (4 байта).
    Флаги поля конфигурации, заданные на данный момент:
    snv8kbPages = $80000000 - если не 0, длина страницы 8кб
    snvLongPageNumber = $40000000 - если не 0, длина номеров страниц 2 байта
    snvLateTimings = $00000001 - поздние тайминги
    snvCMOSZ80 = $00000002 - CMOS z80
    snvIssue2 = $00000004 - Issue 2 48кб модели
    snvMainAYpresent = $00000008 - наличие стандартного AY (Дидактик Мелодик для 48кб, может быть отключен для 128х машин)



    FramesCounter (4 байта) - счетчик фреймов от сброса Z80
    TStates (4 байта) - счетчик тактов Z80 от начала фрейма. 4 байта на случай турбо-режимов.




    4я строка с конца - определяет состояние регистров звукового чипа AY, начиная с нулевого. Может быть исключена, если AY не имеется в конфигурации системы, и нет более поздних расширений описателя за ней, при наличии более поздних расширений должна присутствовать в любом случае.

    В 4х старших битах 2го байта с начала строки (1й регистр) - дополнительная информация:
    4й бит - модель звукового чипа - 0-AY-3-8910/12 , 1 - YM2149F

    В 4х старших битах 14го байта с начала строки (13й регистр) хранится номер выбранного регистра AY (последний вывод в порт номера регистра - #FFFD для 128х и Дидактик Мелодик, #F5 для таймекс-моделей, #3F для Fuller Box)





    Расширение формата делается путем добавления дополнительных строк перед основными, чтобы смещения полей основных строк от конца файла не менялись. Предписания по расширениям формата:

    1) каждое расширение занимает целое число 16байтных строк
    2) каждое расширение имеет фиксированное смещение от конца файла
    3) при выборе полей и их порядка следует руководствоваться принципом удобства чтения полей из хекс-вьювера, так, более важные поля следует располагать по краям строки и в центре 16-байтной строки
    4) страницы памяти периферии должны сохраняться в общем формате страниц памяти, за страницами ОЗУ/ПЗУ модели, а их номера должны быть закодированы в общем порядке номеров страниц памяти
    Последний раз редактировалось Spectramine; 14.08.2023 в 21:43.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. GMX Pic View
    от izzx в разделе Софт
    Ответов: 110
    Последнее: 24.09.2021, 21:02
  2. Best View 2.19
    от Gutten в разделе Софт
    Ответов: 5
    Последнее: 15.08.2017, 15:42
  3. Описание формата TRD
    от Abadonna в разделе Разный софт
    Ответов: 7
    Последнее: 26.04.2013, 17:58
  4. 3D-View - построение 3D перспективы
    от Andrew771 в разделе Софт
    Ответов: 4
    Последнее: 02.11.2012, 11:46
  5. Описание формата .TAP
    от ILoveSpeccy в разделе Несортированное железо
    Ответов: 1
    Последнее: 20.01.2008, 18:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •