6.1. Регистры R0 - младший байт частоты канала A R1 - старший байт частоты канала A R2 - младший байт частоты канала B R3 - старший байт частоты канала B R4 - младший байт частоты канала C R5 - старший байт частоты канала C Требуемая частота любого канала полу- чается путем деления тактовой частоты соп- роцессора на 16 с последующим делением ре- зультата на 12-ти разрядное значение, по- лучаемое слиянием регистра младшего байта частоты и битов D0...D3 регистра старшего байта частоты. Таким образом, всего можно задать 4095 различных частот (от 27 Гц до 110 кГц). Естественно, самых высоких Вы не услышите. Обратите внимание, что разница между двумя соседними значениями в облас- ти низких частот составляет доли герца, а в области высоких частот достигает нес- кольких килогерц. Младший и старший байты, а также часто- ту можно рассчитать по следующим формулам: Hi=INT(INT(110830/Fq+.5)/256) Lo=INT(110830/Fq+.5)-Hi*256 Fq=110830/(Lo+256*Hi) где Hi - старший байт, Lo - младший байт, а Fq - частота в Гц. Обратите внимание, что в большинстве случаев заданную часто- ту невозможно точно передать музыкальному сопроцессору. В таблице 9 приведены значе- ния регистров тона для всех возможных нот. R6 - задает частоту шума Требуемая частота шума получается пу- тем деления тактовой частоты на 256 с пос- ледующим делением результата на 5-ти раз- рядное значение, расположенное в пяти мла- дших разрядах (D0...D4) регистра R6. Всего можно задать 31 различную частоту (от 223 Гц до 7 кГц). Значение регистра R6 и час- тоту шума можно рассчитать по следующим формулам: R=INT(6927.3437/Fq+.5) Fq=6927.3437/R где R - значение R6, а Fq - частота в Гц. Все сказанное про генераторы тона также справедливо и для генератора шума. R7 - управление микшером и вводом/ выводом Отдельные биты этого регистра использу- ются в различных целях: D0 - тон канала A D1 - тон канала B D2 - тон канала C D3 - шум канала A D4 - шум канала B D5 - шум канала C D6 - порт A: 0 - ввод/1 - вывод D7 - порт B: 0 - ввод/1 - вывод (только AY-3-8910) Ноль в битах D0...D5 указывает на то, что функция разрешена. Таким образом, каж- дый канал можно настраивать на три различ- ных состояния: тон, шум и тон + шум. Порты ввода/вывода, содержащиеся в музыкальном сопроцессоре, в ZX-Spectrum не используют- ся, однако к ним можно подключить допол- нительные джойстики, принтер, MIDI-интер- фейс или что-нибудь подобное. Порт B суще- ствует только в AY-3-8910. R8 - управление амплитудой канала A R9 - управление амплитудой канала B R10 - управление амплитудой канала C Биты D0...D3 этих регистров устанавли- вают громкость для каждого из каналов (от 0 до 15). Если в одном (или нескольких) из них установлен бит D4, то значение в млад- ших битах игнорируется, а амплитудой дан- ного канала управляет генератор огибающей (см. дальше). R11 - младший байт периода огибающей R12 - старший байт периода огибающей Требуемый период огибающей получается путем деления тактовой частоты сопроцессо- ра на 256 с последующим делением результа- та на 16-ти разрядное значение, получае- мое слиянием регистров R11 и R12. Всего можно задать 65535 различных периодов. Значения регистров R11 и R12, а также час- тоту и период огибающей можно рассчитать по следующим формулам: Hi=INT(INT(6927.3437/Fq+.5)/256) Lo=INT(6927.3437/Fq+.5)-Hi*256 Fq=6927.3437/(Lo+256*Hi)=1/Pd Pd=(Lo+256*Hi)/6927.3437=1/Fq где Lo и Hi - значения регистров R11 и R12, соответственно, Fq - частота огибаю- щей в Гц, а Pd - период огибающей в секун- дах. R13 - управление формой огибающей Требуемая форма огибающей задается би- тами D0...D3 регистра R13 следующим обра- зом: D0 - затухание D1 - чередование D2 - нарастание D3 - продолжение В таблице 10 приведены все возможные комбинации этих битов. R14 - порт ввода/вывода A R15 - порт ввода/вывода B Как уже говорилось выше, порты ввода/ вывода большого значения не имеют и на ге- нерируемый звук не влияют.