ZX Hard #01
06 мая 1999
  Железо  

OSP v.0.1 - новая звуковая карта для Спектрума на замену General Sound.

<b>OSP v.0.1</b> - новая звуковая карта для Спектрума на замену General Sound.
-----------------------------------------¬
¦              OSP v.0.1                 ¦
L-----------------------------------------

(c) VTS'99


       Хайствую ту олл кул пиплз !

    Давно  я бродю с альтернативой General
Sound'у,  и решил, наконец, спросить у лю-
дей, что они по этому поводу думают...
    Сразу  хочу  предупредить, что сей де-
вайс  не  ставит своей целью разбить саунд
X-TRADE'ов.  Более  того,  разработка  его
сейчас повисла и движется очень медленно и
я  очень  хотел  бы сотрудничать, в первую
очередь, и с X-TRADE.
    Кроме  того,  данная статья преследует
еще одну цель. В качестве эксперимента :-)
хотелось   бы   попробовать  что-то  вроде
"открытой  разработки".  Т.е.  любой может
внести свой вклад в разработку OSP и общи-
ми  усилиями сделать девайс еще более кру-
тым.  Внесшим  особо  крупный вклад доки и
платы  будут предоставлены по себестоимос-
ти,  остальным  же несколько дороже. Также
гарантируется местечко в списке авторов ;)
К  тому  же Вы будете в курсе архитектуры,
софта и харда саунда еще в процессе разра-
ботки (а остальные - только после ее окон-
чания).
    К  этому процессу могут подключиться и
программисты.  За написание софта возможно
предоставление различных скидок.

    Итак,  основная проблема GS (по обсуж-
дениям юзеров) - цена. Все остальное можно
проскипать по причине Стандартизации. При-
чем  цена  эта  заложена в самой концепции
саунда. В OSP планируется пойти на кой-ка-
кие компромиссы, поставив простоту и деше-
визну  выше качества. По некоторым прикид-
кам  цена  будет  примерно  вдвое ниже, не
считая экономии на AY.

Итак, сейчас в проект OSP включены идеи:

    1).  Концепция  совместимости  "сверху
вниз"  с AY8910(12). OSP вставляется в па-
нель  AY и его эмулирует, вплоть до портов
ввода-вывода    (к   примеру,   Centronics
KAY'я).  Т.о., проблема с дефицитом AY бу-
дет разрешена и на рынке должны будут поя-
виться дешевеющие AY как стандартный саунд
Спека  (сейчас,  напр., по умолчанию, Nemo
НЕ  СТАВИТ  AY). А OSP и т.п. будут расши-
ренными саундкартами.
    Здесь  существуют чисто конструктивные
проблемы,  напр., механическая прочность и
расположение  в  корпусе. Вероятней всего,
конструкция будет заточена под KAY и будет
существовать  шлейф-удлинитель  для  особо
извернутых клонов.

    2). Интерфейс с CPU через окно размер-
ности  256 регистров обычного AY. Сомнения
представляют  старые  проги, которые могут
безнаказанно  (у AY) сорить в эти регистры
как   в  свои  собственные  (AY  проверяет
только 4 младших бита, игнорируя остальны-
е).   Однако  протрассированные  несколько
плейеров показали, что работают с номерами
регистров  люди корректно (по крайней мере
нормальные люди).
    Другим  способом  реализовать этот ин-
терфейс (напр. порт-порт) не представляет-
ся  возможным  по причине того, что других
сигналов,  кроме BC1, BC2, BDIR и D0-D7 на
панель AY не выведено :-)
    Со  стороны  OSP  эти регистры - кусок
ОЗУ,  при  обращении  в который со стороны
CPU проц OSP будет тормозиться (так проще,
ведь интерфейс и так уже наворочен).

    3).  Минимальная  цена определила при-
мерную конфигурацию:

- Z80A, CLK: 5.25=3*1.75 МГц,
[По-идее  5.25 МГц не должны стать пробле-
мой.  А  левые  тормозные  процы must die]
синхронизированный от CLK_AY = 1.75 МГц.

    Выбор   Z80A   определен  его  широкой
распространенностью  (б/у:  tape-компы)  и
дешевизной.
    Тактирование от 1.75 МГц упростит так-
товый генератор, избавит от кварца...
    Возможна,   по-идее,  замена  Z80A  на
че-ньдь  покруче,  со  специальной платкой
(со  своим  супер-пупер генератором на 200
МГц).  Но тоды и ПЗУху поменять надо будет
(под  другие задержки плейера). Причем все
это без паяльника.

-  ROM  2764. Расширение до 27128 либо две
2764  простой заменой. Опять же, такие ПЗУ
(б/у) не представляют проблем.
    Прошит  должен  быть только AY-player,
модов  не  будет  (места не хватит), а вот
Chip  хотелось бы (но я не имею по ним ин-
фы; так что плиз, отфорвадьте кто может ;)
А  лучше  бы сразу исходники на асме :) ).
Все остальные навороты запускаются в ОЗУ.

-RAM.  Вначале  планировались  SRAM малого
объема  (32кб)  для chip-модулей. Но потом
все же решился на SIMM.

- КР580ВИ53 для эмуляции тональных генера-
торов. Тактирование 1.75 МГц.

-  Генерацию шуму возложим на Z80. В AY он
вааще однобитовый, и какой-то не очень бе-
лый :-)

-  Логарифмические  регуляторы громкости -
на  основе 8-битного ЦАП. Аппроксимация по
таблицам в ПЗУ.

-  ЦАП К572ПА1 (один). Четыре канала дела-
ются одним хитрым способом, который только
то  и делает, что зашумляет сигнал (и эко-
номит  микрухи).  Может быть будет даже 16
или  32  канала  с основой на тех же 4'ех.
(однако  пока  он недостаточно изучен мной
на  практике;  сомнения представляет в ос-
новном  уровень  шума.  Сейчас уже некогда
эксперементировать  -  газету  надо линко-
вать.)

-  INT от канала 0(A) К580ВИ53. При проиг-
рывании  digital muzak настраиваем на нуж-
ную частоту и делаем EI.

- может быть маломощный (на наушники/ пол-
ватные динамики) усилитель.

- другие мелочи схемотехнического плана.

    В  общем-то  я  тут  накидал примерную
схемку,  но  надо еще подумать о нижеизло-
женных проблемах. Хотя, вероятней всего, с
ними ничего не поделаешь.

    Ну   а  теперь  поговорим  о  прошивке
ПЗУ'шки.

    Основа  ее  -  эмуляция AY. Может быть
будет  Chip-плейер. Остальное (моды, вавы,
s3m, mpeg...) проигрывается прогами в ОЗУ.
    Основным  циклом является эмуляция AY,
которая включает в себя:

- коэффициенты деления тональных генерато-
ров  после сдвига на 4 бита влево кидаются
в ВИ53 (сдвиг необходим для эмуляции дели-
телей частоты на 16).

- логарифмическая громкость, преобразован-
ная  в линейный и 8-битный вид по таблице,
закидывается в ЦАПы каналов.

- генерацию шума. Вероятней всего, для ус-
корения   прийдется  сделать  некую  смесь
XOR-генератора  (псевдослучайных  чисел) с
подготовленными  (небольшими)  таблицами в
ПЗУ.  (кстати, а кто знает "настоящий" ге-
нератор шума AY/YM ?).

-  смеситель. Маскирует программно генера-
торы  шума и аппаратно - тональные генера-
торы.

- генератор огибающей.

- обмен по портам ввода/вывода.

    Если  теперь  прикинуть, сколько ж это
занимает  времени...  Ну для интерруптовой
музыки  это  не проблема, а вот digital на
нескольких  килогерцах  обломиться.  Да  и
ввод-вывод тоже.
    Выход  я  вижу  только один: предвари-
тельно  OSP переводиться в необходимый ре-
жим  эмуляции.  При  этом цикл значительно
сокращается и ускоряется.
    Во всех циклах условием выхода являет-
ся изменение состояния некоторого регистра
(скажем,  #7F), что отсылает проц в управ-
ляющую  процедуру,  анализирующей  регистр
команд  и делающей CALL куда-ньдь, а имен-
но:

- полная эмуляция AY
- digital AY (4bit/8bit)
- PIO (IRA/IRB)
- RG_OSP(#80-#FF)>RAM_OSP
 (регистры  #80-#FF  выделены для обмена
  данными  с CPU; регистры #00-#7F пред-
  назначены для управления OSP, и в пер-
  вой  версии  их  большая  часть  неза-
  действована, но зарезервирована !)

- JP address
- ? Chip-player
- ??? ну не знаю чего еще...
      Жду предложений.

    Вообще   говоря,   софт  OSP  продуман
меньше  харда, поэтому его могут продумать
получше  другие. Самым приятным будет про-
думывание посредством асма ;).

    Ну  вот  вроде  бы  все  что хотел я и
рассказал.  Теперь жду откликов и конкрет-
ных предложений и идей.

    Принимаются  также  предложения из об-
ласти научной фантастики ;) , т.к. в неоп-
ределенном будущем после OSP v1.x возможно
появление  второй  версии, которая включит
все  самое  крутое, что будет придумано. И
здесь качество не будет подминаться ценой.
Т.е.  что-то вроде ремикса GS, но включен-
ного   в   апгрейд-цепочку   на   базе  AY
(AY->OSP1->OSP2->...)

P.S.:  А как же декомпилировать сокращение
OSP ???
    А  не  скажу  ! По крайней мере в этот
раз. Пускай народ голову поломает ;)


is-dos 22-03-99 21:21msk
last edition 05-05-99/22:26msk



Другие статьи номера:

Вступление - о первом номере железячной газеты.

Мешо почты - письма от: Mongol/Delta Corporation, SANDER/MskZXNet, Mr.Brain, Чирцов Игорь.

Переписка - Nemo & VTS.

COM-port & timer - Последовательный порт для Spectruma!!!

"Железная"... логика! - ликбез о логических микросхемах.

Fast Memory Access (FMA) - схема ускорения работы с памятью.

C-bus - шина основаная на Centronics interface.

OSP v.0.1 - новая звуковая карта для Спектрума на замену General Sound.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Советы - подсказки по игре "HAMMER FIST".
Введение - Не прошло и пол года, как на пыльных кинескопах ваших видео-агрегатов засветился новый выпуск газеты WeekEnd #5.
Презентация - в презентации мы рассмотрим две игры CНUCKIE EGG 1-2.
Фэнтези - Айзенк Азимов "Человек, который никогда не мал".
Реклама - CD-ROM с огромным архивом программ для ZX-Spectrum'а.

В этот день...   23 апреля