Делая утилиту для дампа TZX в компилируемый asm файл в формате zasm (чтобы можно было легко руками подпраивить содержимое и скомпилить обратно в TZX), я заметил одну странность в TZX блоке #19 (generalized data).
Вот пример с дампом hollywood-poker.tzx из набора тестов для TZX v1.20:
А именно - в словаре импульсов для пилот-тона, последний импульс 0, что технически некорректно, т.к. такой импульс приведет к смене полярности. В эмуляторах нулевые импульсы в словаре пилот-тона просто игнорируются (стоит проверка на ноль и если она срабатывает, импульс игнорируется), поэтому все работает.Код:#TZX GENERALIZED, BLOCK10_DATA, 0, *, flag=$21, pause=0 .tzx-pilot-sym 0, 2168,0 ; symbol#0 for pilot .tzx-pilot-sym 0, 667,735 ; symbol#1 for pilot .tzx-pilot 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,256, 1,1, 0,258, 1,1 ; pilot 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 256 x #0, 1 x #1, 258 x #0, 1 x #1 .tzx-data-sym 0, 855,855 ; symbol#0 for data .tzx-data-sym 0, 1710,1710 ; symbol#1 for data
Кстати, zasm не принимает этот ноль в словаре пилот-тона при компиляции, его нужно удалить, чтобы блок скомпилировался. И, что интересно, он сам добавляет 0 в конец словаря пилот-тона.
В описании формата TZX v1.20 присутствует этот ноль в примере словаря пилот-тона (судя по данным, пример в документации TZX приведен именно из вышеуказанного блока hollywood-poker.tzx)
Однако непонятно - в чем смысл был включать нулевой импульс в словарь пилот-тона? Это ошибка, которую все эмуляторы игнорируют, т.к. она описана в примере блока #19 в самом описании формата? Или я чтото не понимаю?Код:0x12 SYMDEF[0]: ( 0, 2168, 0 ) Pilot/sync symbol definitions SYMDEF[1]: ( 0, 667, 735)
В аттачменте сам tzx и два его дампа в архиве - компилируемый asm дамп с проигнорированным импульсом 0 в словаре и асм дамп с префиксом -raw, т.е. в том виде как он записан в tzx.