MSD #10
22 января 2000 |
|
░░░░░░░░ 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:
|
|
|
|
|
|
|
Similar articles:
В этот день... 21 November