Из газеты Echo #06, Брест, 07.2000



                             Witchcraft

                       DMA Ultra Sound Card
 

                                   "Звук-это колебания воздуха,
                                    которые колышат наши уши и
                                    через них воспринимаются
                                    мозгом, конечно если он у
                                                      вас есть."
 
                             Hi, all!
    Эту  статью  меня  побудили  написать  слухи  упорно ходящие
(бродящие)  по просторам нашей необьятной родины, в частности  в
fido. Итак что такое DMA Ultrosound Card (да-да, DMA,а не Direct
Sound). Начнем с ее звуковых возможностей:

    Число каналов: 4
    Разрядность, бит: 8
    Уровень рег. громкости: 0-63(6 bit)
    Частота дискретизации: до 3.5 МHz (НЕ КНz!)
    Максимальный размер обслуживаемой памяти: 16 МБ.
         (чем не звуковая карта к SPRINTER'у?!)
    Т.к. спекки это не грозит, стандартно испольуется до 1МБ.
    Максимальный размер сэмпла: 64кб
    (т.к. DMA видит страницы не по 16кБ, как Z80, а по 64кБ!)

    Вообще длина сэмпла не ограничена, она просто разбивается
на отрезки кратные 64кБ.
    Программится карта ОЧЕНЬ легко, все что нужно-это закинуть в
соответствующие  порты  номер  банка, в котором лежит сэмпл, его
адрес  в  банке,  длину,  громкость,  параметр  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, аналог -
1810ВТ37)  работает,  по  схеме, с максимальной частотой выборки
3.5MHz  (7MHz  некоторые  модификации  при  TURBO),  найти такое
применение  в  области  звука  весьма  сложно, т.к. максимальная
частота дискретизации .wav  48KHz. Поэтому во всех характеристи-
ках, связанных со  звуком,  пишется 48KHz. Надеюсь с этим вопро-
сом разобрались.
Принцып работы основан на прямом доступе к памяти (Direct Memory
Access - DMA). Помимо  звуковых  возможностей  устройство  можно
использовать как  акселератор при операциях с блоками, т.к. 8237
имеет команду аналогичную ldir которая выполняется в 2 раза (в 4
раза при 7MHz) быстрее Z80.  Отсюда  следующие выгоды:
    1) пересылка блока память-память;
    2) заполнение  адресного пространства байтом.
    Т.к. у 8237  размер страницы 64кб появляется возможность пе-
ресылать данные  для  работы  Z80  без  заморочек со страницами.
Пересылка блока возможна в том случае, если  имеются 2 свободных
канала. В устройстве помимо 8237 юзаются два таймера 8253 (8254,
аналог - 580ви53). Каждый таймер имеет по 3 канала, всего 6,  из
них 4 закреплены за звуковыми каналами. Остальные 2 канала прог-
раммер  может  использовать  по своему усмотрению, для получения
прерываний 30...150 Гц.
    Если  изменять частоту выборки, то можно програмно выставить
любую скорость компа (50%...100% скорости), т.е.  можно получить
любой INT. Я вот лицезрел дему ADRINALIZ со скоростью 60% от но-
минальной - круто!!!
    Проигрывание .mod ведется  по прерываниям, реального времени
у проца DMA Sound Card забирает 1000 тактов за INT(9000 в пике).
При  использовании  устройства в качестве ускорителя можно напи-
сать  scroll всего экранa за INT +25000 тактов проца свободно, а
при  турбе  8237 scroll+ мультиколор всего экрана + 10000 тактов
проца  свободно.  Еще  одна  возможность  DMA  Ultrosound Card -
проигрывание  с  винта  .wav  в реальном времени с CD качеством,
стерео  44кHz,  не  ограниченной  длинны.  Ну  а слушать . mod и
одновременно работать с ВГ93 вообще без проблем.
    Как-то в эхе мелькала мысль, что ~...про граф сопр автор, не
знает...~, это не так, уж кому как не автору знать об этом.
    Т.к.   проигрывание  .wav  ведется  по  прерываниям  и  есть
возможность  получать  прерывания с различной частотой, то можно
проигрывать звук  в формате аналогичном MPEG'у, благо свободного
времени  у проца на распаковку хватает (теоретические разработки
уже ведутся).
    Теперь  о  вопросе  с  торможением проца картой: если бы был
.wav  с частотой дискретизации 1.75МГц то он бы при проигрывании
тормозил проц на 50%. Те,кто хоть чуть-чуть знаком с арифметикой
может прикинуть сколько времени у проца займет проигрывание .wav
48кГц  (примерно  3-5%). Мелькала идея увеличения тактовой у DMA
до   12-14МГц.   Ничего   путного   не   получится.   В  области
воспроизведения  звука никакого выигрыша не будет, т.к. сэмпла с
частотой  дискретизации  14000кГц  не существует, а что касается
использования  как ускорителя, то операция пересылки блока будет
занимать  1-2  такта.  Но всегда есть ~но~ - выдержит ли память?
565ру7 не выдержат однозначно, а переводить всю память на симы -
и возни многовато и цена. А будет ли от этого реальный выигрыш -
ни  кто  не знает. Вполне достаточна тактовая 7МГц и овцы целы и
волки сыты. Единственная доработка,которую можно приветствовать-
подключение  ~ведомого~  контроллера  ПДП 8237, с целью увеличе-
ния  числа каналов  до 7(4-звуковых и 3-для обслуживания перифе-
рийных устройств как на пц).
    Что  касается  эмуляции  general'a,  sound  drive,  ay - это
