MC68k писал(а):@Mick 1) сэмплы никакого отношения к таймеру не имеют. 2) наверное надо посмотреть, как устроены прерывания в MSX.
1) Дык про семплы речи не идет, они просто загоняются в SRAM карты. Я имел ввиду саму музыку с какой частотой она играет. Так вот байт тот принимает три значения - 50Гц, 60Гц и любительский
Вот пример из плеера
Код: Выделить всё
ld a,(xhzequal) ; Base frequency
or a
jr z,Speed60Hz
cp 1
jr nz,Speedxhz
ld a,248
jr Speedxhz
Speed60Hz:
ld a,208
Speedxhz:
neg
out (MOON_DAT1),a
nop
ld a,4
out (MOON_REG1),a
nop
ld a,00100001b
out (MOON_DAT1),a
ei
ret
2) По поводу прерываний. Там по сути два прерывания - одно от видеоконтроллера, которое может запрещаться и второе от внешних слотов. Соединяются они через элемент И. Кстати, сам не зная я в Зефирке так слепил

Получается в MSX можно пользоваться только прерыванием от внешней карты, если отключить прерывание от видеоконтроллера. А можно не отключать, тогда обработчик у них выглядит так
Код: Выделить всё
opl4_int_han:
in a,(MOON_STAT) ;проверяем была ли сработка прерывания от карты
rla
ret nc ; нет, это видеоконтроллер - выход
rst 030h
Page_nmb:
db 0
dw play_int ; иначе идем играть музыку
ret