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: если использовать такие команды, как OUTD и OUTI для вывода в порт, данные на самом деле выводятся на порт BC-256 (регистр B уменьшен на 1, то есть BC на 256 перед выводом). Таким образом, в OUT-файле может храниться неверный адрес порта (уменьшенный на 256).

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