Moderator: Mick
Программирование карты.
1. часть SAA1099 (ревизии Light, Middle и Extreme)
Та самая часть, ради которой и все было затеяно. Этот шестиканальный чип перекочевал на Спекки
прямиком с компьютера Sam Coupe, где он использовался как основна его музыкальных возможностей.
Про регистры микросхемы лучше всего можно прочитать в даташите на него.
Отметить стоит только что в микросхеме нет хардварного ресета, т.е. инициализацией должен заниматься
сам программист. Самым распростарненным редактором на Sam Coupe был E-Tracker, почти вся музыка которого
можно прослушать на Спекки (выпуски E-Tunes). Менее распространенный там это Pro Tracker 2 (не путать со Спековским)
Собственно порты те же самые как и в оригинальном Sam Coupe
0FFh - порт данных
1FFh - порт адреса
Сразу отмечу, что в микросхему можно только писать, чтение невозможно.
И как сказал выше, чтобы микросхема не балаболила сама по себе, прохождение тактовой частоты на нее надо разрешить, ну и
когда не нужно запретить. Для этого нужно использовать соотвествующий бит в адресном простарнстве AY (правило программирование
режимов TSFM)
Шаблон адреса (старший разряд слева) номера регистра:
Бит 7 6 5 4 3 2 1 0
1 1 1 1 SAA FM STAT SEL
Где:
SEL - выбор активной микросхемы YM2203. Лог "0" - aктивная микросхема AY1. Лог "1" - активная микросхема AY2.
STAT - управление чтением регистра SSG или статусного регистра. Лог "0" - вывод статусного регистра. Лог "1" - вывод содержимого регистра SSG.
FM - управление генерацией fm. Лог "0" - генерация разрешена. Лог "1" - генерация запрещена.
SAA - управление тактовой частотой SAA1099. Лог "0" - тактовая частота включена. Лог "1" - тактовая частота выключена.
Для наглядного примера приведу две процедуры:
a. Разрешение работы SAA1099
Enable_SAA1099:
ld bc,0FFFDh
ld a,0f6h
out (c),a
ret
b. Запрещение работы SAA1099
Disable_SAA1099:
ld bc,0FFFDh
ld a,0feh
out (c),a
ret
с. Правило работы
call Load_Music
call Enable_SAA1099
call SAA1099_Init
.....
Loop:
halt ;если используем прерывания
call SAA1099_Play ;
.....
jp Loop
Exit:
call SAA1099_Init
call Disable_SAA1099
Наглядным примером может служить выпуски E-Tunes, с исходниками которого можно ознакомится на сайте.
Кроме того также отмечу, то обращение к портам производится когда сигналы DOS/ = 1 и IODOS/ = 1
2. часть SounDrive (ревизии Middle и Extreme)
В принципе программирование этой части ничем не отличается от программирования обычного SounDrive, а по сути,
это обычные ЦАПы. В данной карте применен счетверенный ЦАП TLC7226CN.
Таблица соотвествия портов и каналов ЦАП
---------------------------- SounDrive v1.05 ---------------------------------
-- Порты:
-------------------------------------------------------------------------------
-- Режим 1:
-- #0F = левый канал A или канал 1 стерео Covox (DAC_BA = 00)
-- #1F = левый канал B (DAC_BA = 01)
-- #4F = правый канал C или канал 2 стерео Covox (DAC_BA = 10)
-- #5F = правый канал D (DAC_BA = 11)
-------------------------------------------------------------------------------
-- Режим 2:
-- #FB = правый канал D или канал 2 стерео Covox (DAC_BA = 11)
-------------------------------------------------------------------------------
-- Режим 3:
-- #3F = левый канал Covox Profi (DAC_BA = 01)
-- #5F = правый канал Covox Profi (DAC_BA = 11)
-------------------------------------------------------------------------------
Так как некоторые порты пересекаются с портами контроллера FDD, то обращение к ним производится
когда сигналы DOS/ = 1 и IODOS/ = 1
3. часть TSFM (ревизия Extreme)
Программирование этой части также не отличается от программирования обычного AY или TSFM, описание которого,
можно взять на сайте группы NedoPC
Отмечу, что в дополнении введен порт FFFCh, который немного вносит разнообразие в режимы карты.
Описание битов порта можно найти на соотвествующей странице моего сайта, но так сказать продублирую
Биты порта 0FFFCh (старший разряд слева):
Бит 7 6 5 4 3 2 1 0
BLKAY2 - - - - - CLKEXT CLKMODE
Где:
CLKMODE - выбор режима входной частоты микросхем YM2203. Лог "0" - стандартная чатота (значение после сброса). Лог "1" - расширенная частота (см значение бита 1).
CLKEXT - управление расширеным режимом входной частоты. Лог "0" - режим Amstrad CPC (значение после сброса) Лог "1" - режим Atari ST.
BLKAY2 - блокировка доступа второй микросхемы AY2. Лог "0" - доступ разрешен (значение после сброса). Лог "1" - доступ запрещен.
Для наглядного примера приведу несколько процедур процедуры:
a. Выбор режима входной частоты Amstrad CPC
Set_clk_Amstrad:
ld bc,0FFFCh
ld a,01h
out (c),a
ret
b. Выбор режима входной частоты Atari ST
Set_clk_Atari:
ld bc,0FFFCh
ld a,03h
out (c),a
ret
c. Блокировка второй микросхемы YM2203
Disable_AY2:
ld bc,0FFFCh
ld a,80h
out (c),a
ret
g0blinish wrote:Кажется, на твоем сайте был эмулятор?
Mick wrote:В принципе, помоему сейчас и в обычном анрыле уже есть. Просто отличаются используемыми библиотеками.
Mick wrote:Если вдруг захочешь сделать демку с музоном, могу подогнать примерчик
g0blinish wrote: SAA1099 или YM2203?
g0blinish wrote:вот засада:(
g0blinish wrote:если чип TSFM, будут вопросы, которые оффтоп.
Mick wrote:Так будешь слушать музон для SAA1099 или нет?
Mick wrote:Кстати, ты можешь использовать частоты Амстрада (1Мгц)
g0blinish wrote:я наслушался, когда СэмКуп изучал. Ты много музонов рипнул?
g0blinish wrote:ну хз. Если из SoundTrakker музоны перетянуть....
g0blinish wrote:а рпо YM2203 я почему спросил: я маялся с NEC PC88, было б неплохо музон портировать.Но, видимо некуда пока.
g0blinish wrote:YM2203 я почему спросил: я маялся с NEC PC88, было б неплохо музон портировать.
LasDesu wrote:только почему-то в конфиге выключен.
Mick wrote:Порядка 600 треков только от E-Tracker (те которые компилированные)
Mick wrote:Но надо графику рисовать
Mick wrote:А подробности, там тоже что ли стоит YM2203. Какая входная частота?
Много музонов и примеры есть?
Mick wrote:А подробности, там тоже что ли стоит YM2203. Какая входная частота?
moroz1999 wrote:Если у кого есть еще мелодии - буду благодарен, давайте соберем максимальный архив.
moroz1999 wrote:Если у кого есть еще мелодии - буду благодарен, давайте соберем максимальный архив.
moroz1999 wrote:даже Sam Coupe подходит по тематике с большим натягом,
Users browsing this forum: No registered users and 1 guest