╔═════════════════════════╗
║ Программистам об AY-шке ║▓
╚═════════════════════════╝▓▒
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░
░░░░░░░░░░░░░░░░░░░░░░░░░░░
ТЕХНИЧЕСКАЯ ИНФОРМАЦИЯ ПО ПРОГРАММИРОВАHИЮ
МУЗЫКАЛЬНОГО СОПРОЦЕССОРА "AY" НА SPECCY !
==========================================
Музыкальный сопроцессор подключается к
спектруму через два внутренних порта:
1. Порт 49149 (#BFFD)
2. Порт 65533 (#FFFD)
Именно через эти два порта процессор Z80
осуществляет обмен данными с муз.сопр. У
муз.сопр. имеется шестнадцать внутренних
регистров R0...R15.Эти регистры двунаправ-
ленные,т.е. информацию можно в них записы-
вать и считывать.Для доступа к произволь-
ному регистру его неужно сделать теку-
щим,для этого надо записать номер этого
регистра (0..15) в порт 65533... после
этого можно осуществлять обмен данными с
этим регистром:
Для записи в рег. - вывод в порт 49149
Для чтения из рег. - чтение из порта 65533
Муз.сопр. имеет три независимых канала для
формирования звука (A,B и C) и два
двунаправленных восьмиразрядных канала
ввода/вывода - IRA и IRB:
Через канал IRA осуществляется связь с
принтером, вывод сигналов для специального
интерфейса MIDI и, кроме этого,связь со
специальной выносной клавиатурой функцио-
нальных клавиш, используемых в расширенном
интерпретаторе Бейсика.
Но данные функции канал IRA выполняет в
натуральном Sinclairе, а у нас в России в
наших моделях это не прижилось... ( по
крайней мере мной небыло найдено ни одной
машины, где бы так использовался канал
IRA)...
В наше время каналы IRA и IRB некоторыми
используються для подключения внешних
устройств: AY-Mouse, AY-Covox и т.д. Hеко-
торые из них даже стали стандартом, правда
не очень распостраненным (Ay-Mouse).
Теперь рассмотрим для чего нужны все ре-
гистры и как сформировать звук:
*** R0/R1, R2/R3, R4/R5 ***
Три спаренных регистра R0/R1;R2/R3;R4/R5
используются для выборки частоты тона
соответственно для каналов A,B и C.
Необходимые двенадцатиразрядные значения
образуються из восьми бит младшего по но-
меру регистра и четырех младших бит стар-
шего по номеру регистра...
*** Регистр R6 ***
Младшие пять разрядов этого регистра за-
дают частоту шума...
*** Регистр R7 ***
Через этот регистр осуществляется управле-
ние звуковыми и шумовыми каналами, а так-
же каналами ввода/вывода IRA и IRB:
Биты 0..2
если их установить,то будет запрещен вы-
вод частоты тона в каналы A,B и C соотв.
Биты 3..5
-//- но для частоты шума...
Биты 6 и 7
Их состояние определяет режим работы ка-
налов IRA и IRB соответственно:
если бит=1, то канал работает на ввод...
если бит=0, то канал работает на вывод..
*** Регистры R8,R9 и R10 ***
Младшие пять разрядов этих регистров уп-
равляют соответственно амплитудой каналов
A,B и C.
*** Регистры R11/R12 ***
Спаренные регистры R11/R12 образуют
шестнадцатиразрядное значение огибающей
выходного сигнала,R11-младш. R12-старш.
*** Регистр R13 ***
Младшие 4 разряда этого регистра управляют
формой и режимом огибающейвыходного сигна-
ла:
Бит 0 - затухание
Бит 1 - чередование
Бит 2 - нарастание
Бит 3 - продолжение
*** Регистры R14/R15 ***
R14-связь с IRA R15-связь с IRB ...
------------------------------------------
Теперь конкретно о воспроизведении Digital
эффектов:
Оцифрованный звук представляет из себя
конечный набор восьмиразрядных байт, ха-
рактеризующих значения амплитуды цифруемых
колебаний в дискретные моменты времени...
Для воспроизведения оцифровок нужно пода-
вать в порты управления громкостью эти
байты с определенной частотой...
Распространены два вида форматов Digital
звука
1.Wav-файлы: Оцифровка производиться по
256-бальной шкале (0..255), только поло-
жительной части звуковой волны...
2.Aif-файлы: Оцифровка производиться по
двум 128-бальным шкалам:
Положительная часть волны (0...128)
Отрицательная часть волны (-128...0)
Рассмотрим как же воспроизвести оцифр.
звук: Если у вас есть COVOX, то значения
байтов из WAV-файла целиком и полностью
подаются в порт данных COVOX`а. Для проиг-
рывания AIF-файлов к каждому байту перед
подачей его на COVOX надо прибавить число
128...
Это обуславливается тем, что COVOX -это
устройство для воспроизведения восьмибит-
ных WAV-файлов... и AIF необходимо преоб-
разовать для корректного проигрывания
COVOX'ом...
А теперь программа:
ORG 30000
COVOX EQU #FB
START EQU 35000
LENGTH EQU 5000
PAUSA EQU 20
XOR A
OUT (COVOX),A
LD HL,START
LD DE,LENGTH
LOOP LD A,(HL)
*** ADD A,128
OUT (COVOX),A
LD B,PAUSA
DJNZ $
INC HL
DEC DE
LD A,D
OR E
JR NZ,LOOP
RET
Если же у вас нет COVOX'а,но есть AY,то
можно воспроизвести DIGITAL звук на нем,
хотя качество будет похуже:
ORG 30000
START EQU 35000
LENGTH EQU 5000
PAUSA EQU 20
CHANEL EQU 10
LD BC,#FFFD
LD A,#07
OUT (C),A
LD B,#BF
LD A,#FF
OUT (C),A
LD HL,START
LD DE,LENGTH
LD BC,#FF
LD A,CHANEL
OUT (C),A
LOOP LD B,#BF
LD A,(HL)
*** ADD A,128
SRL A
SRL A
SRL A
OUT (C),A
LD B,PAUSA
DJNZ $
INC HL
DEC DE
LD A,D
OR E
JR NZ,LOOP
RET
Переменные используемые в программах имеют
следующие значения:
START- адресс хранения в памяти оцифровки.
LENGTH - длина оцифровки.
COVOX - порта COVOX'а (обычно #FB для
PENTAGONA 128, и 231 для SCORPIONA 256)...
CHANEL-канал для воспроизведения(см. выше)
PAUSA-самый главный параметр.Он определяет
с какой частотой будет проигрываться оциф-
ровка. Вообще говоря PAUSA задает время
паузы между двумя соседними выводами в
звуковой канал...
В обоих случаях звездочкой помечены строч-
ки, которые необходимо оставить, если
воспроизводятся AIF-файлы, и надо удалить
для воспроизведения WAV-файлов...
Вот в принципе и все что надо знать чтобы
воспроизвести оцифровку...
Но данный способ воспроизведения является
частото время зависимым, т.е. при измене-
нии частоты изменяется соответствующим об-
разом и время воспроизведения инструмен-
та...