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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 29

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

  1. #1
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,643
    Спасибо Благодарностей отдано 
    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
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,552
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    181 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectramine Посмотреть сообщение
    7й бит - Was Jump (1 - последней была выполнена команда перехода), нужен для определения флагов временного запрета прерываний и состояния Halted процессора: после команды EI и префиксов #DD/#FD прерывания запрещены, если PC не выставлен на данный адрес после команды перехода. Аналогично после команды HALT процессор находится в состоянии Halted, если PC не выставлен на данный адрес после команды перехода
    как определяется "после"? если чисто по расположению байт, то кроме перехода код префикса или команды ei может оказаться частью данных на самом деле
    Прихожу без разрешения, сею смерть и разрушение...

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

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    как определяется "после"? если чисто по расположению байт, то кроме перехода код префикса или команды ei может оказаться частью данных на самом деле
    Мда. Логично. Значит, одним WasJump не обойдешься, или он вообще не нужен, а нужны отдельные флаги Halted и TempDI.

    - - - Добавлено - - -

    А может и TempDI не нужен, т.к. прерывание должно быть обработано сразу после выполнения команды, если оно подтверждено, и PC указывает на ISR.
    Последний раз редактировалось Spectramine; 06.08.2023 в 19:02.

  5. #4
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectramine Посмотреть сообщение
    Расширение формата делается путем добавления дополнительных строк перед основными
    1. Кем и как будет утверждаться расширение формата?
    2. Кмк, важнее не то, что в файле удобно "глазами" что-то искать, а хотя бы простенькая утилита (вин-лин-мак) для парсинга и выплёвывания нужной инфы в консоль в текстовом виде (список страниц, состояние регистров, модель и т.п.)
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

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

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    1. Кем и как будет утверждаться расширение формата?
    2. Кмк, важнее не то, что в файле удобно "глазами" что-то искать, а хотя бы простенькая утилита (вин-лин-мак) для парсинга и выплёвывания нужной инфы в консоль в текстовом виде (список страниц, состояние регистров, модель и т.п.)
    1) В этой и параллельной теме на Spectrum Computing можно предлагать расширения, обсуждать и утверждать их. Но, честно говоря, я не вижу серьёзных причин для расширения формата. Описывать состояние подключенной периферии? Можно, но придется решать вопрос и с образами носителей и именами их файлов, придется вводить в формат строки и данные произвольной длины, для них нужна отдельная область в формате. Тоже решаемо в принципе, но вообще на текущий момент формат не претендует на исчерпывающее описание состояния системы, включая подключенную периферию и связанные с нею образы носителей, как SZX. Это всего лишь удобная для просмотра/исследования альтернатива форматам снапшотов .sna и .z80. Хотя можно заморочиться, конечно, и с состоянием периферии, если формат окажется востребован, и появится такая необходимость.

    2) Для данного формата важно именно то, что в файле удобно искать и читать нужную инфу глазами в хекс-вьювере. Утилиту для парсинга и вывода нужной инфы можно написать для любого существующего формата, или нескольких, новый формат для этого не нужен.

  7. #6
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectramine Посмотреть сообщение
    и параллельной теме на Spectrum Computing
    на Гадском Спецтрум Компутенге форматы не пообсуждаешь
    ибо тамашний капиталистический админ иноагент не дает людям править посты через пару часов...

    - - - Добавлено - - -

    а как без обновления первого пста фиксироватоь результаты науке неизвестна

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а как без обновления первого пста фиксироватоь результаты науке неизвестна
    Я уже делал - пишешь админу, он обновляет первый пост. Заморочно, конечно, немного.

  9. #8
    Member
    Регистрация
    06.11.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    144
    Спасибо Благодарностей отдано 
    72
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectramine Посмотреть сообщение
    удобном для просмотра и модификации формате состояния компьютера ZX Spectrum
    Если предполагается модификация, а не только просмотр, тогда должен быть конвертер обратно в снапшоты для загрузки в эмулаторы?

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

    По умолчанию

    Цитата Сообщение от vlad-kras Посмотреть сообщение
    Если предполагается модификация, а не только просмотр, тогда должен быть конвертер обратно в снапшоты для загрузки в эмулаторы?
    Этот формат и есть формат снапшота для загрузки/выгрузки в/из эмулятор/а, альтернатива SNA и Z80. Просто его основное преимущество перед существующими - удобство просмотра/редактирования вне эмулятора.
    Скорее всего, эмулятор, поддерживающий этот формат, поддерживает и другие, так что, при желании, можно загрузить в этом формате и выгрузить в SNA, Z80 или SZX.

  11. #10
    Veteran
    Регистрация
    06.02.2009
    Адрес
    Кемерово
    Сообщений
    1,328
    Спасибо Благодарностей отдано 
    58
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    129 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для удобства просмотра и редактирования делайте на базе xml. Содержимое страниц можно хранить либо в base64 строках, либо в дополнительных файлах.
    ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC

  12. Этот пользователь поблагодарил marinovsoft за это полезное сообщение:

    Dexus (15.08.2023)

Страница 1 из 3 123 ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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