Пытался разобраться, почему Emu80 зависает на чтении регистров ВИ53 в программе "Wave AY".
Из описания ВИ53:
Скрытый текст
Существуют задачи, в которых процессор должен периодически считывать содержимое счетчиков
каналов. Примером такой задачи может служить счет событий. Во время работы счетчика его текущее
содержимое может быть передано в буферный и прочитано двумя способами: при помощи обычной операции
чтения или с помощью специальной схемы "чтения на лету", активизируемой вводом специального
управляющего слова.
При первом способе для обеспечения стабилизации показаний счета работа счетчика должна быть
приостановлена подачей на управляющий вход уровня "0" (в режимах 0, 2, 3, 4) или с помощью внешней
логической схемы, приостанавливающей подачу импульсов на тактовый вход канала.[свернуть]
Кусок кода "Wave AY":
Скрытый текст
Код:; MVI A,00000100B ; "чтение на лету" OUT 008H PAUSE1: IN 00BH ANA A JNZ PAUSE1[свернуть]
Когда закомментировал установку режима "чтение на лету" - программа перестала зависать.
При установленном режиме "чтение на лету" - из регистров постоянно читалось записанное в них значение, как будто ВИ53 вообще не уменьшает значение счетчика.
- - - Добавлено - - -
Тогда я переживаю, почему на реале, я вообще ни чего не увидел на выходах ВИ53. Там была стабильная "1".
В исходнике "Wave AY" заменил режим "2" работы таймера на "0"-режим, и в эмуляторе "Emu" фоновый свист полностью пропал.но в эмуляторе VV звук воспроизводится с частотой 44КГц, а то что слышно в виде свиста это скорее всего биение частоты ШИМа при ресэмплировании к частоте 44КГц. В VV есть фильтр который настроен на подавление частот выше 20КГц, но в данном случае он почти бесполезен.
Вечером попробую в других эмуляторах.