возможно   как  аппаратно,  так  и  програмно. Кто-то  предлогал
добавить в  карту  проц z80 или аналогичный, своей памяти и т.д.
Отвечу  сразу: ничего  хорошего  не  выйдет,  будем  иметь некий
симбиоз  general  sоund  с прямым доступом в свою же память. Мне
кажется,  что это бессмысленно (кто-нибудь видел на писюке Sound
Blaster + Pentium III?), т.к. загруженность проца будет не более
10-15%.  Никакой  речи о дешевизне по отношению к GS после такой
доработки  идти не может,т.к. процессор потянет за собой и ПЗУ,и
дополнительную  логику. Наибольший плюс этой карты-независимость
от ПЗУ, в отличие о general sound, я не сомневаюсь, что глюков в
ПЗУ general'a хватит до следующего тысячилетия.
    Теперь  о  сборке  карты:  схема  действительно  большая, но
ничего   сложного   в   повторении   нет.   Сборка  производится
постепенно.  Существует  методика  сборки  и  отладки карты, где
очень подробно рассказано как, что и где паять, куда тыкать и на
что   нажимать.   Приведены   всевозможные  тесты.  Для  отладки
необходим  только  логический пробник на одной мелкосхеме (схема
которого приведена там же). Вполне возможно собрать карту за 3-4
недели.
    Как-то Alexander  Kulik писал на ответ Tim'у Kelly, мол:~...
видел я таких авторов. Присылали всякие кассетки и говорили, что
это их "детище  сотворило", а на самом деле...~. Я тоже сразу не
поверил, что так  играет  DMA Ultrasound Card, пока не собрал ее
и  не проверил в деле. Качество  звука на DMA Ultrasound Card не
уступает AWE32 (не верите? Можете спросить у 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), то любая информация предоставляется всем свободно(беско-
рыстно и безвозмездно).
    Связаться  с  нами  или  с автором пo fido можно через Pawel
Kislyak 2:454/11.25 или по e-mail Pawel#nm.ru
    ВСЕ,  КТО  ИНТЕРЕСУЕТСЯ  ИНФОРМАЦИЕЙ ПО ЭТОЙ КАРТЕ, ХОЧЕТ ЕЕ
СОБРАТЬ ИЛИ ПО ДРУГИМ ВОПРОСАМ ПИШИТЕ ПО АДРЕСУ:

343581, Украина, Донецкая область,
        г. Дзержинск, пос.Кирово,
        ул. Юности 16/48
        Михальченкову Дмитрию.

Выражаем огромную благодарность Pawel'у за предоставленную почту
----------------------------------------------------------------
                              С уважением Михальченков Дмитрий &
                                               Иноземцев Алексей
 
 
 
Аналоговая часть DMA Ultrasound Card
Микросхемы:

DD21-DD24     1533ИР23
DD24-DD28     1533ТМ9
DA1-DA4 и
DA9-DA12      572ПА1
DA5-DA8       КР140УД20


Логическая часть DMA Ultrasound Card
Микросхемы:

DD1,DD2    555ИД7
DD3        555ЛП8
DD4,DD20   555ЛИ1
DD5        555ЛН1
DD6        1810ВТ37
DD7        555АП4
DD8        555ЛА3
DD9        555ИР26
DD10,DD11  580ВИ53
DD12,DD19  555ЛЛ1
DD13,DD17  555ИР22
DD14,DD16  555ТР2
DD15       555ТМ2
DD18       555ТМ8

CLK   3.5MHz
CLK2  1.75MHz




------------------------------------------
            Методика отладки
          DMA Ultra Sound Card
------------------------------------------

               ВСТУПЛЕНИЕ

   Итак, для сборки звуковой карты необхо-
димо: полигон, где-то мелкосхем на 50, бу-
дет  больше - берите, не жмитесь-свободное
место еще пригодится, авометр, простенький
логический пробник, если есть - осцилограф
типа ОМЛ-2, Н3015 (лично мне он не понадо-
бился),  жменя логики, пара таймеров, пара
резисторов, штучек 8 кондесаторов, монтаж-
ный  провод, БИС 1810ВТ37, стандартный ра-
зЬем СНП64 (как  на  контроллере TR-DOS) с
ответной  частью  для  подключения карты к
компутеру и самое главное - паяльник. Пол-
ный список деталей смотри далее.

   Настройка  и сборка разбивается на нес-
колько  этапов. Если у вас карта полностью
собрана,  то не нужно ее разбирать, только
достаточно восстановить изменения на плате
компьютера.
   После   распайки  элементов  необходимо
ТЩАТЕЛЬНО  ПРОЗВОНИТЬ  все  соединения  на
правильность  и все соседние ножки микрос-
хем на отсутствие коротких замыканий между
ними.
   Особое  внимание  следует уделить цепям
