PDA

Просмотр полной версии : хочу написать эмулятор



Виктор
16.03.2008, 13:46
Уважаемые сектрумисты, давно мечтаю написать свой эмулятор, но чувствую , что знаний маловато, неплохо (как я считаю) знаю visual basic, на нем и собираюсь писать, но как это делать??? никогда не писал эмуляторы, подскажите, пожалуйста, с чего начинать, что для этого нужно знать, натолкните, какую нужно прочитать литературу

[bETA]mEN
16.03.2008, 14:32
Для начала нужно ознакомиться с набором команд центрального процессора системы, которую собрался эмулировать, затем разобраться с <картой памяти> этой системы, а именно по-каким адресам лежит оперативная память, как происходит доступ к портам ввода\вывода с помощью специальных команд аналогичных in\out у x86, или же порты <промэпированы> в общее адресное пространство, в таком случае доступ к ним производиться с помощью команд чтения\записи данных из\в память, далее необходимо разобраться с самими портами ввода\вывода т.е. как происходит взаимодействие центрального процессора с <обвязкой>. Вот когда разберешься хотя бы с этим, станет понятно, что и как дальше делать.
(c) Wind /DEMUL Team

Виктор
16.03.2008, 15:27
прекрасно, спасибо
кстати, необходимой литературы под рукой нет (электронной:D) ?
спасибо за ответ, [bETA]mEN

[bETA]mEN
16.03.2008, 15:39
кстати, необходимой литературы под рукой нет (электронной:D) ?
http://fms.komkon.org/EMUL8/HOWTO.html

Eltaron
16.03.2008, 20:06
можно глянуть исходники vbSpec еще, много чего можно почерпнуть

Виктор
16.03.2008, 20:36
vbSpec нашел, но так сразу и не разобраться

ILoveSpeccy
17.03.2008, 14:48
Интересная тема...
Хотя эмуль писать наверное небуду (реал как-то интереснее), но вопрос имеется:
как в принципе реальзован такт в эмулях???
Неужели стоит таймер, который 3.5 миллиона раз в секунду тактует эмуль Z80 и т.д. ???? :eek:
Как это на практике реализовывается???

Error404
17.03.2008, 15:43
Интересная тема...
Хотя эмуль писать наверное небуду (реал как-то интереснее), но вопрос имеется:
как в принципе реальзован такт в эмулях???
Неужели стоит таймер, который 3.5 миллиона раз в секунду тактует эмуль Z80 и т.д. ???? :eek:
Как это на практике реализовывается???

Количество тактов эмулируемой машины на N-ой частоте между перываниями принимаем константой "С". Прерывания эмулируются с той же частотой, что и на реале. С начала интервала прерывания эмулируем некоторое количество команд процессора, суммируя их длительность в тактах, пока не достигнем "С", остаток интервала до наступления следующего прерывания курим. Так по крайней мере делает упомянутый здесь vbSpec

CityAceE
17.03.2008, 16:03
никогда не писал эмуляторы, подскажите, пожалуйста, с чего начинать, что для этого нужно знать
Когда начал делать эмулятор под Палм не умел ни на Палме программировать, ни представления о том, как эмуляторы пишутся. Зато неплохо знал, как сам Спек работает. Для начала взял SNA и начал с вывода экарана. А потом потихоньку начал код оживлять. Дальше пошло и поехало само собой... В итоге, конечно, от первоначального варианта ничего не осталось, но зато я сам разобрался со всем без всякой литературы.

Raydac
17.03.2008, 17:13
начинать надо с эмуля процессора, потом эмуль материнки и эмуль видеосистемы с клавиатурой, для тестов сэмулить читалку с магнитофона.. когда всё это пашет, то можно приступать к эмулю ВГ93 и всяких вещей типа мышки

Adramelek
18.03.2008, 01:16
Виктор, а в чём смысл? Я не к тому, что писать не надо, но если, например, не хватает какой-то конкретной функции в других эмулях, может быть, проще будет взять чужие исходники и модифицировать, чем писать своё с нуля?

Albom
18.03.2008, 07:49
CityAceE
А этот эмулятор работает? А то я у меня на Palm ни однин эмулятор спектрума не работает... (Palm на ARM процессоре с PalmOS 5)

Я тоже пытаюсь написать эмулятор... Правда для PC. Как вы считаете эмуляцию стоит производить в отдельном потоке от интерфейса?

[bETA]mEN
18.03.2008, 10:07
А этот эмулятор работает?

http://zxpilot.vladivostok.ru/

Albom
18.03.2008, 21:51
[bETA]mEN
не работает :( ну да ладно... это ведь не в тему.

rasmer
18.03.2008, 22:33
киньте ссылку на доки по программингу для симбы....

Виктор
19.03.2008, 11:44
спасибо за живое обсуждение темы,
сейчас нашел необходимую литературу и изучаю архитектуру платформы, дошел до регистров процессора,
а пока позвольте по-ходу еще такой вопрос


сэмулить читалку с магнитофона

вот тут у меня возникают трудности.
Когда-то поставил такой эксперимент - получил массив байтов bmp-картинки и записал их в wav файл - и получил звук, а точнее низкочастотный шум, а я то думал,
что получится что-то на подобие модемного звука (как на касете), но по - видимому,
все не так просто,
получается, что каждый байт кодируется своим звуком определенной частоты?

ZEK
19.03.2008, 12:15
Частотная модуляция, 1-одной "нотой", 0-другой

Raydac
19.03.2008, 13:09
но по - видимому,
все не так просто,получается, что каждый байт кодируется своим звуком определенной частоты?

делать полную имитацию читалки это отдельный очень сложный проект и стоимость его выполнения превышает прибыль от отдачи, поэтому всё делает гораздо проще.. лично я сделал следующим образом
1. в набор команд процессора вводится несколько TRAP команд
2. одна из них прописывается как первая команда известной всем подпрограммы чтения блока данных с магнитофона
3. перехватывается её выполнение и в заданные адреса заливается блок данных
4. выполняется возврат из подпрограммы с выставлением всех требуемых флагов и регистров

molodcov_alex
19.03.2008, 16:30
Для начала лучше делать поддержку SNA (образ памяти), этого более чем достаточно.

P.S. Сам делаю эмуль, за основу взята z80ex ;) У меня лично проблемы со звуком...

TomCaT
19.03.2008, 19:21
Побольше эмулей, хороших и разных!
(но лучше один, да зато распрекрасный ;) )

Виктор
19.03.2008, 19:40
Частотная модуляция, 1-одной "нотой", 0-другой
однако, сегодня специально сидел и прислушивался к звукам эмуля: так явно слышится больше, чем два звука
особенно это отчетливо слышно, когда загружаются атрибуты цветов рисунка-застаки
у какой-либо игрушки

Albom
19.03.2008, 21:12
Рекомендую книгу "ZX Spectrum для пользователей и программистов" (авторы А. ЛАРЧЕНКО, Н. РОДИОНОВ). Издательство "ПИТЕР", 1993 год. Есть в инете (ссылку не помню) - отсканировано и распознано by Dehtyar Oleg. В книге есть описание архитектуры Спектрума и команд процессора Z80.

ZEK
19.03.2008, 21:59
так явно слышится больше, чем два звука
особенно это отчетливо слышно
:)

Виктор
19.03.2008, 23:13
Рекомендую книгу "ZX Spectrum для пользователей и программистов"
спасибо, уже скачал, очень подробная кника, огромное спасибо

rasmer
20.03.2008, 00:46
ктонибудь дайте ссылку про программинг на ассемблере под симбу!!!!!

ZXMAK
22.04.2008, 23:50
прислушивался к звукам эмуля: так явно слышится больше, чем два звука
особенно это отчетливо слышно, когда загружаются атрибуты цветов рисунка-застаки

сигнал записи на магнитофон кодируется в общих словах так: для единичного бита формируется колебание одной длительности, а для нулевого бита другой длительности. Получается так что для 1 формируется сигнал одной частоты, а для 0 другой частоты. плюс к этому перед блоком данных присутствует меандр заданной частоты для синхронизации читающей программы и короткий синхроимпульс, по которому читающая программа узнает что пора начать измерение длительности импульсов для считывания данных.