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