питания,  т.  к.  ошибки  могут вывести из
строя  половину  микросхем  или блок пита-
ния.

   Ну что, поехали...

   1. Настройка блока ЦАП

   1.1  Впаиваются  микросхемы: DD21-DD28,
DA1-DA12  и  связанные  с  ними дискретные
элементы.
   1.2  Выхода  звука подаются на вход ау-
диоусилителя.    ____   ____   ____   ____
   1.3  Сигналы  CSC1 - CSC4,  CSV1 - CSV4
подаются   с   дополнительной   микросхемы
555ИД7, которая включается следующим обра-
зом:
   1.3.1 Для Пентагона:

          +--+--+
         1|  |__|15  ____
 A4 ------+A0|Q0+--- CSC1
         2|  |__|14  ____
 A5 ------+A1|Q1+--- CSC2
         3|  |__|13  ____
 A6 ------+A2|Q2+--- CSV1
          +--+__|12  ____
         4|__|Q3+--- CSV2
 A7 ------+V1|__|11  ____
 ___     5|__|Q4+--- CSC3
 DOS -----+V2|__|10  ____
         6|  |Q5+--- CSC4
 IOWR ----+V3|__|9   ____
          |  |Q6+--- CSV3
          |  |__|7   ____
          |  |Q7+--- CSV4
          +--+--+

   Сигналы  A4  - A7 берутся с процессора,
DOS с 8D76, IOWR с 10D64 Пентагона.
   1.3.2 Для других компьютеров:

                  +--+--+
                 1|  |__|15  ____
           A4 ----+A0|Q0+--- CSC1
                 2|  |__|14  ____
           A5 ----+A1|Q1+--- CSC2
                 3|  |__|13  ____
           A6 ----+A2|Q2+--- CSV1
                  +--+__|12  ____
                 4|__|Q3+--- CSV2
           A7 ----+V1|__|11  ____
____             5|__|Q4+--- CSC3
IORQ ->+-+--------+V2|__|10  ____
__       |       6|  |Q5+--- CSC4
WR --->+-+     +--+V3|__|9   ____
         |     |  |  |Q6+--- CSV3
    -----+     |  |  |__|
___ +  1к      |  |  |Q7+--- CSV4
DOS -----------+  +--+--+

   Диоды типа КД521. Все сигналы берутся с
процессора, DOS берется с контроллера дис-
ковода так, чтобы когда активно ПЗУ  TRDOS
на  нем был лог. 0. Если вы не знаете  где
его  взять, то  просто подайте на него +5В
(это  не  повлияет  на  работоспособность,
просто  работа  дисковода  будет сопровож-
даться "шумовыми эффектами"). Сразу  после
подачи питания проверьте как сильно нагре-
лись м\с К572ПА1,если они не греются - все
в норме, если  они  сразу стали горячими -
без промедления отключите питание, дабы их
не  спалить, и вместо 12 вольт на оных м\с
подайте 5, на звуке это практически не от-
разится. Лучше всего использовать км572па1
(проверено на личном опыте) - они работают
стабильно при всех условиях.

   1.4  Наберите  тестовую  программу  для
получившегося "Super sound drive".

   10 LET PC=15; 31; 79; 95
   20 LET PV=47; 63; 111;127
   30 FOR I=0 TO 63: OUT PV,I
   40 OUT PC,0: OUT PC,255
   50 NEXT I
   60 GOTO 30

   После  запуска  должен  появиться  звук
плавно изменяющейся громкости.
   1.4.1  ПРИМЕЧАНИЕ.  Звуковая карта име-
ет  4  канала  и  все их нужно тестировать
отдельно.  Чтобы не писать отдельные прог-
раммы  для  каждого  канала, для некоторых
переменных будут даваться 4 (6, 8 или дру-
гое  необходимое количество) варианта зна-
чений, разделенных точкой с запятой. Необ-
ходимо подставить сначала первые значения,
затем  вторые  и  т. д.  В  вышеприведеном
примере  сначала следует подставить PC=15:
PV=47,  затем  PC=31: PV=47 и снова запус-
тить  программу и т. д. Такая запись будет
встречаться почти во всех программах.
   1.5  Делается  проверка  всех  каналов.
Все  каналы  должны  четко  воспроизводить
звук,   громкость   должна  регулироваться
плавно.
   1.6  Если  на одном или на всех каналах
отсутствует  звук, то необходима более де-
тальная проверка. Для такой проверки нужны
специальные  измерительные приборы: осцил-
лограф  или  логические  пробники, которые
описаны в приложении.
   1.6.1  Сначала  убедимся  в  правильной
работе дешифратора на доп. микросхеме ИД7.
   1.6.1(о).1  Набираем программу:

PORT EQU #0F;#1F;#2F;#3F;#4F;#5F;#6F;#7F
     DI
M1   OUT (PORT),A
     LD A,#7F
     IN A,(#FE)
     RRCA
     JR C,M1
     EI
     RET

   после  чего проверяется наличие импуль-
сов вот такой формы: TTTTTTTTTTTT с часто-
                     ||||||||||||
той около 77 кГц на 15, 14, 13, 12, 11,10,
9 и 7 ножках доп. ИД7 (15 ножке соответст-
вует порт #0F, 14 - #1F и т. д).
   1.6.1(о).2  При  отсутствии  таких  им-
пульсов необходимо еще раз тщательно  про-
верить  распайку доп. ИД7 и если ошибок не
обнаружено то ИД7 следует заменить.
   1.6.1(п).1  Набираем программу:

PORT  EQU #0F;#1F;#2F;#3F;#4F;#5F;#6F;#7F
      DI
M1    OUT (PORT),A
      LD BC,0
M2    DEC BC
      LD A,B
      OR C
      JR NZ,M2
      LD A,#7F
      IN A,(#FE)
      RRCA
      JR C,M1
      EI
      RET

   После чего Пробником #1 проверяем нали-
чие   стробирующих  импульсов  с  частотой
около 2 Гц на 15, 14, 13, 12, 11, 10, 9  и
7  ножках доп. ИД7 (15 ножке соответствует
порт #0F, 14 - #1F и т. д).
   1.6.1(п).2  См. п.1.6.1(о).2

   1.7  Проверка  блока ЦАП закончена. До-
полнительную м/с 555ИД7 можно отпаять. Для
окончательной  проверки качества звука за-
пустите   какую  нибудь  прогу  для  SOUND
DRIVE,  к  примеру FLASH TRAKER, перед за-
пуском  не забудте в соответстующих портах
(OUT  47, 63: OUT 63, 63: OUT 111, 63: OUT
127, 63) установить громкость.

   2.  Настройка задающих генераторов

   2.1  Впаиваются  микросхемы  DD1, DD4.1
DD4.2.
   2.2(о)  Набирается программа тестирова-
ния портов:

PORT EQU #FC77;#FD77;#FE77;#FF77
     DI
M1   LD BC,PORT
     OUT (C),A
     LD A,#7F
     IN A,(#FE)
     RRCA
     JR C,M1
     EI
     RET

   После  чего проверяется наличие импуль-
сов вот такой формы: TTTTTTTTTTTT с часто-
                     ||||||||||||
той  около 77 кГц на 15, 14, 13, 12 ножках
DD1 (15 ножке соответствует порт #FC77, 14
#FD77 и т.д.).

   2.2(п)  Набирается программа тестирова-
ния портов:

PORT EQU #FC77;#FD77;#FE77;#FF77
     DI
M1   LD BC,PORT
     OUT (C),A
     LD BC,0
M2   DEC BC
     LD A,B
     OR C
     JR NZ,M2
     LD A,#7F
     IN A,(#FE)
     RRCA
     JR C,M1
     EI
     RET

   После  чего проверяется наличие строби-
рующих импульсов с частотой около 2 Гц  на
15,  14, 13, 12 ножках DD1 (15 ножке соот-
ветствует порт #FC77, 14 - #FD77 и т. д).

   2.3  Впаиваются  микросхемы  DD10, DD11
сигнал CLK берется в Пентагоне с 8D1.  Это
тактовая  частота  3.5МГц  которая  обычно
подается на Z80, но если у вас есть турбо-
режим,  то брать ее непосредственно с про-
цессора нельзя. Сигнал CLK2 берется в Пен-
тагоне  с  11D2. Это тактовая частота 1.75
Мгц, которая  подается  на AY8910(12) и ее
можно взять непосредственно с AY.
   2.4  Набирается программа:

   10 LET R=64887; 64887; 64887; 65143;
      65143; 65143
   20 LET P=15735; 32119; 48503; 15991;
      32375; 48759;
   30 LET C=52; 116; 180; 52; 116; 180;
   40 LET F=1000: LET FH=INT (F/256): LET
      FL=F-256*FH
   50 OUT R,C: OUT P,FL: OUT P,FH
   60 PRINT AT 0,0; IN (P)+256*IN (P),
   70 GOTO 60

   После  запуска  должны замелькать числа
от 0 до 1000 в полном беспорядке, но очень
быстро,  а  на  выводах  10, 13, 17 DD10 и
DD11  должны  появиться импульсы вот такой
формы:  TTTTTTTTTTTT  с частотой около 3.5
        ||||||||||||
кГц  на 10 и 13  ножках, и 1.75 кГц  на 17
ножках  (10DD10 соответствует первый набор
параметров, 13DD10 - второй,  17DD10 - 3й,
10DD11 - 4й, 13DD11 - 5й и 17DD11 - 6й).
   2.5  Если  у  вас  580ВИ53 то запускать
тестовую  программу нужно БЕЗ турборежима,
но  лучше  использовать  импортный  аналог
8253 (82C53, D8253 и т. д.), который рабо-
тает совершенно нормально и в турбе.
   2.6  Если  тест  не идет, то нужно наб-
рать  тестовую  программу  из  п.2.2 порта
для тестирования должны быть такими:

PORT EQU #3D77;#7D77;#BD77;#FD77;
         #3E77;#7E77;#BE77;#FE77

   И  затем проверяется наличие строб. им-
пульсов  на  21 ножках DD10 и DD11 (портам
#XD77  соответствует  21DD10, #XE77 21DD11
(X - любая цифра)).

   3.  Настройка контроллера DMA

   3.1  Впаиваются  микросхемы DD3(кроме 2
и 3 ножки), DD4.4, DD5.1 - DD5.5, DD6,DD7,
DD14, между  36 ногой DD6(EOP) и +5В веша-
ется резистор сопротивлением 10кОм.
                ____ __ __ _____ _____ ___
   3.2  Сигналы MREQ,RD,WR,BUSAC,BUSRQ,RES
берутся  с  19,  21,  22, 23, 25 и 26 ноги
процессора соответственно.
   3.3  Набирается тестовая программа:

   10 LET P=3191; 7287; 11383; 15479;
      19575; 23671; 27767; 31863
   20 FOR I=0 TO 65535
   40 LET H=INT(I/256): LET L=I-H*256
   50 OUT P,L: OUT P,H
   60 PRINT I, IN (P)+256*IN (P)
   70 NEXT I

   После запуска на экране должны появить-
ся два столбца чисел, числа в обоих столб-
цах  должны совпадать. Если число в правом
столбце  не  меняется, то см. п.3.3.1, ес-
ли числа не совпадают, но в правом столбце
числа  изменяются, то необходимо проверить
выводы  21  -  23, 26 - 30 DD6, и если там
порядок - заменить DD6.
   3.3.1  Необходимо набрать тестовую про-
грамму из п.2.2 порта для тестирования до-
лжны быть такими:

PORT EQU #0C77;#1C77;#2C77;#3C77;
         #4C77;#5C77;#6C77;#7C77

   И  проверить наличие сигнала выборки на
11DD6 и 4DD6 (для всех портов). Необходимо
проверить 13DD6 (нормально там должен быть
лог. 0).
   3.4  Набирается тестовая программа:

   10 DATA 3191,7287,11383,15479,19575,
      23671,27767,31863
   20 FOR I=0 TO 7
   40 READ P
   50 OUT P,I*2: OUT P,I*2+1
   60 PRINT I*2: PRINT I*2+1
   70 NEXT I
   80 RESTORE
   90 FOR I=0 TO 7
  100 READ P
  110 PRINT AT I*2,16;IN (P)
  120 PRINT AT I*2+1,16;IN (P)
  130 NEXT I

   Как  и  прежде,  числа в обоих столбцах
должны совпасть. Если этого не происходит,
то
   3.4.1  Подключаем  Пробник  #2: щуп "C"
к  11DD6,  щупы  "1",  "2", "3", "4" к 32,
33, 34, 35 ногам DD6 соответственно. Наби-
раем программу:

   10 LET P=3191; 7287; 11383; 15479;
      19575; 23671; 27767; 31863
   20 OUT P,0

   После запуска сигнатура должна быть та-
кой:
   ГГГГ; НГГГ; ГНГГ; ННГГ;
   ГГНГ; НГНГ; ГННГ; НННГ;
(порту 3191 соотв.сигнатура "ГГГГ" и т.д.)

   3.5 Проверяем теперь режим DMA. Набира-
ем программу:

TimerC EQU #FD77;#FD77;#FE77;#FE77
TimerD EQU #3D77;#7D77;#3E77;#7E77
TimerB EQU #34;#74;#34;#74
DmaS   EQU #0C77;#2C77;#4C77;#6C77
DmaL   EQU #1C77;#3C77;#5C77;#6C77
DmaC   EQU #50;#51;#52;#53
DmaM   EQU #00;#01;#02;#03

   LD BC,TimerC
   LD A,TimerB
   OUT (C),A
   LD BC,TimerD
   LD DE,2
   OUT (C),E
   OUT (C),D
   LD BC,#8C77
   XOR A
   OUT (C),A
   LD BC,#CC77
   OUT (C),A
   LD BC,#BC77
   LD A,DmaC
   OUT (C),A
   LD BC,DmaS
   LD DE,#8000
   OUT (C),E
   OUT (C),D
   LD BC,DmaL
   LD DE,0
   OUT (C),E
   OUT (C),D
   LD BC,#AC77
   LD A,DmaM
   OUT (C),A
   RET

   После  запуска программы быстродействие
компьютера  уменьшается  в  два  раза. Это
тестовый  режим  DMA. В этом режиме форми-
руется  только  запрос  прямого доступа, а
сигналы  выборки  не формируются. Поэтому,
единственный видимый эффект - это замедле-
ние  работы компьютера из-за того, что DMA
делает 437500 обращений к памяти в секунду
(в  режиме теста). Тестовый режим остается
и  после  возврата из тестовой программы -
до  сброса.  Команда  OUT  56439,  0  (OUT
#DF77, #00)  также  сбрасывает  контроллер
DMA,  после нее быстродействие должно вер-
нуться к норме. Компьютер должен устойчиво
работать  в тесте. Основная болезнь - сбои
в  ОЗУ  из-за плохого контактирования мик-
росхем в панельках и неточной фазы сигнала
CAS.  В  Пентагоне помогает установка доп.
конденсатора 20 - 40 пФ между 3DD45 и зем-
лей,  но  лучше всего переделать адресацию
памяти,  не пугайтесь для этого необходимо
поменять  местами 2 пары сигналов. Для ос-
тальных  компьютеров  это  не понадобится.
Это  происходит  из-за  предельно длинного
цикла  регенерации  памяти,  а вклинивание
обращений  DMA к памяти вообще растягивает
его.
   3.5.1  Если тест не пошел (никакого за-
медления нет), то  следует  набрать  прог-
рамму из п.3.5, изменить в ней строку:

DmaC EQU #40;#41;#42;#43

После запуска проверить - на выводе 4DD14;
7DD14; 9DD14; 13DD14 (19DD6; 18DD6; 17DD6;
16DD6) должна быть лог. 1, если ее там нет
то необходимо проверить вывод 25DD6;26DD6;
27DD6; 28DD6 там тоже должна быть  лог. 1,
если  ее там нет, то неисправна DD6, иначе
нужно осциллографом проверить наличие  им-
пульсов вот такой формы:TTTTTTTTTTTT с ча-
                        ||||||||||||
стотой  1.75МГц на выводе 2и3DD14;  6DD14;
11и12DD14; 15DD14 или подсоединить  к нему
Пробник #1 - его светодиод должен светить-
ся в полнакала. Если импульсов нет, то не-
пропаяна  связь  DD10 (DD11) - DD14,  если
есть - то неисправна DD14.
   Биты  4  -  7 регистра состояния (#8C77
(35959))  должны  иметь тоже значение, что
и  выводы  19  -  16 DD6 (выводу 19 соотв.
бит 4, выв. 18 - бит 5 и т. д.), т. е. ес-
ли  на  выводе  лог. 0 то и соотв бит =0 и
наоборот. В этом тоже полезно убедится.
   3.5.2  Если в предыдущем пункте все OK,
а  тест  все-равно не идет, следует прове-
рить сигналы запроса шины:
   3.5.2(о)  Набирается    программа    из
п.3.5. На  10DD6  нужно осциллографом про-
верить  наличие импульсов вот такой формы:
|||||||||||| с частотой  440кГц. На 8DD5 и
++++++++++++ на 25Z80 должны быть импульсы
такой формы: TTTTTTTTTTTT с той-же часто-
т8ой.        ||||||||||||
   3.5.2(п)  Набирается программа:

TimerC EQU #FD77;#FD77;#FE77;#FE77
TimerD EQU #3D77;#7D77;#3E77;#7E77
TimerB EQU #34;#74;#34;#74
DmaS   EQU #0C77;#2C77;#4C77;#6C77
DmaL   EQU #1C77;#3C77;#5C77;#6C77
DmaC   EQU #40;#41;#42;#43
DmaM   EQU #00;#01;#02;#03

   LD BC,TimerC
   LD A,TimerB
   OUT (C),A
   LD BC,TimerD
   LD DE,2
   OUT (C),E
   OUT (C),D
   LD BC,#8C77
   XOR A
   OUT (C),A
   LD BC,#CC77
   OUT (C),A
   LD BC,#BC77
   LD A,DmaC
   OUT (C),A
   LD BC,DmaS
   LD DE,#8000
   OUT (C),E
   OUT (C),D
   LD BC,DmaL
   LD DE,0
   OUT (C),E
   OUT (C),D
M1 LD BC,#AC77
   LD A,DmaM
   OUT (C),A
M2 HALT
   HALT
   HALT
   HALT
   HALT
   LD A,#7F
   IN A,(#FE)
   RRCA
   JR C,M2
   RRCA
   JR C,M1
   RET

   После  набора программы следует подклю-
чить  Пробник #1 к 8DD5. На каждое нажатие
SPACE  светодиод  пробника должен изменять
свое  состояние  на противоположное. Выход
из программы SS+SPACE. Если все нормально,
то проверяется 8DD5 и 25Z80.
   3.5.3.  Если  после  запуска  программы
из п.3.5. и п.3.5.1 компьютер виснет, а на
25Z80 постоянно лог. 0 - следует проверить
линию подтверждения запроса шины. Проверя-
ем 4DD5 - там должна быть лог. 1. Если все
так и есть - неисправна DD6.
   3.5.4.  Для  окончательной проверки ра-
ботоспособности  контроллера  ПДП восполь-
зуйтесь утилитой FreeSpeed.
   3.6.  Впаиваются микросхемы DD2, DD8.1,
DD8.4, DD9, DD12 и DD13.
   3.6.1  Теперь  нужно  проделать   самую
неприятную  операцию  - изменения на плате
компьютера.  Неприятную  потому,  что хотя
многие  фирмы  гордятся своими "системными
шинами",  на  которые  вроде-как  выведены
сигналы  для  прямого доступа, к сожалению
нет  ни  одного  компьютера, который может
без  переделок  предоставить  для  прямого
доступа более 48k памяти. Поэтому я позво-
лю  себе  сделать  некоторое  отступление,
чтобы хоть как-то объяснить что нужно сде-
лать, т. к. указания типа "возьми то, при-
паяй  туда"  я  могу дать только для очень
ограниченного количества схем.
   Итак, немножко о том как компьютер  ад-
ресует  память.  Для  это в нем есть такая
вещь  как  диспетчер  памяти. Основная его
задача  -  взять  адрес  от  процессора  и
преобразовать  его  в  адрес для микросхем
памяти.  Сначала  рассмотрим самый простой
диспетчер  - такой как стоит в 48м компью-
тере.  Кое-кто скажет, что в 48м нет ника-
кого  диспетчера..  и  ошибется. Диспетчер
там есть, но очень ма-аленький. Единствен-
ное что он делает это проверяет, что A14 и
A15  равны 0 и если это так, то направляет
адрес в ПЗУ иначе в ОЗУ. Все очень просто,
но  если такой компьютер собран на 565РУ5,
емкость которых 64кб, то при таком раскла-
де  16кбайт,  пропадает  зря  (накрывается
ПЗУхой).
   Теперь  поглядим,  что творится в 128м.
Здесь  картина  уже  сложнее. Процессор не
может  адресовать  больше чем 65536 (2^16)
байт  потому как у него только 16 адресных
линий.  Для этого диспетчер делает следую-
щее.  Когда процессор обращается к адресам
#C000-#FFFF  (т. е. A14 и A15 = 1) диспет-
чер не выдает старшие разряды адреса прямо
в  ОЗУ, а подменяет их значениями из порта
#7FFD.  Обозначим  старшие  адреса которые
идут  в  ОЗУ как A14', A15', A16' (и A17',
A18'  для  512к) чтобы отличить их от про-
цессорных  (A0-A13  идут  в ОЗУ напрямую).
Теперь  посмотрите  что  получается, когда
процессор  обращается к различным участкам
памяти:

Диапазон   |A14|A15|A14'|A15'|A16'
-----------+---+---+----+----+------
#C000-#F000| 1 | 1 |берется из #7FFD
#8000-#BFFF| 0 | 1 | 0  | 1  |  0
#4000-#7FFF| 1 | 0 | 1  | 0  |  1
#0000-#3FFF| 0 | 0 | ОЗУ не выбирается

   Для  512й машины все абсолютно тоже са-
мое  только  добавляются  еще две адресные
линии A17' и A18'.
   Все   это  кое-как  работает  пока  нет
контроллера  прямого  доступа,  но для DMA
такая  структура  памяти совершенно не го-
дится.  Во-первых  контроллер  DMA  -  это
почти сопроцессор, он, в отличии от других
периферийных контроллеров может адресовать
память  ВМЕСТО  процессора, но выбирает он
оттуда  только данные, команды он получает
через порт. Поэтому ему совершенно не нуж-
на  ПЗУ  в  адресном  пространстве,  очень
трудно представить зачем нужен прямой дос-
туп  к ПЗУ. Во-вторых абсолютно невозможно
переключать  порт  #7FFD так, чтобы каждый
канал  забирал  данные  со своей страницы.
И  в-третьих,  как не трудно заметить про-
цессорные  страницы  имеют  размер 16к, но
контроллер DMA может передавать за раз  до
64к, что позволяет использовать инструмен-
ты в 4 раза длиннее.
   Из  всего  выше сказанного следует, что
надо  найти  в компьютере старшие адресные
линии  ОЗУ A14', A15', A16' ( и A17', A18'
для  512к) и сделать так, чтобы они отклю-
чались внешним сигналом. Все бы ничего, да
вот  только диспетчер почти всегда разбро-
сан  по плате и по схеме. Конкретные схемы
подключения к двум известным мне диспетче-
рам  RAM  512k будут приведены в следующий
раз.  Подключение к ПЕНТагону 128к вот та-
кое:  Сигнал А16' соединяется с 9D61, А15'
- 7D61, A14' - 4D61, ничего не отрезается,
кроме 15D61 от земли. На 15D61 подключает-
ся  AEN(не  инверсный). Примечание: если у
Вас 512к или выше, то я рекомендую сначала
подключать  карту без переделки диспетчера
памяти, как к 128к. Потом, убедившись, что
карта  работает нормально произвести пере-
делку диспетчера.
   3.7.  Сборка диспетчера прерываний осо-
бых  трудностей не вызывает. После оконча-
тельной сборки диспетчера необходимо пере-
резать  дорожку,  идущую на вывод INT Z80.
Сигнал INT, который шел на процессор подк-
лючается  к сигналу INT на карте, а INT' с
карты  подается  на Z80. Работу диспетчера
прерываний можно проверить утилитой INT.

   Окончательную  проверку  собраной карты
можно   произвести   с   помощью  программ
MODPlayer, SFX и т. д.

   Используемые м/с:

555ИД7 - 2 шт
555ЛП8 - 1 шт
555ЛИ1 - 2 шт
555ЛН1 - 1 шт
1810ВТ37 - 1 шт
555АП4 - 1 шт
555ЛА3 - 1 шт
555ИР26 - 1 шт
580ВИ53 - 2 шт
555ЛЛ1 - 2 шт
555ИР22 - 2 шт
555ТР2 - 2 шт
555ТМ2 - 1 шт
555ТМ8 - 1 шт
555ИР23 - 4 шт
555ТМ9 - 4 шт
572ПА1 - 8 шт
КР140УД20 - 4 шт


      Приложение. Логичекие пробники

                Пробник #1.
     Индикатор Стробирующих импульсов.

         1+-+--+5  //   560ом
щуп  +5В<-+R| Q+--+ ------------->+5В
         3| |  |  АЛ307
 <--------+C|  |
         2| |  |
    +-----+D|  |
    |    4| | _|6
    |+5В<-+S| Q+--+
    |     +-+--+  |
    +-------------+
   555ТМ2

   Этот  пробник предназначен для проверки
наличия  стробирующих импульсов, т. е. им-
пульсов  выбора  портов, регистров и т. п.
Каждый  стробирующий  импульс вызывает пе-
реключение  светодиода  в  противоположное
состояние. Для проверки пробника прикосни-
тесь щупом к земле (имеется в виду не наша
планета,  а  общий провод схемы) светодиод
должен   переключиться  в  противоположное
состояние  (Из-за  нечеткого  контакта это
может произойти не с первой попытки).
   Предназначен  этот пробник для проверки
портов.  Для  примера проверим порт #FE на
работоспособность.  В  пентагоне  это D43.
Подключаем  пробник  щупом к 9D43, питание
на  пробник берется только с платы компью-
тера. Набираем программу:

   10 OUT 254,RND*7: PAUSE 0: GO TO 10

   После запуска на каждое нажатие клавиши
светодиод  пробника  должен  изменять свое
состояние  на  противоположное.  Если  при
этом  бордюр  тоже  меняет цвет то все ОК.
Если пробник показывает наличие импульсов,
а бордюр не меняется то D43 протянула нож-
ки,  а  если  наоборот, то вы воткнули щуп
явно не туда. Аналогично проверяется любой
другой  порт. Главное что: если строб. им-
пульсы  доходят  до порта, а порт ни бэ ни
мэ,  то  сдох регистр порта (типа там ТМ8,
ТМ9,  ИР23,  БИСки и тд), а если импульсов
нет, то регистр ни при чем и неисправность
надо  искать  в дешифраторе (ИД7, логика и
т.  п.). (Маленькое примечание: если строб
импульсы отсутствуют, то надо оторвать эту
линию  от входа регистра и снова проверить
пробником. Если импульсы появились то зна-
чит  сдох регистр и своим входом садит де-
шифратор).


    Пробник #2. Сигнатурный анализатор.

         3+--+--+2  "1"//
"1"<------+D0|Q0+-----+ ---------->+5В
         4|  |  |5  "2"//
"2"<------+D1|Q1+-----+ ---------->+5В
         7|  |  |6  "3"//
"3"<------+D2|Q2+-----+ ---------->+5В
         8|  |  |9  "4"//
"4"<------+D3|Q3+-----+ ---------->+5В
        13|  |  |12 "5"//
"5"<------+D4|Q4+-----+ ---------->+5В
        14|  |  |15 "6"//
"6"<------+D5|Q5+-----+ ---------->+5В
        17|  |  |16 "7"//
"7"<------+D6|Q6+-----+ ---------->+5В
        18|  |  |19 "8"//
"8"<------+D7|Q7+-----+ ---------->+5В
        11|  |__|1
"C"<------+C |OE+---+
          +--+--+   +

   все диоды - АЛ307, все резисторы 560ом

   Предыдущий   пробник  предназначен  для
проверки наличия стробирующих импульсов на
регистрах,  а  вот  для того, чтобы узнать
какие  именно  данные  заносятся в эти ре-
гистры  и  служит пробник #2. Чтобы прове-
рить   работоспособность  этого  пробника,
коснитесь щупом "C" земли - все светодиоды
погаснут.  Теперь соедините шупы "1" - "8"
с  землей  и  снова  коснитесь земли щупом
"C". Все светодиоды должны загореться. Для
проверки чего-нибудь  соединим  щупы "1" -
"8"  с  шиной  данных,  а щуп "C" с линией
стробирования.  После OUT'а светодиоды пе-
реключаются в некоторое состояние, которое
называется  сигнатурой.  Сигнатура  -  это
сокращенная запись, какой светодиод горит,
а  какой  нет.  Например сигнатура "ГГНГН"
означает,  что  светодиод "1" горит, 2 го-
рит,  3 - негорит, 4 - горит, 5 - негорит,
состояние  остальных  безразлично. Практи-
чески вам не придется вычислять, что будет
гореть  если  сделать OUT куда-то, что-то.
Достаточно  сделать  OUT туда-то,  то-то и
сравнить  с  приведенной  сигнатурой.  Для
примера допроверим порт бордюра. Подсоеди-
ним щупы "1" - "3" к 4, 5 и 12 ножкам D43,
а  щуп  "C" к 9D43. теперь из Бейсика даем
команду BORDER и смотрим на пробник. Срав-
ните сигнатуры для различных цветов бордю-
ра:

   BORDER 0 ГГГ
   BORDER 1 НГГ
   BORDER 2 ГНГ
   BORDER 3 ННГ
   BORDER 4 ГГН
   BORDER 5 НГН
   BORDER 6 ГНН
   BORDER 7 ННН

   Если  все  сигнатуры правильные, а порт
функционирует неверно, то что-то с регист-
ром,  если же сигнатуры не сходятся по ка-
кой-то  линии  (или  линиям) то причина на
этой линии (обрыв, замыкание и т. п.).
   Этим   пробником   можно  проверять  не
только  данные, но и адреса портов, всякие
сопутствующие  сигналы, что даже не всегда
возможно сделать осциллографом.