Из журнала 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 и бордерные эффекты!