░░░░░░░░ Witchcraft ░░░░░
░▒▒▒▒▒▒▒▒░ ░▒▒▒▒▒░░
░▒▓▓▓▓▓▓▓▓▒░ ░ ░ ░▒▓▓▓▓▓▒▒░
░▒▓████████▓▒░ ░▒░ ░▒░ ░▒▓█████▓▓▒░
░▒▓███▓▓███▓▒░▒▓▒░ ░▒▓▒░▒▓███▓▓███▓▒░
░▒▓███▓▒▓███▓▒▓█▓▒░ ░▒▓█▓▒▒▓███▓▒▓███▓▒░
░▒▓███▓▒▓███▓▒▓██▓▒░▒▓██▓▒▓███▓▒▒▓███▓▒░
░▒▓███▓▒▒▓███▓▒▓███▓▒▓███▓▒▓███▓▒▒▒▓███▓▒░
░▒▓███▓▒▒▓███▓▒▓████▓████▓▒▒▓███▓▓▓████▓▒░
░▒▓███▓▒▒▓███▓▒▓█████████▓▒▒▓██████▓███▓▒░
░▒▓███▓▒▒▓███▓▒▒▓███▓█▓███▓▒▒▓███▓▓▓▒▓███▓▒░
░▓▓███▓▓▓███▓▒░▒▓███▓▓▓███▓▒░▒▓███▓▒▒▓███▓▒░
░▒▓█████████▓▒░ ░▒▓▓▓▒▒▒▓▓▓▒░░▒▓███▓▒▒▓███▓▒░
░▒▓▓▓▓▓▓▓▓▓▒░ ░▒▒▒░░░▒▒▒░ ░▒▓▓▓▒░░▒▓▓▓▒░
░▒▒▒▒▒▒▒▒▒░ ░░░ ░░░ ░▒▒▒░ ░▒▒▒░
░░░░░░░░░ ░░░ ░░░
┌────┐
┌──┐ ┌┘▒▒▒▒│
│▒▒│ ┌─────┐ │▒▒┌──┘┌────┐
┌┴──┤ │▒▒▒▒▒└┐│▒▒└┐ ┌┘▒▒▒▒└┐
│▒▒▒│ │▒▒┌┐▒▒││▒▒▒│ │▒▒┌┐▒▒│
└┐▒▒│ │▒▒││▒▒││▒▒┌┘ │▒▒││▒▒│
┌┘▒▒└┐│▒▒││▒▒││▒▒│ │▒▒└┘▒▒│
│▒▒▒▒││▒▒││▒▒││▒▒│ └┐▒▒▒▒┌┘
└────┘└──┘└──┘└──┘ └────┘
~Звук-это колебания воздуха,
которые колышат наши уши и
через них воспринимаются
мозгом, конечно если он у
вас есть.~
Hi, all!
Эту статью меня побудили написать слухи упорно ходящие
(бродящие) по просторам нашей необьятной родины, в частности в
fido. Итак что такое DMA Ultrosound Card (да-да, DMA,а не Direct
Sound). Начнем с ее звуковых возможностей:
Число каналов: 4
Разрядность, бит: 8
Уровень рег. громкости: 0-63(6 bit)
Частота дискретизации: до 3.5 MHz (НЕ KHz!)
Максимальный размер обслуживаемой памяти: 16 МБ.
(чем не звуковая карта к SPRINTER'у?!)
Т.к. спекки это не грозит, стандартно испольуется до 1МБ.
Максимальный размер сэмпла: бЧкб
(т.к. DMA видит страницы не по 1бкБ, как Z80, а по бЧкБ!)
Вообще длина сэмпла не ограничена, она просто разбивается
на отрезки кратные бЧкБ.
Программится карта ОЧЕНЬ легко, все что нужно-это закинуть в
соответствующие порты номер банка, в котором лежит сэмпл, его
адрес в банке, длину, громкость, параметр RATE и разрешить
работу программируемого канала. Чтобы потом не говорили,что мы
такие- сякие не дали примеров программинга, мы приводим готовые
процедурки. Итак, погнали:
1. Опрос наличия карты.
TEST xor a ;
ld bc,#dc77 ; > сброс DMA
out (c),a ;/
ld b,#0c ;берем 16 битный порт (регистр адреса)
ld de,#1234 ;кидаем
out (c),e ;в него
out (c),d ;любое число
in a,(c) ;считываем его из порта
cp e
jr nz,noDMA ;сравниваем его с закидываемым
in a,(c)
cp d
jr nz,noDMA ;если не оно, то DMA absent
present -------- ;иначе-приятного вам прослушивания!
noDMA -------- ;все понятно.
В отличие от теста на General Sound, комп не вешается.
2. Проигрывание сэмпла
Mode equ #48 ;0-й канал, чтение памяти, без автозагруз-
;ки, увеличение адреса, простой доступ по
;запросу
Rate equ 16 ;частота выборки в кГц
Bank equ 0 ;0-й банк
Adres equ 0 ;адрес в формате DMA(т.е. если сэмпл лежит
;в 16-й странице компа, то для DMA будет
;адрес-#0000,в 17-#8000 и т.д. до #ffff)
Len equ #2000 ;длина сэмпла 8кБ
Volume equ 63 ;громкость 0-63
Mask equ 0 ;маска для канала
PLAYER ld bc,#8c77 ;установка общего
sub a ;режима(один раз
out (c),a ;после сброса).
ld b,#fd ;устанавливаем режим первого
ld a,#34 ;канала первого таймера(тоже один
out (c),a ;раз после сброса).
ld b,#3d ;задаем
ld de,3500/Rate;частоту
out (c),e ;выборки
out (c),d ;для сэмпла.
ld b,#bc ;программится режим
ld a,Mode ;канала
out (c),a ;DMA.
ld a,Bank ;программится банк
ld b,#07 ;DMA для
out (c),a ;первого канала.
ld hl,Adres ;устанавливаем
ld b,#0c ;начальный
out (c),l ;адрес
out (c),h ;сэмпла.
ld hl,Len ;длина
ld b,#1c
out (c),l ;сэмпла.
out (c),h
ld a,Volume ;устанавливаем
ld b,#3f ;громкость
out (c),a ;звучания.
ld a,Mask ;разрешаем
ld b,#ac ;работу
out (c),a ;первого канала.
ret
Теперь можете творить все что захотите, а sample будет
играть по фону пока не сыграет все 8кБ. Можно зациклить
воспроизведение, нужно всего лишь установить 4 бит в байте Mode.
Параметры этого плейера устанавливают, что сэмпл грузится по
адресу #c000 страницы #10.
Чаще всего возникают вопросы (споры) о частоте дискретизации
(RATE), обьясню подробно: мс 8237A (8237A-4, 8237A-5, аналог -
181OВТЗ7) работает, по схеме, с максимальной частотой выборки
3.SMHz (7MHz некоторые модификации при TURBO), найти такое
применение в области звука весьма сложно, т.к. максимальная
частота дискретизации .wav 48KHz. Поэтому во всех характеристи-
ках, связанных со звуком, пишется 48KHz. Надеюсь с этим вопро-
сом разобрались.
Принцып работы основан на прямом доступе к памяти (Direct Memory
Access - DMA). Помимо звуковых возможностей устройство можно
использовать как акселератор при операциях с блоками, т.к. 8237
имеет команду аналогичную ldir которая выполняется в 2 раза (в 4
раза при 7MHz) быстрее Z80. Отсюда следующие выгоды:
1) пересылка блока память-память;
2) заполнение адресного пространства байтом.
Т.к. у 8237 размер страницы бЧкб появляется возможность пе-
ресылать данные для работы Z80 без заморочек со страницами.
Пересылка блока возможна в том случае, если имеются 2 свободных
канала. В устройстве помимо 8237 юзаются два таймера 8253 (8254,
аналог - 58Oви5З). Каждый таймер имеет по 3 канала, всего 6, из
них 4 закреплены за звуковыми каналами. Остальные 2 канала прог-
раммер может использовать по своему усмотрению, для получения
прерываний 30...150 Гц.
Если изменять частоту выборки, то можно програмно выставить
любую скорость компа (50%...100% скорости), т.е. можно получить
любой INT. Я вот лицезрел дему ADRINALIZ со скоростью 60% от но-
минальной - круто!!!
Проигрывание .mod ведется по прерываниям, реального времени
у проца DMA Sound Card забирает 1000 тактов за INT(9000 в пике).
При использовании устройства в качестве ускорителя можно напи-
сать scroll всего экрана за INT +25000 тактов проца свободно, а
при турбе 8237 scroll+ мультиколор всего экрана + 10000 тактов
проца свободно. Еще одна возможность DMA Ultrosound Card -
проигрывание с винта .wav в реальном времени с CD качеством,
стерео 44kHz, не ограниченной длинны. Ну а слушать . mod и
одновременно работать с ВГ93 вообще без проблем.
Как-то в эхе мелькала мысль, что ~...про граф сопр автор, не
знает...~, это не так, уж кому как не автору знать об этом.
Т.к. проигрывание .wav ведется по прерываниям и есть
возможность получать прерывания с различной частотой, то можно
проигрывать звук в формате аналогичном MPEG'у, благо свободного
времени у проца на распаковку хватает (теоретические разработки
уже ведутся).
Теперь о вопросе с торможением проца картой: если бы был
.wav с частотой дискретизации 1.7SМГц то он бы при проигрывании
тормозил проц на 50%. Те,кто хоть чуть-чуть знаком с арифметикой
может прикинуть сколько времени у проца займет проигрывание .wav
48кГц (примерно 3-5%). Мелькала идея увеличения тактовой у DMA
до 12-1ЧМГц. Ничего путного не получится. В области
воспроизведения звука никакого выигрыша не будет, т.к. сэмпла с
частотой дискретизации 140OOкГц не существует, а что касается
использования как ускорителя, то операция пересылки блока будет
занимать 1-2 такта. Но всегда есть ~но~ - выдержит ли память?
5б5ру7 не выдержат однозначно, а переводить всю память на симы -
и возни многовато и цена. А будет ли от этого реальный выигрыш -
ни кто не знает. Вполне достаточна тактовая 7МГц и овцы целы и
волки сыты. Единственная доработка,которую можно приветствовать-
подключение ~ведомого~ контроллера ПДП 8237, с целью увеличе-
ния числа каналов до 7(4-звуковых и 3-для обслуживания перифе-
рийных устройств как на пц).
Что касается эмуляции general'a, sound drive, ay - это
возможно как аппаратно, так и програмно. Кто-то предлогал
добавить в карту проц z80 или аналогичный, своей памяти и т.д.
Отвечу сразу: ничего хорошего не выйдет, будем иметь некий
симбиоз general sound с прямым доступом в свою же память. Мне
кажется, что это бессмысленно (кто-нибудь видел на писюке Sound
Blaster + Pentium III?), т.к. загруженность проца будет не более
10-15%. Никакой речи о дешевизне по отношению к GS после такой
доработки идти не может,т.к. процессор потянет за собой и ПЗУ,и
дополнительную логику. Наибольший плюс этой карты-независимость
от ПЗУ, в отличие о general sound, я не сомневаюсь, что глюков в
ПЗУ general'a хватит до следующего тысячилетия.
Теперь о сборке карты: схема действительно большая, но
ничего сложного в повторении нет. Сборка производится
постепенно. Существует методика сборки и отладки карты, где
очень подробно рассказано как, что и где паять, куда тыкать и на
что нажимать. Приведены всевозможные тесты. Для отладки
необходим только логический пробник на одной мелкосхеме (схема
которого приведена там же). Вполне возможно собрать карту за 3-4
недели.
Как-то Alexander Kulik писал на ответ Tim'у Kelly, мол:~...
видел я таких авторов. Присылали всякие кассетки и говорили, что
это их "детище сотворило", а на самом деле...~. Я тоже сразу не
поверил, что так играет DMA Ultrasound Card, пока не собрал ее
и не проверил в деле. Качество звука на DMA Ultrasound Card не
уступает AWEЗ2 (не верите? Можете спросить у KGS INC и у Афенди-
кова).
Некий Dmitry Moskaluk писал: ~...нафига на спектруме хорошая
звуковая плата, если ее цена раза в три(еще один камень в сторо-
ну GS-прим. автора) самого компьютера...~.О стоимости: мне обош-
лась карта в 15 баксов(!). Мс 8237 стоит - 1.50 бакса, мс 8253
по 1 баксу, 2 бакса за 8 штук 572па1 ну и логика на остальные, и
полигон.
Кстати, насколько мне известно существует две карты: одна у
Иноземцева Алексея, вторая у HARD from WITCHCRAFT (т.е. у меня).
Действительно существует и база софта под эту карту - проигры-
ватели .mod, .wav, редактор Digital Studio, и примерно двадцать
полностью озвученных игрушек. Сейчас пишется редактор .mod и
другой софт.
Т.к.DMA Ultrasound Card не коммерческая разработка(в отличие
от GS), то любая информация предоставляется всем свободно(беско-
рыстно и безвозмездно).
Связаться с нами или с автором по fido можно через Кисляка
Павла Михайловича/PAWEL from Real Software (2:454.11/25).
ВСЕ, КТО ИНТЕРЕСУЕТСЯ ИНФОРМАЦИЕЙ ПО ЭТОЙ КАРТЕ, ХОЧЕТ ЕЕ
СОБРАТЬ ИЛИ ПО ДРУГИМ ВОПРОСАМ ПИШИТЕ ПО АДРЕСУ:
343581, Украина, Донецкая область,
г. Дзержинск, пос.Кирово,
ул. Юности 16/48
Михальченкову Дмитрию.
Выражаем огромную благодарность Pawel'у за предоставленую почту.
С уважением Михальченков Дмитрий &
Иноземцев Алексей.
Other articles: