PDA

Просмотр полной версии : Higgins Spectrum Emulator



Higgins
11.05.2008, 20:27
Я выложил первую альфу.

http://jhiggins.narod.ru/

Для игр эта версия не подойдет, а для коллег может быть полезной.

Alexandr Medvedev
11.05.2008, 21:14
Win32 версия ожидается?

boo_boo
11.05.2008, 22:17
сорцы ожидаются? ,)

Vladson
11.05.2008, 23:04
Что вообще ожидается ?

Higgins
12.05.2008, 14:03
Win32 версия ожидается?

Может быть. И если будет, то будет даже не Win32, а Wine, поскольку бесконечно переключаться в Windows -- это не путь, а под виртуальной машиной по-настоящему можно потестировать только самые простые вещи (например, запускается ли вообще).

В этой связи есть проблема -- чем собирать под Wine в среде Linux. Есть мысль попробовать бесплатный BC 5.5. Если есть варианты лучше -- пишите, пожалуйста.


сорцы ожидаются? ,)

Тут ситация такая. Весь этот эмулятор изначально собирался только для того, чтобы оттестировать реализацию Z80. Эта реализация -- коммерческая, и разглашению не подлежит. По крайне мере пока. И эта часть эмулятора -- пожалуй, единственное, на что действительно стоило бы смотреть. (Чтобы было понятно: вся реализация -- это два аккуратно написанных файлика общим размером 35KB, включая все инструкции, тайминги, MEMPTR и даже немножко документации по M-циклам всех инструкций.)

А кроме того на что смотерть? На загрузку ROM-файла?

В конце концов, в этих исходниках нет абсолютно ничего кроме того, что есть в публично доступных материалах. Всем хорошо известных, к тому же.


Что вообще ожидается ?

А что вы вообще ожидаете?

На сегодня главная задача -- избавиться от всего, что отличает этот эмулятор от реальной машины. А далее буду смотреть а то, пользует ли кто-нибудь это эмулятор, и если пользует, то как и зачем. Отталкиваясь от этого и будем решать, что делать. А если у вас есть мысли на этот счет -- просто дайте знать.

Shadow Maker
12.05.2008, 14:12
Очень хочу порт под PSP готового эмулятора.

boo_boo
12.05.2008, 14:33
реализацию Z80. Эта реализация -- коммерческая, и разглашению не подлежит хм.. хочешь сказать, за такой боян (хороших открытых реализаций которого как минимум несколько) кто-то согласен деньги платить? О___о

ZXMAK
12.05.2008, 23:20
ага, интересно, что коммерческого можно сделать из z80? :)

Vitamin
13.05.2008, 01:11
Не знаю насчет коммерческого, но вот идея "эталонного эмулятора" весьма хороша. В частности, упоминавшееся в одной из веток журналирование процесса выполнения кода со всеми флагами и эффектами

Higgins
13.05.2008, 22:28
Очень хочу порт под PSP готового эмулятора.

Напомните мне, когда он будет готов на ваш взгляд. ;-)


хм.. хочешь сказать, за такой боян (хороших открытых реализаций которого как минимум несколько) кто-то согласен деньги платить? О___о

Ну, деньги ведь платят не за лежание кода на видном месте.


ага, интересно, что коммерческого можно сделать из z80?

А чем, в этом смысле, Z80 отличается от других ядер, на базе которых кругом и всюду что-нибудь производят?


Не знаю насчет коммерческого, но вот идея "эталонного эмулятора" весьма хороша. В частности, упоминавшееся в одной из веток журналирование процесса выполнения кода со всеми флагами и эффектами

Может быть это идея. Самое естественное в случае с Higgins -- использовать переменную окружения. Что-нибудь в таком духе:

HIGGINS_TRACE_LEVEL=1 ./higgins --quiet 2>trace

Shadow Maker
13.05.2008, 23:00
Напомните мне, когда он будет готов на ваш взгляд. ;-)
Когда будет уметь столько, сколько EmuZGL и отладчик. Или этого не будет?

ZXMAK
14.05.2008, 04:10
А чем, в этом смысле, 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
16.05.2008, 15:36
Higgins 8.10 alpha 2 выложена:

http://jhiggins.narod.ru/higgins810a2.tgz

http://jhiggins.narod.ru/#changes



Когда будет уметь столько, сколько EmuZGL и отладчик. Или этого не будет?

Эмуляция 128K и прочих -- это, по большому счету, задача на отдельный эмулятор. На сегодня это открытый вопрос, и я ничего не стал бы обещать на этот счет.

Во второй альфе добавлена пользовательская консоль. Это первый шаг к отладчику.


В качестве минусов Z80 можно еще добавить отсутствие поддержки внутрисхемной отладки

Это конечно, но при всех недостатках его продолжают использовать в новых дизайнах, и в этом плане от других ядер он не отличается.


Можно кросскомпилить тем-же gcc

Спасибо.


Кстати, на мой взгляд эмулятор черезвычайно интересный.

Спасибо.

ZXMAK
16.05.2008, 21:57
как под Win запустить? :)

[bETA]mEN
16.05.2008, 23:59
как под Win запустить? :)
виртуальная машина (типа Microsoft Virtual PC) + linux :cool:

Higgins
23.05.2008, 17:03
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

Higgins
26.05.2008, 16:04
Когда будет уметь столько, сколько EmuZGL и отладчик.

Если не секрет, у вас лично какое находится применение отладчику в эмуляторе Спектрума?



На opensuse 10.3 валится сразу после запуска.

Спасибо, будем исправлять.

Пока можно попробовать запустить в режиме с глубиной цвета в 24 разряда.

ram_scan
27.05.2008, 05:14
Спасибо, будем исправлять.
Пока можно попробовать запустить в режиме с глубиной цвета в 24 разряда.

Да, после крэша (и в некоторых случаях, не отследил точно) эмулятор оставляет выключеным автоповтор клавиатуры. Тоже нехорошо :-(

breeze
27.05.2008, 07:28
Если не секрет, у вас лично какое находится применение отладчику в эмуляторе Спектрума?

Ты не поверишь, но мы тут ещё и софт пытаемся писать ;)

поэтому я бы с радостью воспринял отладчик которой позволил бы работать по шагам. Например, я в своей IDE останавливаю исполнение кода, делаю шаг или меняю значение регистров, а через специальный порт могу передать эти параметры в эмулятор, что-то типа удалённой отладки как в java.

Higgins
27.05.2008, 11:31
Да, после крэша (и в некоторых случаях, не отследил точно) эмулятор оставляет выключеным автоповтор клавиатуры. Тоже нехорошо :-(

Гм. В третьей альфе автоповтор должен быть выключен только если окно эмулятора активно. Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL. Неужели не работает?


поэтому я бы с радостью воспринял отладчик которой позволил бы работать по шагам. Например, я в своей IDE останавливаю исполнение кода, делаю шаг или меняю значение регистров, а через специальный порт могу передать эти параметры в эмулятор, что-то типа удалённой отладки как в java.

Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?

Vitamin
27.05.2008, 11:38
Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL.
A SIGTERM?

breeze
27.05.2008, 20:58
Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?

Ну если оно ещё и в виде плагина к еклипсу будет ;)

ram_scan
28.05.2008, 14:32
Гм. В третьей альфе автоповтор должен быть выключен только если окно эмулятора активно. Плюс, автоповтор должен восстанавливаться по приходу SIGINT и SIGKILL. Неужели не работает?


Ну, как показала практика, таки не работает, по факту автоповтор отключался 1) после падения эмулятора и 2) после снятия его из консоли по ctrl+c. По ctrl+c задача насколько я помню снимается по sigterm, а по sigint не должна сниматься вовсе. Кстати sigkill трапнуть принципиально нельзя.

Higgins
21.07.2008, 20:30
по факту автоповтор отключался 1) после падения эмулятора

Он еще и падает? На чем он у вас упал?


2) после снятия его из консоли по ctrl+c. По ctrl+c задача насколько я помню снимается по sigterm, а по sigint не должна сниматься вовсе.

Каким терминалом вы пользуетесь? На Ubuntu Hardy под Konsole ловится SIGINT, и автоповтор восстанавливается.

Теперь о веселом. В процессе ковыряния в ELITE повесил трап на процедуру рисования линии. Скриншот приложен.

А не оставить ли это как опцию? ;-)

nyuk
21.07.2008, 21:56
Тогда вместо отладчика во встроенной консоли следовало бы реализовать GDB/MI и встроить эмулятор в Eclipse. Как на ваш азгляд?
+1 очень хочу!

ram_scan
22.07.2008, 06:24
Он еще и падает? На чем он у вас упал?
Каким терминалом вы пользуетесь? На Ubuntu Hardy под Konsole ловится SIGINT, и автоповтор восстанавливается.


Пользуюсь Debian Etch. Терминал Konsole. Мне все-таки кажется что sigint надо оставить в покое, или как минимум обработать еще и sigterm. Я плохо помню ман по сигналам но мне кажется что sigint дефолтно не вызывает снятие программы, только прерывает операцию ввода-вывода с errno==EINTR.

