- Идея единого и окончательного эмулятора БК
-
? leob - 27.06.2008 02:01
Вот из чего нужно сделать окончательный эмулятор БК, работающий на любых платформах: http://www-jpc.physics.ox.ac.uk/
Кто в яве хорошо разбирается?
-
? Урбанович@ - 19.07.2008 11:01
Так ведь это извращенный эмулятор с применением динамической рекомпиляции, там куча оптимизаций для x86. Для БК достаточно интерпретатора, его и с нуля не так трудно делать.
-
? leob - 25.07.2008 08:51
Зачем изобретать велосипед в части внешних устройств и интерфейса, тем более что там уже есть и эмуляция IDE, которой ни в одном из существующих БК-эмуляторов нет. Динамическую рекомпиляцию делать и не надо, она там и для x86 опциональная.
-
? Александр@ - 26.07.2008 04:55
Почему бы сразу не на флексе/флеше не забацать? :)
-
? leob - 26.07.2008 10:15
Если кто хочет, пусть забацает. Не понимаю, зачем кому-то может захотеться зависеть от закрытой реализации виртуальной машины.
-
? Александр@ - 28.07.2008 21:50
ActionScript теперь вполне себе открытый стандарт, не более закрытый, чем та же Java, а по сути, - это одно и то же, только виртуальные машины разные, и у первого оная намного компактнее.
Но я на самом деле несерьезно говорил. Меня что удивляет, что для БК уже более десятка эмуляторов, но ни один из них не доведен до конца. Сейчас тут Савельев всем расскажет, как крут его эмулятор. Да, только пусть он его из-под ДОС'а наконец вытащит. И это все с учетом того, что БК относительно простая железяка.
-
? Урбанович@ - 29.07.2008 08:53
Так в этом вся проблема. Вместо того, чтобы делать эмулятор, все говорят о том, что для БК это относительно просто, и спорят на этом форуме. Вообще, делают всё, что угодно, только не эмулятор :)
-
? Дмитрий - 29.07.2008 13:20
В принципе у меня давно родилась идея написания эмуля под ХРюшу. Кое-какие наработки есть, будет поддержка внешних устройств через плагины. Сделаю эмуляцию контроллеров дисковода и винта. Правда с муз. сопроцессором так и не разобрался еще когда БКшка была, но, думаю, фанаты БК помогут разобраться. Почти готова утилита для работы с образами дискет/винта, с самими дискетами и IDE-винтом.
-
? Дмитрий - 29.07.2008 13:23
Да и еще забыл. Никак не могу сообразить как сделать генерацию звука на звуковухе ловя 1 и 0 в разряде 177716... Остальное вроде понятно, а тут затык...
-
? Урбанович@ - 29.07.2008 19:41
Во-первых, там 2 разряда. Во-вторых, существует Юрий Калмыков, который написал эмулятор с нормальным (вроде бы) звуком. Эмулятор с открытыми исходниками.
¤
А вообще, эмуляция звука БК - магия, так как он безбуферный.
-
? Александр@ - 30.07.2008 01:35
Да, уже есть эмулятор Калмыкова, который сносно работает как базовый БК-0010. Нет БК-0011, интерфейс требует серьезной доработки. Не поддерживается многие девайсы. Ну и много чего по мелочи. Например, читалка с магнитофона просто не работает на многих компьютерах, потому как битрейт, который он выставляет для wave-in'а не поддерживается многими драйверами звуковухи.
-
? Дмитрий - 31.07.2008 13:07
Для генерации звука достаточно 6-го рязряда. Думаю, эмуляция магнитофона не нужна вообще. Эмулятор Калмыкова у меня как раз есть. Но исходники Сишные...
-
? Александр@ - 01.08.2008 22:05
Чем плохи Сишные исходники?
-
? Дмитрий - 02.08.2008 21:07
Тем, что не волоку я в этих нагромождениях и синтаксисе. :) Кое-какие тексты (относительно простые) читать могу, на паскаль перевести смогу, а вот подобное - увольте...
-
? Александр@ - 07.08.2008 13:07
Сорри, если обижу чем, но все-таки, может, сначала надо "осилить" синтаксис Си перед тем как эмулятор писать? Си - это как азбука программиста в наши времена.
-
? Дмитрий - 07.08.2008 13:48
А у нас разве Си единственный и неповторимый язык программирования?? :) А вообще Си в лес... Никогда не переваривал эту мракотень - руки оторвать тому, кто этот бредовый синтаксис придумал. Нормально пишу и на паскале - гораздо проще, удобнее и читабельнее. Работает не хуже, пишется быстрее (в разы проще чем на Си).
-
? Александр@ - 07.08.2008 22:26
Я рад, что вам так нравится Паскаль. Но сути вопроса это не меняет. Си - азбука и без него в системном программировании делать нечего. Точка. Обсуждать дальнейшее смешно. Тем более что синтаксис у него еще проще голого паскаля. Не говоря уже об Object Pascal'е. Если хотите кому-то отрывать руки, то договоритесь о стрелке с Ритчи и Керниганом. :) Страуструпа и Степанова только не трогайте, им еще TR1 надо утвердить сначала.
-
? Урбанович@ - 09.08.2008 09:58
Азбука БКшника - это бейсик со вставками на машинном коде)
¤
А Си тут действительно незачем знать.
-
? Дмитрий - 10.08.2008 11:49
Ну насчет синтаксиса я поспорю. На паскале все аккуратно, понятно и читабельно. На Си же тока идиот мог придумать запихивать присваивание прямо в конструкцию if, например. Это только 1 пример, а таких море, если поискать. :)
¤
Лана, холивар тут устраивать не будем. По существу надо...
-
? Александр@ - 12.08.2008 01:49
Разговор вполне по существу шел. Напишу еще раз: Стыдно не разбираться в синтаксисе Си. :) Присваивание не является частью if. Книга Ритчи по Си короче любого мануала по Object Pascal... Четвертый раз (показывая пальцам): Стыдно! :)
¤
Урбанович: Вставками кодов в Бейсик много не напрограммируешь. Память быстро кончится. Говорю, как первый, кто разобрал на части бейсик БК и написал две статьи по этому поводу.
Да и вобще мы про эмулятор говорили...
-
? alex savelev@ - 13.08.2008 10:12
По поводу C vs. Pascal - (вечная тема :) - я вот тоже Си крайне не люблю но вынужден его знать чтобы разбиратся в чужих исходниках. А так - да верно pascal - рулез ворева :)
-
? Александр@ - 14.08.2008 02:58
Так разговор шел не про то, что нравится, а то, что надо знать. Мне вобще смолток нравится, ну что же теперь делать? :)
Кстати, когда перенесешь свой эмулятор под что-нибудь платформенно независимое, скажем Qt? :P
-
? itr0ll - 15.08.2008 05:25
хм... а по мне так очень удобно в if присваивание:
if ((h = fopen("/etc/passwd", "rb"))==NULL) {
printf("инна, дружок");
exit(1);
}
-
? alex savelev@ - 15.08.2008 23:50
ну я не знаю че такое Qt :) и платформеннонезависимость не планируется т к все крайне заточено под интел. сидел тут почти месяц параметры dma подбирал - щелчки паразитные пропали в эмуляции ay-3-8910. так что можно сказать я подсел на интел/амд. недавно вот еще ноут себе с дуру взял щас пытаюсь видеорежим совместимый с tft наваять...
-
? Александр@ - 24.08.2008 08:57
Ну так хотя бы в пределах интела останься, но экран и звук отвяжи от низкого уровня. Не думаю, что это уж такая сложная задача.
-
? Юрий Калмыков - 10.09.2008 17:03
Ну что такое.... Как сам начинаешь предлагать сделать нормальный эмулятор, так никого, а потом находишь в форуме кучу народа, который оказывается думает о томже самом :(
Пишешь, пишешь, никто не отвечает, а в форуме продолжают рассуждать: как было бы хорошо...
Каюсь - код моего эмулятора далеко не совершенен (я писал его еще студентом, фактически изучая С++), но это не проблемма, т.к главное что есть с чего начать.
Кто хочет сделать эмулятор - предлагаю сотрудничество, есть куча идей, откликничеть ау!!!!
-
? Дмитрий - 12.09.2008 01:13
Юрий, подскажите как ловя бит в 177716 сгенерировать звук? В Сях не особо силен - думаю проще спросить, чем ковырять чужие сырцы.
-
? Александр@ - 12.09.2008 05:55
Юрий, пиши на alexn74многособакusa.net. Помочь всегда готов, не уверен, правда, что времени будет много на это. Мне кажется нам надо с Лео и Савельевым кооперироваться.
-
? leob@ - 14.09.2008 23:54
Дмитрий, нужно учитывать время в тактах, когда меняется бит в 177716, и при его очередном изменении добавлять в аудиобуфер соответствующее количество сэмплов.
-
? Юрий - 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
К сожалению из-за малого кол-ва свободного времени работа движется очень медленно. Попутно собираю необходимую инфу. Необходимые файлы спеков скачал, спс за наводку. Оказывается они у меня были, но какие-то обрезанные, т.е. половины инфы в них не было. Скачал полные и пока вопросы отпали.
- << Форум