Просмотр полной версии : Higgins Spectrum Emulator
Я выложил первую альфу.
http://jhiggins.narod.ru/
Для игр эта версия не подойдет, а для коллег может быть полезной.
Alexandr Medvedev
11.05.2008, 21:14
Win32 версия ожидается?
Win32 версия ожидается?
Может быть. И если будет, то будет даже не Win32, а Wine, поскольку бесконечно переключаться в Windows -- это не путь, а под виртуальной машиной по-настоящему можно потестировать только самые простые вещи (например, запускается ли вообще).
В этой связи есть проблема -- чем собирать под Wine в среде Linux. Есть мысль попробовать бесплатный BC 5.5. Если есть варианты лучше -- пишите, пожалуйста.
сорцы ожидаются? ,)
Тут ситация такая. Весь этот эмулятор изначально собирался только для того, чтобы оттестировать реализацию Z80. Эта реализация -- коммерческая, и разглашению не подлежит. По крайне мере пока. И эта часть эмулятора -- пожалуй, единственное, на что действительно стоило бы смотреть. (Чтобы было понятно: вся реализация -- это два аккуратно написанных файлика общим размером 35KB, включая все инструкции, тайминги, MEMPTR и даже немножко документации по M-циклам всех инструкций.)
А кроме того на что смотерть? На загрузку ROM-файла?
В конце концов, в этих исходниках нет абсолютно ничего кроме того, что есть в публично доступных материалах. Всем хорошо известных, к тому же.
Что вообще ожидается ?
А что вы вообще ожидаете?
На сегодня главная задача -- избавиться от всего, что отличает этот эмулятор от реальной машины. А далее буду смотреть а то, пользует ли кто-нибудь это эмулятор, и если пользует, то как и зачем. Отталкиваясь от этого и будем решать, что делать. А если у вас есть мысли на этот счет -- просто дайте знать.
Shadow Maker
12.05.2008, 14:12
Очень хочу порт под PSP готового эмулятора.
реализацию Z80. Эта реализация -- коммерческая, и разглашению не подлежит хм.. хочешь сказать, за такой боян (хороших открытых реализаций которого как минимум несколько) кто-то согласен деньги платить? О___о
ага, интересно, что коммерческого можно сделать из z80? :)
Не знаю насчет коммерческого, но вот идея "эталонного эмулятора" весьма хороша. В частности, упоминавшееся в одной из веток журналирование процесса выполнения кода со всеми флагами и эффектами
Очень хочу порт под PSP готового эмулятора.
Напомните мне, когда он будет готов на ваш взгляд. ;-)
хм.. хочешь сказать, за такой боян (хороших открытых реализаций которого как минимум несколько) кто-то согласен деньги платить? О___о
Ну, деньги ведь платят не за лежание кода на видном месте.
ага, интересно, что коммерческого можно сделать из z80?
А чем, в этом смысле, Z80 отличается от других ядер, на базе которых кругом и всюду что-нибудь производят?
Не знаю насчет коммерческого, но вот идея "эталонного эмулятора" весьма хороша. В частности, упоминавшееся в одной из веток журналирование процесса выполнения кода со всеми флагами и эффектами
Может быть это идея. Самое естественное в случае с Higgins -- использовать переменную окружения. Что-нибудь в таком духе:
HIGGINS_TRACE_LEVEL=1 ./higgins --quiet 2>trace
Shadow Maker
13.05.2008, 23:00
Напомните мне, когда он будет готов на ваш взгляд. ;-)
Когда будет уметь столько, сколько EmuZGL и отладчик. Или этого не будет?
А чем, в этом смысле, Z80 отличается от других ядер, на базе которых кругом и всюду что-нибудь производят?
z80 в этом смысле отличается тем что у него ужасно большое энергопотребление и невысокая производительность (в сравнении с современными контроллерами) :v2_rolley
В качестве минусов Z80 можно еще добавить отсутствие поддержки внутрисхемной отладки (JTAG или как там)...
Ах, да... самое главное забыл :) Отсутствие у Z80 встроенной памяти и периферии ;)
Кстати, вспомнил, у меня гдето валяется эмулятор MSP430 с отладчиком, правда без эмуляции аппаратного умножителя, могу выложить сырцы :)
ram_scan
15.05.2008, 17:01
В этой связи есть проблема -- чем собирать под Wine в среде Linux. Есть мысль попробовать бесплатный BC 5.5. Если есть варианты лучше -- пишите, пожалуйста.
Ох не надо BC. Оптимизация там нивп....[цензура]. Можно кросскомпилить тем-же gcc, в сети есть куча материала на эту тему, или на крайняк взять openwatcom, там бубна для компиляции под другой таргет надо поменьше, но оптимизация под суперсовременные камни похуже. Хотя что там оптимизить, целочисленка да косвенные вызовы по таблице, он с этим прекрасно справляется, я на ассемблере в свое время хуже ваткома лабал.
Ну или в самом уж тяжком случае забабахать виртуальную машину в каком-нть xen или виртуалбокс, поставить туда винду и маяться там уже с чем хочется нативно.
Кстати, на мой взгляд эмулятор черезвычайно интересный. Очень, очень хочется исходников. И посмотреть, и поковыряться. Тем более лицензия к этому располагает :-)
Higgins 8.10 alpha 2 выложена:
http://jhiggins.narod.ru/higgins810a2.tgz
http://jhiggins.narod.ru/#changes
Когда будет уметь столько, сколько EmuZGL и отладчик. Или этого не будет?
Эмуляция 128K и прочих -- это, по большому счету, задача на отдельный эмулятор. На сегодня это открытый вопрос, и я ничего не стал бы обещать на этот счет.
Во второй альфе добавлена пользовательская консоль. Это первый шаг к отладчику.
В качестве минусов Z80 можно еще добавить отсутствие поддержки внутрисхемной отладки
Это конечно, но при всех недостатках его продолжают использовать в новых дизайнах, и в этом плане от других ядер он не отличается.
Можно кросскомпилить тем-же gcc
Спасибо.
Кстати, на мой взгляд эмулятор черезвычайно интересный.
Спасибо.
как под Win запустить? :)
[bETA]mEN
16.05.2008, 23:59
как под Win запустить? :)
виртуальная машина (типа Microsoft Virtual PC) + linux :cool:
Higgins 8.10 alpha 3 выложена.
http://jhiggins.narod.ru/higgins810a3.tgz
http://jhiggins.narod.ru/#changes
Эмуляция 128K и прочих -- это, по большому счету, задача на отдельный эмулятор.
Нашелся способ обойтись небольшими правками.
как под Win запустить?
Если действительно нужно посмотреть, попробуйте использовать LiveCD любого дистрибутива Linux.
ram_scan
24.05.2008, 17:08
На opensuse 10.3 валится сразу после запуска.
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 72 (X_PutImage)
Serial number of failed request: 25
Current serial number in output stream: 31
Когда будет уметь столько, сколько EmuZGL и отладчик.
Если не секрет, у вас лично какое находится применение отладчику в эмуляторе Спектрума?
На opensuse 10.3 валится сразу после запуска.
Спасибо, будем исправлять.
Пока можно попробовать запустить в режиме с глубиной цвета в 24 разряда.
ram_scan
27.05.2008, 05:14
Спасибо, будем исправлять.
Пока можно попробовать запустить в режиме с глубиной цвета в 24 разряда.
Да, после крэша (и в некоторых случаях, не отследил точно) эмулятор оставляет выключеным автоповтор клавиатуры. Тоже нехорошо :-(
Если не секрет, у вас лично какое находится применение отладчику в эмуляторе Спектрума?
Ты не поверишь, но мы тут ещё и софт пытаемся писать ;)
поэтому я бы с радостью воспринял отладчик которой позволил бы работать по шагам. Например, я в своей IDE останавливаю исполнение кода, делаю шаг или меняю значение регистров, а через специальный порт могу передать эти параметры в эмулятор, что-то типа удалённой отладки как в java.
Да, после крэша (и в некоторых случаях, не отследил точно) эмулятор оставляет выключеным автоповтор клавиатуры. Тоже нехорошо :-(
Гм. В третьей альфе автоповтор должен быть выключен только если окно эмулятора активно. Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL. Неужели не работает?
поэтому я бы с радостью воспринял отладчик которой позволил бы работать по шагам. Например, я в своей IDE останавливаю исполнение кода, делаю шаг или меняю значение регистров, а через специальный порт могу передать эти параметры в эмулятор, что-то типа удалённой отладки как в java.
Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?
Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL.
A SIGTERM?
Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?
Ну если оно ещё и в виде плагина к еклипсу будет ;)
ram_scan
28.05.2008, 14:32
Гм. В третьей альфе автоповтор должен быть выключен только если окно эмулятора активно. Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL. Неужели не работает?
Ну, как показала практика, таки не работает, по факту автоповтор отключался 1) после падения эмулятора и 2) после снятия его из консоли по ctrl+c. По ctrl+c задача насколько я помню снимается по sigterm, а по sigint не должна сниматься вовсе. Кстати sigkill трапнуть принципиально нельзя.
по факту автоповтор отключался 1) после падения эмулятора
Он еще и падает? На чем он у вас упал?
2) после снятия его из консоли по ctrl+c. По ctrl+c задача насколько я помню снимается по sigterm, а по sigint не должна сниматься вовсе.
Каким терминалом вы пользуетесь? На Ubuntu Hardy под Konsole ловится SIGINT, и автоповтор восстанавливается.
Теперь о веселом. В процессе ковыряния в ELITE повесил трап на процедуру рисования линии. Скриншот приложен.
А не оставить ли это как опцию? ;-)
Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?
+1 очень хочу!
ram_scan
22.07.2008, 06:24
Он еще и падает? На чем он у вас упал?
Каким терминалом вы пользуетесь? На Ubuntu Hardy под Konsole ловится SIGINT, и автоповтор восстанавливается.
Пользуюсь Debian Etch. Терминал Konsole. Мне все-таки кажется что sigint надо оставить в покое, или как минимум обработать еще и sigterm. Я плохо помню ман по сигналам но мне кажется что sigint дефолтно не вызывает снятие программы, только прерывает операцию ввода-вывода с errno==EINTR.
Добрый день!
Скажите, а Ваш эмулятор только для Фряхи и Линукса? Не хотите его собрать под Солярис х86? Я, так понимаю, что Вашу часть кода вы разглашать не хотите, но если Вы можете, соберите его под Солярис 10 х86. Я пользуюсь spectemu версии 0.99.3. Но под Соляркой кроме Глюкалки и XZX коммерческого с поддержкой переключения архитектуры ZX-машин нет. Глюкалка с Солярным звуком нормально не дружит. А spectemu слабоват... XZX - отключены многие важные опции и интереса не вызывает.
Gatsu, под солярку собирается FUSE. еще ZEMU может завестись, тк шпарит через SDL..
Добрый день!
Скажите, а Ваш эмулятор только для Фряхи и Линукса? Не хотите его собрать под Солярис х86? Я, так понимаю, что Вашу часть кода вы разглашать не хотите, но если Вы можете, соберите его под Солярис 10 х86. Я пользуюсь spectemu версии 0.99.3. Но под Соляркой кроме Глюкалки и XZX коммерческого с поддержкой переключения архитектуры ZX-машин нет. Глюкалка с Солярным звуком нормально не дружит. А spectemu слабоват... XZX - отключены многие важные опции и интереса не вызывает.
Планы такие:
Переработать интерфейс с панели управления на пиктограммки;
Добавить поддержку TAP-файлов;
Добавить эмуляцию записи на ленту;
Реализовать интерфейс GDB/MI для поддержки отладки;
Открыть исходники;
Собрать deb-пакет и, может быть, сделать репозиторий.
Я надеюсь, что четвертый пункт в конце концов приведет к появлению версии для Win32. Если будет подобный интерес к сборке для Solaris, то это просто замечательно.
Gatsu, под солярку собирается FUSE. еще ZEMU может завестись, тк шпарит через SDL..
Спасибо за совет.
Вы лично собирали FUSE под Соляркой? Если есть удачный опыт - поделитесь методикой.
Из всех вариантов собранных мной эмуляторов ZX меня устроили specemu и glukalka. Что в них не устраивает - постом раньше. Поэтому и спросил.
Тов.Higgins предложил мне выложить мой вопрос, который я задал ему в личку. Поэтому я ждал ответа от него.
Добавлено через 4 минуты
# Открыть исходники;
Если будет подобный интерес к сборке для Solaris, то это просто замечательно.
Спасибо за ответ.
Если будут открыты исходники и не будет завязки на линукс-ядро, то скорее всего проблем не будет со сборкой. spectemu собирается без какого-либо мудрежа, надеюсь, что Ваш эмуль тоже.
Вы лично собирали FUSE под Соляркой? Если есть удачный опыт - поделитесь методикой. не собирал.. но встречал готовые сборки (типа http://reptonix.awardspace.co.uk/sinclair/fuse-solaris/index.htm), сталбыть собираемо, ну и в доках сказано, что солярка поддерживается...
не собирал.. но встречал готовые сборки (типа http://reptonix.awardspace.co.uk/sinclair/fuse-solaris/index.htm), сталбыть собираемо, ну и в доках сказано, что солярка поддерживается...
Спасибо за ссылку.
Надеюсь, что Higgins в скором времени все-таки сделает сборку своего эмуля под Солярис.
Здравствуйте!
Когда-то в теме Screen timings Вы дали ссылку, где описаны задержки Z80 при разделении им видеопамяти с ULA - http://www.worldofspectrum.org/faq/r...kreference.htm. Информация по этой ссылке грешит ошибками. Еще я сам выкладывал скорректированную схему задержек - http://zx.pk.ru/showthread.php?t=7637. Но это опять немного не то.
В итоге, я как-то здесь на форуме нашел чью-то ссылку полностью скорректированной схемы, однако потерял ее. Почему-то мне кажется, что Вы имеете к этому отношение, поэтому прошу Вас помочь мне в нахождении правильной скорректированной информации :).
Спасибо.
нашел чью-то ссылку полностью скорректированной схемы, однако потерял ее. Почему-то мне кажется, что Вы имеете к этому отношение
Не имею, честное слово.
Про ссылку такую я не помню, поэтому просто выпишу здесь то, что у меня получилось в итоге для фирменных машин:
Top border height: 48 lines
Bottom border height: 40 lines
Vertical retrace:
48K: 64 - top border height = 16 lines
128K: 63 - top border height = 15 lines
Hidden bottom lines: 56 - bottom border height = 16 lines
Border width: 48 pixels (given the pixel is 1/2 of a tick)
Field width: screen area width + border width * 2 = 352 pixels
Field height: top border height + screen area height + bottom border height = 280 lines
Horizontal retrace:
48K: 48 ticks
128K: 52 ticks
Ticks per line: field width / pixels per tick + horizontal retrace
48K: 224
128K: 228
ULA cycle length: 4 ticks
First visible tick: lines per vertical retrace * ticks per line - border width / pixels per tick + ULA cycle length
48K: 3612 (+ 1) = 3613
128K: 3400 (- 1) = 3399
Ticks per frame: (lines per vertical retrace + top border height + screen area height + bottom border height + hidden bottom lines) * ticks per line
48K: 69888
128K: 70908
ULA contention base:
48K: 14335th tick since last INT
128K: 14361st tick since last INT
How to compute ULA delay:
if(ticks_since_INT < contention_base) {
delay = 0;
} else if(ticks_since_INT >= contention_base + screen_area_height * ticks_per_line) {
delay = 0;
} else {
tick_on_line = (ticks_since_INT - contention_base) % ticks_per_line;
if(tick_on_line >= screen_area_width / pixels_per_tick) {
delay = 0;
} else {
tick_in_ULA_cycle = tick_on_line % 8;
delay = (tick_in_ULA_cycle == 7) ? 0 : (6 - tick_in_ULA_cycle);
}
}
Floating bus base:
48K: 14338th tick since last INT
128K: 14364th tick since last INT
Если нужна выверенная растактовка по циклам инструкций Z80, дайте знать, я выпишу сюда прямо из исходного текста.
Спасибо за детальное описание. Но, кажись, я наткнулся на то, о чем спрашивал:
http://scratchpad.wikia.com/wiki/Contended_memory#cite_note-unprefixed-2
Однако, это еще не все мои вопросы. Собственно, схемы задержек или их отсутствия мне нужны для понимания работы машины в случае ее турбирования в 2, 3, 4 и более раз (в эмуляторе, естественно). Особенно интересует, как в турбо режиме ведет себя Scorpion и подобные.
Спасибо за детальное описание. Но, кажись, я наткнулся на то, о чем спрашивал:
http://scratchpad.wikia.com/wiki/Contended_memory#cite_note-unprefixed-2
Технически, выгоднее реализовать задержки в обработчиках обращений к памяти, которыми пользуются инструкции, нежели для каждой инструкции вычислять времена и адреса для соответствующих задержек, что кроме раздувания объема кода провоцирует ошибки от невнимательности и неточностей в документации. Поэтому я и предлагал дать информацию по циклам инструкций для решения задачи расчета задержек.
Может быть, еще лучше было бы найти время и сделать публичной хотя бы реализацию процессора, где будет видно, что все эти задачи легко решаются на регулярной основе, без детальных спецификаций для каждой отдельной инструкции.
Однако, это еще не все мои вопросы. Собственно, схемы задержек или их отсутствия мне нужны для понимания работы машины в случае ее турбирования в 2, 3, 4 и более раз (в эмуляторе, естественно). Особенно интересует, как в турбо режиме ведет себя Scorpion и подобные.
Подозреваю, что модель задержек в этих машинах очень отличается от фирменных.
Black_Cat
16.06.2009, 13:36
Собственно, схемы задержек или их отсутствия мне нужны для понимания работы машины в случае ее турбирования в 2, 3, 4 и более раз (в эмуляторе, естественно). Особенно интересует, как в турбо режиме ведет себя Scorpion и подобные.Разные клоны в турбе х2 ведут себя по разному, а при турбировании более чем в х2 и вовсе результат трудно прогнозируем, особенно на таких кривых несинхронных машинах как Скорпион. Т.е. сэмулировать Скорп в турбе более х2 ты конечно можешь, но это будет полная лажа взятая с потолка, и не имеющая никакого отношения к действительности. Наиболее предсказуемо поведение в турбе более x2 у KAY'я, см. статью Nemo в ZX Format #02 про турбирование.
выгоднее реализовать задержки в обработчиках обращений к памяти, которыми пользуются инструкции
Это само собой. Вероятно, я не совсем ясно выразился, но кроме ULA +2/3 есть еще и та, которая в принципе возбуждается на все, что плохо лежит на ША - и вот как раз из-за нее необходимо учитывать кое-какую дополнительную информацию (например, выставление адреса регенерации без фактического обращения к памяти).
все эти задачи легко решаются на регулярной основе, без детальных спецификаций для каждой отдельной инструкции
Естественно не стоит гробить свое время на бесполезную работу, однако было бы неплохо иметь представление хотя бы о некоторых возможных ситуациях (например, турбирование оригинала, или, скажем, написание мультиколорного ПО для турбированных Scorpion/KAY) .
Наиболее предсказуемо поведение в турбе более x2 у KAY'я, см. статью Nemo в ZX Format #02 про турбирование
Дайте, пожалуйста, ссылку на статью или саму статью :)
особенно на таких кривых несинхронных машинах как Скорпион
Можно поподробнее?
Black_Cat
16.06.2009, 16:07
Дайте, пожалуйста, ссылку на статью или саму статьюhttp://zxpress.ru/article.php?id=287
Поподробнее - нельзя не понимая архитектуры компьютера масштабировать его тайминги в эмулях, т.к. не каждая архитектура масштабируема. Более-менее мастабируемыми в определённом диапазоне являются синхронные архитектуры, у которых тайминги событий привязаны к тактовой частоте и кратны её периоду. Несинхронные архитектуры строятся на подгонке задержек с помощью элементов схемы, и их тайминги событий немасштабируемы принципиально. Т.е. при повышении тактовой частоты такая схема просто становится неработоспособной, т.к. её тайминги привязаны не к тактовой частоте, а к физическому времени распространения сигнала в логических элементах, которое всегда постоянно и никак не зависит от тактовой частоты. Поэтому только синхронные архитектуры могут быть корректно масштабируемы по тактовой частоте (в ограниченных, но довольно широких пределах, если говорить о реалах). Но из всех существующих клонов только KAY может быть масштабирован с сохранением неизменной относительной производительности, благодаря использованию ДММЦ, у всех остальных клонов с увеличением тактовой частоты относительная производительность должна падать.
Несинхронные архитектуры
Если я правильно понял из какой-то здешней темы, то лишь ранний Scorpion относился к таковым, в позднем уже не было подобной лажи, разве нет?
Это само собой. Вероятно, я не совсем ясно выразился, но кроме ULA +2/3 есть еще и та, которая в принципе возбуждается на все, что плохо лежит на ША - и вот как раз из-за нее необходимо учитывать кое-какую дополнительную информацию (например, выставление адреса регенерации без фактического обращения к памяти).
Теперь понятно, о чем речь. Это называется IR contentions, и по этому поводу я подробно писал здесь:
http://zx.pk.ru/showpost.php?p=133723&postcount=102
http://zx.pk.ru/showpost.php?p=133971&postcount=109
Из указанной писанины должно быть понятно, что модель IR contentions точно так же строится на циклах инструкций. Вполне возможно, что сравнивая то, что дает модель с тем, что записано в документации по ссылкам в этих постах, я действительно находил ошибки, не помню.
Black_Cat
16.06.2009, 21:54
Если я правильно понял из какой-то здешней темы, то лишь ранний Scorpion относился к таковым, в позднем уже не было подобной лажинет, компьютеры с делителем на ИЕ7 принципиально не могут быть строго синхронными, а на всех Ленинградах-Скорпах используются именно ИЕ7
на ИЕ7 принципиально не могут быть строго синхронными
Блин флейм жестки, и лабуда к тому же, ну поставлю я после ИЕ7 какой нить ТМ6 и засинхронизирую тем же клоком, и бока начнутся только когда период клока будет сопоставим с задержками в этой самой ИЕ7. К тому же они стоят там где к турбирование ни каким боком.
Black_Cat
17.06.2009, 00:44
Блин флейм жестки, и лабуда к тому же, ну поставлю я после ИЕ7 какой нить ТМ6 и засинхронизирую тем же клоком, и бока начнутся только когда период клока будет сопоставим с задержками в этой самой ИЕ7. К тому же они стоят там где к турбирование ни каким боком.да, пожалуй это уже флейм, но в первую очередь потому, что Скорпа с турбированием больше х2 нет, и соответственно обсуждать как там чего в нём сделано бессмысленно. Но сам по себе вопрос о корректной эмуляции клонов в режиме турбирования более х2, да и вообще вопрос о корректном эмулирования несуществующих компьютеров интересен и стоит отдельного обсуждения, но не в этой теме. Приношу извинеия автору за оффтоп.
вопрос о корректной эмуляции клонов в режиме турбирования более х2, да и вообще вопрос о корректном эмулирования несуществующих компьютеров интересен и стоит отдельного обсуждения
Надо бы вынести, но куда и как? Сейчас в этой теме есть грамотные люди, с которыми можно обсудить, а открой новую тему - польется что-нибудь не то. Или нет? ;)
Пока в продолжение темы - как ведет себя реальный турбированный Scorpion? Как проявляет себя совместный доступ к видеопамяти (вряд ли на 2x это разруливается без задержек Z80)? Почему разные машины показывают разный коэффициент ускорения в тестах, причем, как я понимаю, уже безотносительно видеопамяти?
P.S. Кстати, в одной теме я уже пытался поднять эти вопросы, но был осажден г-ном (господином, не подумайте плохого (c)) Кладовым.
Обещанная реализация z80. Это не библиотека, но при желании можно легко пристроить к имеющемуся коду.
Lisitsin
15.01.2011, 19:53
Здравствуйте. Мне посоветовали (Master БК-0010) обратиться за помощью к автору
данного топика за технической консультацией по поводу эмуляции Z80 как к опытному специалисту в этой области.
Я сейчас довожу до логического завершения свой проект - Sinclair ZX Spectrum (48) собранный на микроконтроллерах AVR Atmel. Проект выложен на
http://zx.pk.ru/showthread.php?t=13747
В настоящее время всю эмуляцию я написал, но бейсик работает с ошибкой: после нажатия клавиши выводит на экран соответствующий символ (или строку символов) и целый экран вопросительных знаков. При разработке я пользовался документом:
http://dl.dropbox.com/u/12408899/um0080.zip
Но может в нём есть какие-то ошибки? (опечатки там есть.) Или вообще эмуляция имеет какие-то свои тонкости?
Не может ли автор дать мне консультацию в этом вопросе как специалист?
Заранее благодарен.
---------- Post added at 19:53 ---------- Previous post was at 19:50 ----------
Вот что примерно у меня получается:
http://dl.dropbox.com/u/12408899/CVBS%20%28110109-162101%29.zip
Лисицын Василий Николаеви, лучше напишите ему в Личные сообщения. Так хоть ему придёт уведомление на электропочту :).
Вижу вижу. :)
Да, в этом user manual много ошибок. Чтобы не разбираться, что из них является опечатками, а что ошибками по существу, лучше всего этим документом не пользоваться вовсе. :)
С точки зрения написания эмулятора удобен этот документ:
http://z80.info/decoding.htm
Этот документ описывает выверенную, полную и однозначную модель, которую без всяких адаптаций можно реализовать в эмуляторе процессора для декодирования оп-кодов. Именно этим документом я пользовался при написании эмулятора Спектрума, эмулятор процессора которого выложен в исходных текстах выше в этой теме.
Посмотрел видео со знаками вопроса. Впечатление следующее. Во-первых, действительно похоже на проблемы с эмуляцией процессора. Во-вторых, похоже, что проблем с эмуляцией процессора несколько. :)
Что можно сделать. Можно посмотреть на упоминавшиеся исходные тексты. Если есть хоть какой-нибудь шанс, что они могут быть использованы в вашем эмуляторе, наверное, это будет самый короткий путь. Причем не только сейчас, когда речь идет о проверке работы Бейсика, но и в будущем, когда понадобится эмулировать времянки для памяти и портов. Кроме того, я попробую найти ваши исходные тексты и посмотреть, хотя бы мельком, в чем может быть дело.
Lisitsin
16.01.2011, 15:26
Благодарю за поддержку. Я бросаю Вам исходники на ассемблере под AVRStudio эмулятора. Но чтобы всё это просмотреть - надо пару-тройку суток поломать голову. Если у Вас есть уже конкретные подозрения, Вы можете это проверить.
В комментариях я указываю мнемонику команды, её длительность в тактах для Z80 и AVR, влияние на флаги и подсчитываю такты. Исходный файл Spectrum.asm, описание регистров regdef.inc.
Огромное С П А С И Б О.
Lisitsin
16.01.2011, 17:55
ps: A может и вовсе существуют тестовые программы под Z80 для проверки эмуляции?
существуют даже несколько, но для их работы нужен рабочий бейсик :)
Lisitsin
16.01.2011, 18:39
существуют даже несколько, но для их работы нужен рабочий бейсик :)
Бейсик, дельфи, с++ - скукота, отстой, конфуз. Вот прятой машинный код - это - супер, это прёт !!!
ну это клёво, конечно, но вопрос был про тестовые программы для Z80.
всё которые я знаю (для спектрума) используют процедуры ПЗУ для вывода текста, а может и для других вещей.
то бишь, если бейсик не работает - тесты тоже не запускаются.
Lisitsin
16.01.2011, 19:17
ну это клёво, конечно, но вопрос был про тестовые программы для Z80.
всё которые я знаю (для спектрума) используют процедуры ПЗУ для вывода текста, а может и для других вещей.
то бишь, если бейсик не работает - тесты тоже не запускаются.
Мне бы в машинном коде ... Проконтролировать корректность выполнения я могу прямо в AVRStudio. Хотя некоторые бейсиковые подпрограммы у меня вроде бы работают. Например вывод строки символов, получение кода нажатой клавиши.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot