- Идея единого и окончательного эмулятора БК
- [+] Старые сообщения (29)
-
? Юрий - 15.09.2008 22:48
Дмитрию
Конечно могу помочь, только спрашивай поконкретней чего не выходит-то. Вроде как все просто, пишешь в буфер звуковухи, когда 0 - минимальный уровень сигнала, 1 - максимальный. Спрашивай короче :)
-
? Юрий Калмыков - 15.09.2008 22:55
Народ, кто программисты, смотрю что обсуждалось, по поводу звука, по поводу интерфейса, ну так помогите, нупишите нормальный :). На QT например. Можно эмулятор вообще по частям писать. Можно сделать низкоуровневый модуль, отдельно, интерфейс отдельно, и т.д. Вообще не обязательно на основе моих делать, можно вежливо попросить у Савельева. Может кто спросит у него :). Я писал много раз, не отвечает.
-
? Дмитрий - 16.09.2008 20:59
2 Юрий: Я просто со звуком не работал, а вот теперь понял, что потерял из-за того, что не изучал работу со звуковыми буферами и данными параллельно с основным. Я самоучка и изучал то, что надо было в данный момент. С низким уровнем понятно. Пишем нули пока в разряде 0. Но вот появляется 1 и, как я понял, мы начинаем считать такты пока есть эта единица. Допустим, единица была выставлена в течение 80 мкс (после перевода тактов в микросекунды). Частота выборки буфера равна 44кгц и глубина 16 бит. А дальше затык...
¤
Вот и с эмулятором муз. проца примерно чуть дальше застрял. Даташит на микросхему нашел, разобрался с частотами звуков. А с огибающей застрял: логарифмическая громкость, генерация звуковых данных по огибающей с изменением громкости...
¤
Есть еще несколько моментов в другой области, но основа вся понятна. Сам эмулятор прост - сложнее обвязка. С эмулятором дисковода проблем нет, а вот с винтом есть. Мануал по ИДЕ командам есть, но в контроллере АльтПро существует регистр так называемого "второго статуса". Что возвращает туда контроллер/винт - не понятно. Вот в журнале нашел дизассемблированный текст прошивки 326 с комментами - все по полочкам. А вот примерно такого же по части винта нет. Когда была БК-ха - об этом не задумывался. Да и зачем? Все под рукой в ПЗУ.
-
? alex savelev@ - 16.09.2008 23:40
В общем с AY-3-8910 я разобрался досконально. Генератор огибающих в нем - это несложно, меняется громкость по нескольким заданным алгоритмам. Но я смотрю народ до сих пор не может нормально сэмулировать звуковой бит в 177716 :)) куда уж там про эмуляцию AY говорить. И кстати почему это я не отвечаю? у меня сейчас постоянное соединение, мыло мое все знают - bkcrew@vfemail.net Пишите - постараюсь помочь чем смогу
-
? Дмитрий - 17.09.2008 00:53
Алекс, как раз как сгенерировать звук по данным в регистрах каналов несложно. В даташите все подробно объяснено. Мне про огибающие не совсем понятно, хоть и описано довольно подробно. Но там например неясна длительность действия периода огибающей. К примеру в огибающей
¤
/|_______
¤
часть /| обозначена как EP - envelope period (duration of one cycle). А чему равен 1 цикл? Такту? 1 мкс или 1 мс? И сколько тогда длится остальная часть ______??? И как она на следующем цикле повториться - с начала повторится или продолжится ____ пока не изменим значение... Вот тут и неясно как генерировать данные звукового буфера. С громкостью надо еще разобраться.
-
? Дмитрий - 17.09.2008 01:00
Да, забыл еще про шум. Бульба писал про раскрытие алгоритма генерации частот шума, но в его исходниках по большому счету черт ногу сломит... Обещал выкладывать в исходниках оригинальные данные, а не фикцию как раньше. Вроде совпадают шумовые эффекты компилированного и его готового плеера. Да и писал он плеер, а не программный эмулятор микросхемы. Да и зачем-то он врезал туда эмулятор команд Z80 - я так понял он не разбирался в коде спековских плееров, а просто эмулировал их работу не вдаваясь в подробности...
-
? alex savelev@ - 19.09.2008 13:18
По поводу генератора огибающих: в моем эмуляторе частота обновления совпадает с rtc x 4 (8192 hz * 4 = 32khz). для меня ето один тик и все работает прекрасно. по поводу генератора шума для AY: я взял уже готовые, кем то сгенеренные таблицы noise по которым и работаю
-
? Дмитрий - 19.09.2008 15:41
На исходник твоего творения эмуля AY мона взглянуть?
-
? Дмитрий - 19.09.2008 15:47
Да, и еще. А ты сам как генерил звук по биту в 177716?
-
? Юрий - 26.09.2008 14:11
У меня так сделано: Есть рабочий цикл эмулятора. Во время рабочего цикла он "выплевывает" все данные которые накопились - выводит текущий видео буфер на экран, записывает накопившиеся данные с регистра 177716 и т.д. ... Допустим текущий Sample Rete звуковой карты = SoundSR. Также время каждого цикл эмулятора во внутреннем представлении = CPUTicks. Есть промежуточный буфер куда при изменении бита 6 регистра 177716 кладется новое значение 0 или MAX, и кол-во тактов прошедших с последнего изменения. За время SoundSR проходит строго N рабочих циклов и мы просто мапируем вектор отсчетов регистра 177716 на вектор текущего звукового буфера длиной SoundSR/N. И все...
-
? alex savelev@ - 13.10.2008 21:37
Дмитрий: если нужны исходники то только в мыло плиз. Просто так они не отдаются, слишком много сил потрачено. По поводу звука в 177716: пришла 1 - шлю на динамик PC 1, пришел 0 - шлю 0 :)). Грубо говоря: in al, 61h; and al, 11111100b; or al, 010b; out 61h, al --- это мы послали единичку.
-
? Дмитрий - 18.10.2008 22:28
Алекс, пока не надо. Я практически разобрался с эмулем Бульбы - все отлично работает, только дописать, чтоб генерировал шум с огибающими. У него реализован шум упрощенно, но верно. А по поводу звука: ДОСовский вариант не интересует :) Надо под винду.
-
? breaker - 21.10.2008 10:54
между тем разрабатывается новый эмулятор различных советских компьютеров (в том числе и БК)
http://bashkiria-2m.narod.ru/
форум на котором обсуждается развитие эмулятора http://zx.pk.ru/forumdisplay.php?f=54
сейчас какраз идёт работа над эмуляцией БК.
-
? Александр@ - 21.10.2008 19:29
Господи, сколько же уже эмуляторов... Один законченный был бы... :)
-
? Дмитрий - 22.10.2008 00:03
Этот эмуль сильно упрощенная версия. Хотя тоже имеет право на жизнь. ИМХО незачем впихивать столько эмуляторов в один. Сделать эмулятор одного компьютера, но так, чтобы он был максимально приближен к оригиналу.
¤
Вообще я считаю, что написать эмулятор - это дань уважения такому отличному компьютеру как БК (опять же мое ИМХО).
¤
В догонку вопрос: есть ли у кого описание принципа работы контроллера винта от БК (пусть даже самопальное)? Очень интересует назначение ячеек и их формат. А если кто разобрался в нем (и драйвере) так, что знает его как свой карман - прошу помочь с инфой. Работа прошивки дисковода была подробно расписана в журнале БК, хотелось бы найти хоть что-то подобное и для винта.
-
? Дмитрий - 22.10.2008 00:07
Да, забыл добавить. Сам в свое время не успел разобраться с драйвером (о чем жалею) - контроллер SMK128 с винтом на 170Мб у меня появился поздно. БКшка погибла от моих рук вместе с винтом и AY (странно, но контроллер остался цел, но в диагностике выдает ошибку, которой быть не должно). О чем сильно жалею...
-
? Аноним - 22.10.2008 04:41
Насколько я понимаю, в "стандартной" схеме устроен только дешифратор и выработка сигнала RPLY, по адресам 177740..177756 четным вырабатывается CS0 на аташный винт, а по нечетным - CS1. Все описание сводится к стандарту на программирование IDE-накопителя
в режиме CHS. Диск при этом непосредственно подсоединен к шине процессора, потому информация во всех регистрач инверсная.
-
? Дмитрий - 22.10.2008 20:55
Это я знаю, описание программирования с подробным русским описанием есть. Меня особо интересует что записывает контроллер в ячейки "статус" и "второй статус". Какие коды или биты за что отвечают. Вот этого там нет.
-
? Аноним - 22.10.2008 21:51
Ячейка 0177740 "статус" по чтению и "команда" по записи. Ячейка 0177743 "2й статус" по чтению и "сброс накопителя" по записи (там же еще есть бит разрешения прерываний, но в БК при работе с диском они не используются). 0177740 соответствует порту 0x1f7 IBM PC, а 0177743 - порту 0x3f6. Все описание есть в стандарте ANSI X3.221-199x и сопутствующих.
-
? Аноним - 08.11.2008 15:23
Дмитрий, вы пропали куда-то, с программированием винчестера больше нет трудностей, полагаю? :)
-
? Дмитрий - 14.11.2008 15:05
К сожалению из-за малого кол-ва свободного времени работа движется очень медленно. Попутно собираю необходимую инфу. Необходимые файлы спеков скачал, спс за наводку. Оказывается они у меня были, но какие-то обрезанные, т.е. половины инфы в них не было. Скачал полные и пока вопросы отпали.
- << Форум