Gatsu
21.05.2009, 08:25
Добрый день!
Скажите, а Ваш эмулятор только для Фряхи и Линукса? Не хотите его собрать под Солярис х86? Я, так понимаю, что Вашу часть кода вы разглашать не хотите, но если Вы можете, соберите его под Солярис 10 х86. Я пользуюсь spectemu версии 0.99.3. Но под Соляркой кроме Глюкалки и XZX коммерческого с поддержкой переключения архитектуры ZX-машин нет. Глюкалка с Солярным звуком нормально не дружит. А spectemu слабоват... XZX - отключены многие важные опции и интереса не вызывает.

boo_boo
21.05.2009, 11:32
Gatsu, под солярку собирается FUSE. еще ZEMU может завестись, тк шпарит через SDL..

Higgins
21.05.2009, 12:43
Добрый день!
Скажите, а Ваш эмулятор только для Фряхи и Линукса? Не хотите его собрать под Солярис х86? Я, так понимаю, что Вашу часть кода вы разглашать не хотите, но если Вы можете, соберите его под Солярис 10 х86. Я пользуюсь spectemu версии 0.99.3. Но под Соляркой кроме Глюкалки и XZX коммерческого с поддержкой переключения архитектуры ZX-машин нет. Глюкалка с Солярным звуком нормально не дружит. А spectemu слабоват... XZX - отключены многие важные опции и интереса не вызывает.

Планы такие:

Переработать интерфейс с панели управления на пиктограммки;
Добавить поддержку TAP-файлов;
Добавить эмуляцию записи на ленту;
Реализовать интерфейс GDB/MI для поддержки отладки;
Открыть исходники;
Собрать deb-пакет и, может быть, сделать репозиторий.


Я надеюсь, что четвертый пункт в конце концов приведет к появлению версии для Win32. Если будет подобный интерес к сборке для Solaris, то это просто замечательно.

Gatsu
21.05.2009, 12:51
Gatsu, под солярку собирается FUSE. еще ZEMU может завестись, тк шпарит через SDL..

Спасибо за совет.
Вы лично собирали FUSE под Соляркой? Если есть удачный опыт - поделитесь методикой.

Из всех вариантов собранных мной эмуляторов ZX меня устроили specemu и glukalka. Что в них не устраивает - постом раньше. Поэтому и спросил.

Тов.Higgins предложил мне выложить мой вопрос, который я задал ему в личку. Поэтому я ждал ответа от него.

Добавлено через 4 минуты


# Открыть исходники;
Если будет подобный интерес к сборке для Solaris, то это просто замечательно.

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

boo_boo
21.05.2009, 15:21
Вы лично собирали FUSE под Соляркой? Если есть удачный опыт - поделитесь методикой. не собирал.. но встречал готовые сборки (типа http://reptonix.awardspace.co.uk/sinclair/fuse-solaris/index.htm), сталбыть собираемо, ну и в доках сказано, что солярка поддерживается...

Gatsu
21.05.2009, 15:50
не собирал.. но встречал готовые сборки (типа http://reptonix.awardspace.co.uk/sinclair/fuse-solaris/index.htm), сталбыть собираемо, ну и в доках сказано, что солярка поддерживается...
Спасибо за ссылку.

Надеюсь, что Higgins в скором времени все-таки сделает сборку своего эмуля под Солярис.

ARTi
22.05.2009, 09:48
Здравствуйте!
Когда-то в теме Screen timings Вы дали ссылку, где описаны задержки Z80 при разделении им видеопамяти с ULA - http://www.worldofspectrum.org/faq/r...kreference.htm. Информация по этой ссылке грешит ошибками. Еще я сам выкладывал скорректированную схему задержек - http://zx.pk.ru/showthread.php?t=7637. Но это опять немного не то.
В итоге, я как-то здесь на форуме нашел чью-то ссылку полностью скорректированной схемы, однако потерял ее. Почему-то мне кажется, что Вы имеете к этому отношение, поэтому прошу Вас помочь мне в нахождении правильной скорректированной информации :).
Спасибо.

Higgins
22.05.2009, 12:47
нашел чью-то ссылку полностью скорректированной схемы, однако потерял ее. Почему-то мне кажется, что Вы имеете к этому отношение

Не имею, честное слово.

Про ссылку такую я не помню, поэтому просто выпишу здесь то, что у меня получилось в итоге для фирменных машин:

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, дайте знать, я выпишу сюда прямо из исходного текста.

ARTi
16.06.2009, 03:07
Спасибо за детальное описание. Но, кажись, я наткнулся на то, о чем спрашивал:
http://scratchpad.wikia.com/wiki/Contended_memory#cite_note-unprefixed-2
Однако, это еще не все мои вопросы. Собственно, схемы задержек или их отсутствия мне нужны для понимания работы машины в случае ее турбирования в 2, 3, 4 и более раз (в эмуляторе, естественно). Особенно интересует, как в турбо режиме ведет себя Scorpion и подобные.

Higgins
16.06.2009, 12:50
Спасибо за детальное описание. Но, кажись, я наткнулся на то, о чем спрашивал:
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 про турбирование.

ARTi
16.06.2009, 14:47
выгоднее реализовать задержки в обработчиках обращений к памяти, которыми пользуются инструкции
Это само собой. Вероятно, я не совсем ясно выразился, но кроме 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 может быть масштабирован с сохранением неизменной относительной производительности, благодаря использованию ДММЦ, у всех остальных клонов с увеличением тактовой частоты относительная производительность должна падать.

ARTi
16.06.2009, 20:57
Несинхронные архитектуры
Если я правильно понял из какой-то здешней темы, то лишь ранний Scorpion относился к таковым, в позднем уже не было подобной лажи, разве нет?

Higgins
16.06.2009, 21:31
Это само собой. Вероятно, я не совсем ясно выразился, но кроме 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

ZEK
16.06.2009, 23:38
на ИЕ7 принципиально не могут быть строго синхронными
Блин флейм жестки, и лабуда к тому же, ну поставлю я после ИЕ7 какой нить ТМ6 и засинхронизирую тем же клоком, и бока начнутся только когда период клока будет сопоставим с задержками в этой самой ИЕ7. К тому же они стоят там где к турбирование ни каким боком.

Black_Cat
17.06.2009, 00:44
Блин флейм жестки, и лабуда к тому же, ну поставлю я после ИЕ7 какой нить ТМ6 и засинхронизирую тем же клоком, и бока начнутся только когда период клока будет сопоставим с задержками в этой самой ИЕ7. К тому же они стоят там где к турбирование ни каким боком.да, пожалуй это уже флейм, но в первую очередь потому, что Скорпа с турбированием больше х2 нет, и соответственно обсуждать как там чего в нём сделано бессмысленно. Но сам по себе вопрос о корректной эмуляции клонов в режиме турбирования более х2, да и вообще вопрос о корректном эмулирования несуществующих компьютеров интересен и стоит отдельного обсуждения, но не в этой теме. Приношу извинеия автору за оффтоп.

ARTi
17.06.2009, 03:02
вопрос о корректной эмуляции клонов в режиме турбирования более х2, да и вообще вопрос о корректном эмулирования несуществующих компьютеров интересен и стоит отдельного обсуждения
Надо бы вынести, но куда и как? Сейчас в этой теме есть грамотные люди, с которыми можно обсудить, а открой новую тему - польется что-нибудь не то. Или нет? ;)
Пока в продолжение темы - как ведет себя реальный турбированный Scorpion? Как проявляет себя совместный доступ к видеопамяти (вряд ли на 2x это разруливается без задержек Z80)? Почему разные машины показывают разный коэффициент ускорения в тестах, причем, как я понимаю, уже безотносительно видеопамяти?

P.S. Кстати, в одной теме я уже пытался поднять эти вопросы, но был осажден г-ном (господином, не подумайте плохого (c)) Кладовым.

Higgins
21.12.2009, 14:48
Обещанная реализация 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

BYTEMAN
15.01.2011, 20:35
Лисицын Василий Николаеви, лучше напишите ему в Личные сообщения. Так хоть ему придёт уведомление на электропочту :).

Higgins
16.01.2011, 14:16
Вижу вижу. :)

Да, в этом 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 для проверки эмуляции?

Sinus
16.01.2011, 18:29
существуют даже несколько, но для их работы нужен рабочий бейсик :)

Lisitsin
16.01.2011, 18:39
существуют даже несколько, но для их работы нужен рабочий бейсик :)

Бейсик, дельфи, с++ - скукота, отстой, конфуз. Вот прятой машинный код - это - супер, это прёт !!!

Sinus
16.01.2011, 19:00
ну это клёво, конечно, но вопрос был про тестовые программы для Z80.

всё которые я знаю (для спектрума) используют процедуры ПЗУ для вывода текста, а может и для других вещей.
то бишь, если бейсик не работает - тесты тоже не запускаются.

Lisitsin
16.01.2011, 19:17
ну это клёво, конечно, но вопрос был про тестовые программы для Z80.

всё которые я знаю (для спектрума) используют процедуры ПЗУ для вывода текста, а может и для других вещей.
то бишь, если бейсик не работает - тесты тоже не запускаются.

Мне бы в машинном коде ... Проконтролировать корректность выполнения я могу прямо в AVRStudio. Хотя некоторые бейсиковые подпрограммы у меня вроде бы работают. Например вывод строки символов, получение кода нажатой клавиши.