ПК-01 ЛЬВОВ

форум о ПК-01,02 "Львов"
Текущее время: 09 апр 2020, 17:23

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 48 сообщений ]  На страницу Пред. 1 2 3 4 След.
Автор Сообщение
СообщениеДобавлено: 11 июн 2012, 00:53 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщения: 44
Откуда: Украина
Спасибо за информацию по точкам входа. Несколько бейсик-программ запустилось после перехода по 0x06AB, но подавляющее большинство пишет ошибку:
Код:
?SN ERROR
GO
Подсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь. Эмулировать набор RUN не буду, в SDK есть виртуальная клава - лучше ее прикрутить.

Выложил исходники http://code.google.com/p/timgoo/source/ ... k/lvivgoo/ и последнюю сборку с играми http://code.google.com/p/timgoo/downloads/list


Вернуться к началу
СообщениеДобавлено: 11 июн 2012, 16:17 
Не в сети
Аватара пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщения: 1403
Откуда: Украина
Цитата:
Кому лениво заморачиваться с SVN, для тех в файловом архиве подготовлен специальный архивчик. :D

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
СообщениеДобавлено: 11 июн 2012, 23:22 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: 16 июн 2012, 09:54 
Не в сети

Зарегистрирован: 07 дек 2010, 16:54
Сообщения: 202
Цитата:
Подсмотрел в отладчике b2m состояния регистров, но не помогло, чего-то еще не хватает. Может потом разберусь. Эмулировать набор RUN не буду, в SDK есть виртуальная клава - лучше ее прикрутить.
вот вариант с буфером клавиатуры - просто и сердито :-)
Код:
 emControl(emcSetMem,0xBE10,13);
 emControl(emcSetMem,0xBE11,'N');
 emControl(emcSetMem,0xBE12,'U');
 emControl(emcSetMem,0xBE13,'R');
 emControl(emcSetMem,0xBE14,4);
знать точку входа в RUN необязательно, минус - не больше 4-х символов
Код:
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


Вернуться к началу
СообщениеДобавлено: 26 июн 2012, 10:59 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщения: 44
Откуда: Украина
Значительно ускорил эмулятор и прикрутил звук спикера!

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

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


Вернуться к началу
СообщениеДобавлено: 26 июн 2012, 23:43 
Не в сети
Аватара пользователя

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 16:47 
Не в сети

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

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


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 17:31 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 17:38 
Не в сети
Аватара пользователя

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 19:03 
Не в сети

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


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 20:12 
Не в сети
Site Admin
Аватара пользователя

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


Вернуться к началу
СообщениеДобавлено: 27 июн 2012, 23:35 
Не в сети
Аватара пользователя

Зарегистрирован: 11 авг 2008, 17:05
Сообщения: 1403
Откуда: Украина
Цитата:
Очень даже известны - это Городецкий Иван, который адаптировал мои рекомпиляции с MSX на Львов и другие компы. Просто связь утеряна.
По результатам бурения отписался в личку.

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
СообщениеДобавлено: 01 июл 2012, 02:27 
Не в сети

Зарегистрирован: 04 июн 2012, 22:08
Сообщения: 44
Откуда: Украина
Выпущен релиз эмулятора со звуком и качественным ресайзом экрана.
http://code.google.com/p/timgoo/downloads/list

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


Вернуться к началу
СообщениеДобавлено: 02 июл 2012, 10:39 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщения: 1009
Tim0xA
Цитата:
Пропиарил Львов у буржуев на динго-форуме. Знай наших ))
Дело правильное и очень полезное! Может рискнете продублировать тему в интернациональном разделе?


Вернуться к началу
СообщениеДобавлено: 02 июл 2012, 11:06 
Не в сети
Аватара пользователя

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

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

_________________
Carthago delenda est, Carthaginem delendam esse


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 48 сообщений ]  На страницу Пред. 1 2 3 4 След.

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB