PC-01 Lviv

It is currently 29 Mar 2024, 02:26

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 48 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: 11 Jun 2012, 00:53 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Спасибо за информацию по точкам входа. Несколько бейсик-программ запустилось после перехода по 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


Top
   
PostPosted: 11 Jun 2012, 16:17 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Кому лениво заморачиваться с SVN, для тех в файловом архиве подготовлен специальный архивчик. :D

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 11 Jun 2012, 23:22 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Подсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь.
имхо, отэмулировать надо какое-то количество команд, а уже потом переход туда делать, т.к. по BasicHotEntry 0x02FD код отрабатывает загруженную программу, инициализируя состояние интерпретатора и уже потом переходит на ожидание символа в биос. попробуй после загрузки запустить машину на выполнение до перехода PC в область C000..FFFF, а уже потом "бросать" в RUN.
второй вариант - заполнить буфер ввода с клавиатуры - он как раз на 4 символа.


Top
   
PostPosted: 16 Jun 2012, 09:54 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
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


Top
   
PostPosted: 26 Jun 2012, 10:59 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Значительно ускорил эмулятор и прикрутил звук спикера!

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А - это все известно. А именно у Львова. Ведь я где-то читал, что работа с ОЗУ происходит медленнее, чем с ПЗУ. Как и насколько это тормозится?

И еще: в каких играх на Львове самый лучший музон? Хочу постестировать.


Top
   
PostPosted: 26 Jun 2012, 23:43 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Ведь я где-то читал, что работа с ОЗУ происходит медленнее, чем с ПЗУ. Как и насколько это тормозится?
Сколько у Вас отличных новостей! :)
Про ОЗУ и ПЗУ замечу, что конкретными цифрами не владею. В памяти всплывает цифра 30%, но я сомневаюсь в ее достоверности, поскольку не помню, кто и когда мне ее сообщил. Да и прочих подробностей не помню.
Quote:
И еще: в каких играх на Львове самый лучший музон? Хочу постестировать.
Туго с музоном на ПК-01 было, туго. Из более-менее приличного можно припомнить только "Star Raider" (музыка после загрузки) и "King Valley" (музыка во время игрового процесса).

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 27 Jun 2012, 16:47 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Так что компилятору доверяй, но сам не плошай!
думаешь, что он не смог векторизовать индекс на sizeof(a[]) ?
всё-таки надо на ассемблерный вывод смотреть, может там хитрая индексная адресация используется (я не в курсе системы команд динги) ?
Quote:
У меня нет технических подробностей о тактах, частотах и времянках экрана Львова, поэтому некоторые моменты были реализованы приближенно. Посему есть уточняющие вопросы
с этим сложно, мультиколор-демок практически не было (я слышал от Alexander ровно об одной).
думаю, что спрашивать надо разработчиков, если у них какие материалы ещё найдутся (или сами что вспомнят (to Zelya: 3-я сессия вопросов и ответов?))

Второй вариант - экспериментировать на живом железе, вот только, наверное, чисто программных методов не хватит, нужна ещё какая-то аппаратная обвязка.....


Top
   
PostPosted: 27 Jun 2012, 17:31 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Quote:
думаешь, что он не смог векторизовать индекс
Внутреннему циклу с индексом "x" проще получать данные из массива screen[y][x], т.к. элементы [x] располагаются в памяти последовательно. При этом указатель в каждой итерации инкрементируется на +1. Для массива screen[x][y] указатель должен изменяться с шагом sizeof[y], а это более тормозной вариант. Поменял - и эмулятор начал просто летать.
Quote:
Второй вариант - экспериментировать на живом железе, вот только, наверное, чисто программных методов не хватит
ivagor писал отличные тесты с помощью которых удалось определить все временные диаграммы работы видеоОЗУ и процессора Вектора. Для Львова у него тоже был тест (его запускали в теме на zp.pk.ru, когда разбирались с частотами и экраном), но он утерян и связь с ivagor-ом тоже утеряна - его почтовый ящик закрыт.


Top
   
PostPosted: 27 Jun 2012, 17:38 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
ivagor писал отличные тесты с помощью которых удалось определить все временные диаграммы работы видеоОЗУ и процессора Вектора. Для Львова у него тоже был тест (его запускали в теме на zp.pk.ru, когда разбирались с частотами и экраном), но он утерян и связь с ivagor-ом тоже утеряна - его почтовый ящик закрыт.
А ФИО ivagor'а известны? Я могу провести глубинное бурение Интернета, вдруг повезет.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 27 Jun 2012, 19:03 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Quote:
А ФИО ivagor'а известны? Я могу провести глубинное бурение Интернета, вдруг повезет.
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.


Top
   
PostPosted: 27 Jun 2012, 20:12 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Quote:
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
Ой! Действительно очень жаль, что Иван пропал с контакта. Очень интересный человек и собеседник, много сделавший для "Львова"! Посмотрел, последнее полученное от него письмо датируется маем 2011-го. :cry:


Top
   
PostPosted: 27 Jun 2012, 23:35 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
По результатам бурения отписался в личку.

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

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 01 Jul 2012, 02:27 
Offline

Joined: 04 Jun 2012, 22:08
Posts: 44
Location: Украина
Выпущен релиз эмулятора со звуком и качественным ресайзом экрана.
http://code.google.com/p/timgoo/downloads/list

Пропиарил Львов у буржуев на динго-форуме. Знай наших ))
http://boards.dingoonity.org/dingoo-rel ... iv-pk-01'/


Top
   
PostPosted: 02 Jul 2012, 10:39 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Tim0xA
Quote:
Пропиарил Львов у буржуев на динго-форуме. Знай наших ))
Дело правильное и очень полезное! Может рискнете продублировать тему в интернациональном разделе?


Top
   
PostPosted: 02 Jul 2012, 11:06 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Выпущен релиз эмулятора со звуком и качественным ресайзом экрана.
Отличная новость! А что-нибудь известно о работоспособности эмулятора на других подобных устройствах (Ritmix RZX-50, к примеру)?

p.s.
Свежие исходники и архив продублированы в файловом архиве (v2).

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 48 posts ]  Go to page Previous 1 2 3 4 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited