PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Запуск эмулятора ПК-01 "Львов" на Dingoo A320 http://pc01.lviv.ua/forum/viewtopic.php?f=12&t=94 |
Page 3 of 4 |
Author: | Tim0xA [ 11 Jun 2012, 00:53 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Спасибо за информацию по точкам входа. Несколько бейсик-программ запустилось после перехода по 0x06AB, но подавляющее большинство пишет ошибку: Code: ?SN ERROR GOПодсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь. Эмулировать набор RUN не буду, в SDK есть виртуальная клава - лучше ее прикрутить. Выложил исходники http://code.google.com/p/timgoo/source/ ... k/lvivgoo/ и последнюю сборку с играми http://code.google.com/p/timgoo/downloads/list |
Author: | liberation [ 11 Jun 2012, 16:17 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Выложил исходники http://code.google.com/p/timgoo/source/ ... k/lvivgoo/
Кому лениво заморачиваться с SVN, для тех в файловом архиве подготовлен специальный архивчик.
|
Author: | sadfsdfsdaf [ 11 Jun 2012, 23:22 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Подсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь.
имхо, отэмулировать надо какое-то количество команд, а уже потом переход туда делать, т.к. по BasicHotEntry 0x02FD код отрабатывает загруженную программу, инициализируя состояние интерпретатора и уже потом переходит на ожидание символа в биос. попробуй после загрузки запустить машину на выполнение до перехода PC в область C000..FFFF, а уже потом "бросать" в RUN.второй вариант - заполнить буфер ввода с клавиатуры - он как раз на 4 символа. |
Author: | sadfsdfsdaf [ 16 Jun 2012, 09:54 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Подсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь. Эмулировать набор RUN не буду, в SDK есть виртуальная клава - лучше ее прикрутить.
вот вариант с буфером клавиатуры - просто и сердито
Code: emControl(emcSetMem,0xBE10,13); emControl(emcSetMem,0xBE11,'N'); emControl(emcSetMem,0xBE12,'U'); emControl(emcSetMem,0xBE13,'R'); emControl(emcSetMem,0xBE14,4);знать точку входа в RUN необязательно, минус - не больше 4-х символов Code: E8A9 sub_E8A9: ; input_key E8A9 push h E8AA push d E8AB push b E8AC mvi a, 8Ah ; 'К' E8AE out 0D3h E8B0 lxi h, keyBufSz ; num of chars E8B3 mov a, m E8B4 ora a E8B5 jnz loc_E908 E908 loc_E908: E908 dcr m E909 mvi a, 10h E90B add m E90C mov l, a E90D mov a, m E90E pop b E90F pop d E910 pop h E911 ret BE10 keyBuf: .db 0, 0, 0, 0 BE14 keyBufSz: .db 0 |
Author: | Tim0xA [ 26 Jun 2012, 10:59 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Значительно ускорил эмулятор и прикрутил звук спикера! 1. По поводу ускорения: исправил такую плюху, о которой даже не задумывался, но она вполне очевидно приводила к жутким тормозам. Ну вот, например: Code: for (y = 0; y < 256; y++) { for (x = 0; x < 256; x++) { ... = screen[y][x] ; // <- вот такое обращение к массиву работает НАМНОГО быстрее ... = screen[x][y] ; // чем вот такое } }Да, это все ясно, но я только сейчас обратил на это внимание. Так что компилятору доверяй, но сам не плошай! В итоге эмулятор стал просто летать. А я все удивлялся, ну почему на динге эмулят сегу и снес - там железо покруче, а все летает. А у меня Вектор и Львов (простые машинки) тормозили )) 2. В эмуляции звука велосипед не изобретался. Ключевой момент - синхронизация от звука. В SDK динги есть библиотечка, в которой можно запустить проигрывание WAV-буфера. И есть процедура, которая вызывается, когда завершается проигрывание этого WAV-буфера. Создаем два буфера длительностью по 20мс. Заполняем один буфер и по заполнению приостанавливаем проц и обновляем экран, в это время проигрывается второй буфер, по завершению которого переключаем буферы и опять пускаем проц, заполняем буфер и т.д по кругу. Звук воспроизводится непрерывно без щелчков и потерь синхронно с отрисовкой экрана. ФПС сделал чуть больше 49. Не 50, потому что так было удобнее синхронизировать число тактов на фрейм и размер звукового буфера. Тактов в экране 44800, но динга не потянула звук 44800, а только 44100. Поэтому я даю 896 семплов вместо 882 на 20мс для кратности. В итоге получился очень простой и быстрый код. Сначала взялся "отлаживать" звук на рекомпиляциях с MSX... Но не звучит хоть ты тресни! Хоть грызи зубами лед! Хоть бейся лбом об стену! Молчит как рыба! А потом вспомнил, что там звук не через спикер, а на AY. А я и забыл уже )) Взял родной софт - эмулятор запел )) У меня нет технических подробностей о тактах, частотах и времянках экрана Львова, поэтому некоторые моменты были реализованы приближенно. Посему есть уточняющие вопросы: 1. Сколько тактов в строке? Я взял 32 такта на строчный импульс и 128 на экран. Т.е. строка - 160 тактов. 2. Какова длительность КСИ? Какой полный размер экрана в пересчете на строки? Я взял 256 видимых строк и 24 на КСИ. Т.е. всего 280 строк. В итоге получаем 160*280=44800 тактов на экран. 3. Есть ли детальная информация за какое количество тактов выполняется та или иная процессорная команда у Львова? Не у процессора ВМ80А - это все известно. А именно у Львова. Ведь я где-то читал, что работа с ОЗУ происходит медленнее, чем с ПЗУ. Как и насколько это тормозится? И еще: в каких играх на Львове самый лучший музон? Хочу постестировать. |
Author: | liberation [ 26 Jun 2012, 23:43 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Ведь я где-то читал, что работа с ОЗУ происходит медленнее, чем с ПЗУ. Как и насколько это тормозится?
Сколько у Вас отличных новостей! Про ОЗУ и ПЗУ замечу, что конкретными цифрами не владею. В памяти всплывает цифра 30%, но я сомневаюсь в ее достоверности, поскольку не помню, кто и когда мне ее сообщил. Да и прочих подробностей не помню. Quote: И еще: в каких играх на Львове самый лучший музон? Хочу постестировать.
Туго с музоном на ПК-01 было, туго. Из более-менее приличного можно припомнить только "Star Raider" (музыка после загрузки) и "King Valley" (музыка во время игрового процесса).
|
Author: | sadfsdfsdaf [ 27 Jun 2012, 16:47 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Так что компилятору доверяй, но сам не плошай!
думаешь, что он не смог векторизовать индекс на sizeof(a[]) ?всё-таки надо на ассемблерный вывод смотреть, может там хитрая индексная адресация используется (я не в курсе системы команд динги) ? Quote: У меня нет технических подробностей о тактах, частотах и времянках экрана Львова, поэтому некоторые моменты были реализованы приближенно. Посему есть уточняющие вопросы
с этим сложно, мультиколор-демок практически не было (я слышал от Alexander ровно об одной).думаю, что спрашивать надо разработчиков, если у них какие материалы ещё найдутся (или сами что вспомнят (to Zelya: 3-я сессия вопросов и ответов?)) Второй вариант - экспериментировать на живом железе, вот только, наверное, чисто программных методов не хватит, нужна ещё какая-то аппаратная обвязка..... |
Author: | Tim0xA [ 27 Jun 2012, 17:31 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: думаешь, что он не смог векторизовать индекс
Внутреннему циклу с индексом "x" проще получать данные из массива screen[y][x], т.к. элементы [x] располагаются в памяти последовательно. При этом указатель в каждой итерации инкрементируется на +1. Для массива screen[x][y] указатель должен изменяться с шагом sizeof[y], а это более тормозной вариант. Поменял - и эмулятор начал просто летать.Quote: Второй вариант - экспериментировать на живом железе, вот только, наверное, чисто программных методов не хватит
ivagor писал отличные тесты с помощью которых удалось определить все временные диаграммы работы видеоОЗУ и процессора Вектора. Для Львова у него тоже был тест (его запускали в теме на zp.pk.ru, когда разбирались с частотами и экраном), но он утерян и связь с ivagor-ом тоже утеряна - его почтовый ящик закрыт.
|
Author: | liberation [ 27 Jun 2012, 17:38 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: ivagor писал отличные тесты с помощью которых удалось определить все временные диаграммы работы видеоОЗУ и процессора Вектора. Для Львова у него тоже был тест (его запускали в теме на zp.pk.ru, когда разбирались с частотами и экраном), но он утерян и связь с ivagor-ом тоже утеряна - его почтовый ящик закрыт.
А ФИО ivagor'а известны? Я могу провести глубинное бурение Интернета, вдруг повезет.
|
Author: | Tim0xA [ 27 Jun 2012, 19:03 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote:
А ФИО ivagor'а известны? Я могу провести глубинное бурение Интернета, вдруг повезет.
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
|
Author: | Zelya [ 27 Jun 2012, 20:12 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote:
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
Ой! Действительно очень жаль, что Иван пропал с контакта. Очень интересный человек и собеседник, много сделавший для "Львова"! Посмотрел, последнее полученное от него письмо датируется маем 2011-го.
|
Author: | liberation [ 27 Jun 2012, 23:35 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
По результатам бурения отписался в личку. Про скорость доступа к ОЗУ и ПЗУ - круг замкнулся! 30% пришли из Вашей реплики на zx.pk.ru, где цитируется довольно известный злопыхательский фрагмент про "Львов". |
Author: | Tim0xA [ 01 Jul 2012, 02:27 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Выпущен релиз эмулятора со звуком и качественным ресайзом экрана. http://code.google.com/p/timgoo/downloads/list Пропиарил Львов у буржуев на динго-форуме. Знай наших )) http://boards.dingoonity.org/dingoo-rel ... iv-pk-01'/ |
Author: | Zelya [ 02 Jul 2012, 10:39 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Tim0xA Quote: Пропиарил Львов у буржуев на динго-форуме. Знай наших ))
Дело правильное и очень полезное! Может рискнете продублировать тему в интернациональном разделе?
|
Author: | liberation [ 02 Jul 2012, 11:06 ] |
Post subject: | Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320 |
Quote: Выпущен релиз эмулятора со звуком и качественным ресайзом экрана.
Отличная новость! А что-нибудь известно о работоспособности эмулятора на других подобных устройствах (Ritmix RZX-50, к примеру)? p.s. Свежие исходники и архив продублированы в файловом архиве (v2). |
Page 3 of 4 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |