Из журнала ZX-Guide #2, Рязань, 05-11.1999


           DMA Sound Blaster
(c) AlCo

   Предположим,что вы не пожалели свой ко-
мпьютер и, вконец  искромсав ланцетом (но-
жом, отвёрткой) плату, поставили-таки 384x
x304. Теперь вы с грустью  глядите на кучу
проводов,торчащую из совсем недавно краси-
во пропаянной платы,и наверняка ничего хо-
рошего обо мне не думаете.
   Но оказывается, это ещё не всё! То, что
вы уже сделали - всего лишь подготовитель-
ная  часть к установке чудовищного по воз-
можностям музыкального девайса

          Sound Blaster v1.00!

   Вкратце опишу, на что же он способен:
- Цифровые звучки  на прерываниях (6000 t/
int).Это могут быть,например,вопли раненых
врагов в играх и т.п.;
- Multi-channel music (16 каналов, 8 кГц);
- Цифровая музыка из Digital Studio (3 ка-
нала,16 кГц) или из Ultra Sonic (4 канала,
8 кГц) на прерываниях (45000 t/int). Отсу-
тствие частотных искажений звука.
- MOD'ы с частотой микширования 16 кГц БЕЗ
Turbo. А в Turbo их можно вешать на преры-
вание!
- Проигрывание  оцифровок  с распаковкой в
Realtime (.mp3???)

   Для его сборки вам потребуется:
- 2 шт. 555ИР23 (можно 1533ИР23);
- 2 шт. 572ПА1 или мешок резисторов;
- 2 инвертора (рекомендую DD94).

   Теперь схема:
   Некоторые пояснения: 16 кГц взято не от
балды,а так,чтобы было равно 0,когда элек-
тронный луч рисует слева направо,и 1,когда
он  возвращается  справа налево. В регистр
считывается крайний правый столбец 384x304
экрана (и правильно,нехрена рисовать там:у
меня,например,отображается только ~336 то-
чек по горизонтали),а точнее,рисунок этого
столбца без атрибутов(атрибуты лучше обну-
лить). Так просто всё будет при включенном
384x304,а для того, чтобы в обычном режиме
звук  не считывался с экрана, нужно внести
небольшое добавление в схему Contact 2.03:
   Почему я сразу  не внёс этот инвертор в
схему 384x304? Во-первых,GND легче найти:)
Во-вторых, так круче: щёлкнул переключате-
лем,и меняется вся картинка (загрузите ис-
ходник LISTER80.H и всё поймёте).
   Внимание! Канал, который  здесь нарисо-
ван, понимается  как ЛЕВЫЙ. ПРАВЫЙ канал -
ещё  один регистр и ЦАП, причём на вход /C
этого  второго регистра подаётся тот же 16
кГц,только инвертированный.
   В остальном скажу вот что:схема Contact
+SB больше меняться не будет,за исключени-
ем одного маленького момента:вместо GND на
сигнал OE^ регистра лучше подать какой-ни-
будь  разряд  порта #EFF7 (если они ещё не
все заняты). Я,к сожалению,не знаю станда-
ртного (на данный момент) назначения битов
этого порта. Если кто знает,plz,скажите.(И
не забудьте выделить битик под SB!)

         Программирование SB.

   Итак, если вы ещё не знаете, адреса та-
кие (левый канал,режим 256x192,0-й экран):
   С начала прерывания...
- Первые 16 байт  считываются из #F8CF 4-й
странички ОЗУ согласно строения экрана;
- Следующие 64 - с адреса #C00F той же 4-й
стр. согласно строения экрана (DOWN HL);
- Следующие 192 - с адреса #600F;
- И, наконец,последние 48 - с адреса #F80F
4-й странички ОЗУ.
   Для режима 384x304 всё аналогично,толь-
ко все адреса на #2000 меньше.
   Для правого канала ко всем адресам надо
прибавить 8.
   Если  кто скажет, что адреса неудобные,
то может сразу выйти из этой статьи.Адреса
именно такие, какие есть,поскольку на ско-
рость работы программ это НЕ ВЛИЯЕТ.
   Программу, которая довольно резво (6000
t) играет сэмпл в эти адреса,вы можете по-
заимствовать всё из того же LISTER80.H.
   Плейер для цифровой музыки строится так
(к примеру,возьмём 3 канала с громкостью):
   Для каждого из 3 каналов:
      OUT (32765),page
      LD D,'MIX3CHN
      LD LX,16
BEGIN LD C,D
      ADD A,B   +
      ADC HL,SP + 20 раз
      LD E,...  |
      LDI       +
      EX AF,AF';a'='endinst
      CP H
      JR NZ,$+4
      LD H,beginst
      EX AF,AF'
      INC D
      DEC LX
      JP NZ,BEGIN
   (около 43 t/байт)
   И для смесителя каналов:
      OUT (32765),20
MIX3CHN
      LD DE,...          +    +
      LD C,...      +    |    |
      LD A,(BC)     |    |    |
      LD L,...      | 11b| 46b| 256b
      ADD A,(HL)    + x4 + x5 | x16
      ADD A,(IX+...)| -- | -- + ---
      LD (DE),A     | 44b|230b|  4k
  =>  INC D         + -1 |    |
                         +    |
      JP $+26                 |
      DS 23                   +
   (около 60 t/байт)

P.S. Днесь читал про DMA UltraSound. Чува-
ки! 20 микросхем - это же полплаты компью-
тера! Разве Speccy для того придуман прос-
тым, чтобы на него вешали такие чудовищные
девайсы?
P.P.S. И ещё: решающим для многих аргумен-
том  против DMA UltraSound будет тот факт,
что во  время  его работы нельзя использо-
вать MultiColor и бордерные эффекты!