OUT

Поддерживаются OUT-файлы, созданные эмулятором ZX Spectrum "Z80" (G.A. Lunter) версий 3.02 и 3.03.

OUT-файл представляет собой последовательность блоков по пять байт: первое слово блока – время в тактах процессора (в диапазоне 0–17471), второе слово – адрес порта, в который осуществлён вывод, третье значение размером в байт – записанное в порт значение.

Каждый 17472-й такт процессора всегда (независимо от того, был в этот момент вывод или нет) записывается один такой блок (если во время этого такта не было вывода, то первое слово блока равно 65535).

Один такт процессора в указанном эмуляторе равен 1/3494400 секунды.

В общем случае OUT-файл может содержать вывод в любые порты ZX Spectrum, в частном – только в те, которые указаны в соответствующих настройках эмулятора "Z80". Для того, чтобы отследить весь вывод на музыкальный сопроцессор, следует указать "Z80" отслеживать порт #FD и затем, с помощью Ay_Emul, можно преобразовать полученный OUT-файл в более оптимальный формат ZXAY.

Эмуляторы 'Z80' и 'Z80TRDOS' (тестировались версии 3.02 и 3.03) имеют досадную ошибку. При выводе в порт командой OUTD или OUTI данные, как известно, выводятся в порт BC, после чего регистр B уменьшается на единицу (а значит ВС – на 256). В этих случаях при создании OUT-файла 'Z80' фиксирует вывод в порт, адрес которого на 256 меньше требуемого.

Если проигрыватель использует стандартные значения адресов сопроцессора (#BFFD и #FFFD), то эта ошибка не так и страшна, поскольку новые значения схемотехнически эквивалентны стандартным. В Ay_Emul учитываются схемотехнические особенности адресообразования в Speccy.