-----------------------------------------¬
¦ 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