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:
Fantasy - A Tale Strugatsky "Way to Amalthea (continued).
& Support - Service & Support novelties.
Expert Tips - Game Fredloader.

В этот день...   21 November