Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Nov 12, 2019 4:04 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 53 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: Mon Feb 11, 2008 7:33 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
mike.dld - толково придумал )))

andrew_programmer - например это работает так:
t = time_stamp();
z80_run(100);
t = time_stamp() - t;
sleep(CT - t); // пусть параметр в миллесекундах

где CT - сремя в мс выполнения 100 тактов на целевой машине (Z80)

только тут надо определится с камнем - зилоги выпускали все кому не лень и с разыми частотами.

и еще не надо забывать что выполнение (эмуляция) целевого кода, ввод данных (клавиатура/джойстик/etc) и отображение вирт. экрана должно обрабатыватся в разных потокам (хотя в отображение и ввод можно объединить) иначе это будет не эмулятор а пошаговая головная боль.


Top
   
PostPosted: Tue Feb 12, 2008 7:40 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
частоту Z80 думаю взять стандартную - 3,5 МГц (хотя можно сделать в виде переменной и изменять, например, разгонять до 7 МГц, как это делали радиолюбители на настоящих спектрумах, или вообще не осуществлять задержки, тем самым можно быстрее прогонять некоторые циклы с вычислениями)


Top
   
PostPosted: Wed Jun 25, 2008 5:42 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Проект жив!!!

После 2 переписываний с нуля ядра эмулятора проца Z80 решил взять готовое. Выбор остановился на ядре, которое написал Santiago Romero Iglesias.
За день напрограммировал эмулятор, который в принципе запускается и даже грузит файлы SNA. Но сделать ещё нужно очень много.

Кто-нибудь знает, какая клавиша (в матрице спектрума) соответствует BackSpace?


Attachments:
e80-0.1.zip [25.11 KiB]
Downloaded 200 times
Top
   
PostPosted: Thu Jun 26, 2008 10:11 am 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Клавиша BackSpace (или по спектрумовски DELETE) набирается комбинацией CAPS/0 а значит соответственно по портам #FEFE и #EFFE выдает значение ???11110b, где ??? - биты остающиеся от состояния шины данных ( как правило 111 но если шина не стабильна то могут прыгать).
Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?

_________________
Заглянул на огонёк


Top
   
PostPosted: Thu Jun 26, 2008 6:56 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Alver
Спасибо за подсказку по клавиатуре. Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?

Quote:
Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?

Точно на засыпку! :) Ядро вроде поддерживает обработку этого регистра, но если честно я не пока не разбирался и сам его не обрабатывал.

P.S. Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.


Top
   
PostPosted: Thu Jun 26, 2008 8:18 pm 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Quote:
Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?

Гдето глюк. А стирает где, в командной строке?
Quote:
Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.

А у меня вся не слишком большая инфа по тетрадкам, да на шкафу еще Profi+ с 512 kb RAM валяется, а диски поразмагнитились давно(жалко) :( .
Вот тут есть много книжек, не знаю может чего пригодится. http://trd.speccy.cz.

_________________
Заглянул на огонёк


Top
   
PostPosted: Thu Jun 26, 2008 10:19 pm 
Offline

Joined: Wed Jun 25, 2008 9:45 am
Posts: 35
Хочется задать вопрос немножко не по теме. А какой платформы эмулятор написать проще: Денди или Спектрум?


Top
   
PostPosted: Thu Jun 26, 2008 10:34 pm 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Той, о которой больше знаешь.

_________________
Заглянул на огонёк


Top
   
PostPosted: Fri Jun 27, 2008 8:43 am 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Alver прав. Но из опыта замечу что под NES видюха (PPU) сложнее Спектрумовского, и форматов образов на порядок больше.


Top
   
PostPosted: Fri Jun 27, 2008 5:49 pm 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ... :mrgreen:

_________________
Заглянул на огонёк


Top
   
PostPosted: Fri Jun 27, 2008 6:40 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Quote:
Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ...


ну это ты уже загнул! многие эмуляторы под винду такого не могут! не то что под Колибри. например, как я буду эмулировать AY-3-8910 без дров на звуковуху?!!! :)


Attachments:
File comment: Версия 0.2 :)
e80-0.2.zip [25.92 KiB]
Downloaded 196 times
Top
   
PostPosted: Fri Jun 27, 2008 7:31 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5064
Я так и не разобрался с управлением...

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Jun 27, 2008 8:16 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Quote:
Я так и не разобрался с управлением...


Если запустить e80 без параметров, то стартует BASIC. После появления информации о прошивке нужно нажать Enter. Появляется командная строка. Здесь имеется 3 режима ввода (режимы в эмуляторе вручную пока не переключаются), особенностью 2-х из которых является то, что для ввода команды требуется нажатие всего одной клавиши. Например, клавише P соответстует оператор PRINT, I - INPUT, K - LIST, A - NEW, R - RUN. Простой пример:

10 PRINT "HELLO"
20 INPUT A
30 PRINT A

Для ввода кавычек используется комбинация Ctrl+P. Кстати, в процедуре обработки нажатия клавиш многие клавиши (знаки препинания и математические операции, например) ещё не прописаны .
После нажатия R и Enter запускается программа - выводится на экран HELLO, ожидается ввод переменной A и производится вывод этой переменной.
Команды S (SAVE) и J (LOAD) пока не реализованы.


Top
   
PostPosted: Sat Jun 28, 2008 12:02 am 
Offline
User avatar

Joined: Fri May 18, 2007 11:11 pm
Posts: 125
Albom
В обработке клавиш надо как то обрабатывать одновременные нажатия (ну хотябы с шифтами), чтобы биты одновременно нажимаемых клавиш одновременно обнулялись по соответствующимдля них портам. Тогда хотя бы основная клава спектрума будет работать как надо. А потом уже комбинации на отдельные клавиши вешать.
Блин а емуль всетаки смотрится!
Успехов!

_________________
Заглянул на огонёк


Top
   
PostPosted: Sat Jun 28, 2008 6:45 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Quote:
В обработке клавиш надо как то обрабатывать одновременные нажатия (ну хотябы с шифтами)

так и сейчас уже есть обработка клавиш с шифтом и контроллом! :)

Quote:
Блин а емуль всетаки смотрится!

значит не зря над ним работаю!


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

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:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited