Так поглядел внимательнее даташит и исходники плеера. По сути YMF278 нужно шесть портов или адресов. Четыре из них относятся к FM части и два относятся к цифровой (волновой синтез) части.
Как оно в MSX
FM часть
порт C4h -> запись адреса регистра (набор регистров 1)
C5h - запись данных в регистры набора 1
С6h - запись адреса регистра (набор регистров 2)
C7h - запись данных в регистры набора 2
Кроме того регистр C4h на чтение - статус
Wave часть
Регистр 7Eh - запись адреса регистра
7Fh - запись или чтение данных
Итого тут наблюдается два пересечения с портами ZX клонов.
7Fh - регистр контроллера FDD TR-DOS
С7h - регистр 8255 Profi CP/M
Первое это очень плохо, так как TR-DOS оно как бы везде, второе работает только на Профи в режиме CP/M. По сути можно пренебречь, так как Профи достаточно специфическая машина со своими стандартами и наворотами, как и АТМ. Простому смертному они как бы и не нужны.
Способ обхода 7Fh известен давно, просто отслеживать обращение к контроллеру TR-DOS, но есть некоторые ограничения описаны выше.
Либо сделать красиво и перенести все 6 регистров на порты C0...С5h, тогда будет все хорошо и уютно, кроме Профи (С3h там тоже есть).
А так как хотелось поиграться с векторами прерываний, то взять свободные пару портов С6 или С7. Короче, чтобы весь диапазон C0...C7 был за Moonsound.
Как говорится, один хрен адаптировать плееры
Итак, к примеру если будет выглядеть так.
FM часть
порт
C0h -> запись адреса регистра (набор регистров 1)
C1h - запись данных в регистры набора 1
С2h - запись адреса регистра (набор регистров 2)
C3h - запись данных в регистры набора 2
Кроме того регистр C0h на чтение - статус
Wave часть
Регистр С4h - запись адреса регистра
С5h - запись или чтение данных
С6h - резерв
С7h - регистр вектора прерывания.
Как оно вам, и пусть котэ правит стандарт![]()





Ответить с цитированием