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:
Кому лениво заморачиваться с SVN, для тех в файловом архиве подготовлен специальный архивчик. :D

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-го. :cry:

Author:  liberation [ 27 Jun 2012, 23:35 ]
Post subject:  Re: Запуск эмулятора ПК-01 "Львов" на Dingoo A320

Quote:
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
По результатам бурения отписался в личку.

Про скорость доступа к ОЗУ и ПЗУ - круг замкнулся! 30% пришли из Вашей реплики на zx.pk.ru, где цитируется довольно известный злопыхательский фрагмент про "Львов". :lol:

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/