В последней версии ZXMAK2 аналогично, судя по всему это правильный тайминг пентагона.
Ждем подтверждения от владельцев реального железа
И похоже правильно мультиколор пентагона эмулируется пока только в наших двух эмуляторах
В последней версии ZXMAK2 аналогично, судя по всему это правильный тайминг пентагона.
Ждем подтверждения от владельцев реального железа
И похоже правильно мультиколор пентагона эмулируется пока только в наших двух эмуляторах
Последний раз редактировалось ZXMAK; 28.04.2013 в 22:23.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Каким образом эта программа подстраивает HALT под нужный такт из 4? А может, она его вообще не подстраивает и результат рандомный?
У Яна Бобровского выложены все исходники:
http://wizard.ae.krakow.pl/~jb/qaop/tests.html
Код там грязненький (на мой вкус, конечно), но трюки хорошие тоже есть. Нужно только делать поправку, что его цель - не переносимость, а тестирование эмуляторов/клонов ULA на совместимость с классикой.
Вот его выравнивание (я разбирался для своей TimeChart):
Я использую похожую схему для своей TimeChart. Если правильно подогнать такты - выравнивание не нужно.Код:ALIGNINT: ld de, _align push de ld de, _try push de im 2 halt rst 0 ; the interrupt handler never returns (it pops the last value off the stack) _try ; 46T+ push de ; 57T+ ld bc,32677 ; 67T+ call DELAY ; 32744T+ ld bc,(FRAMET) ; 32764T+ call DELAY ; 69884T+ nop ; 69888T+ - the idea seems to be that if we run for exactly FRAME tacts, we are perfectly aligned pop de rst 0 ; really crazy way to handle timing errors (e.g. it crashes on Scorpion due to unaccounted M1 delays) _align ; 55T inc de halt rst 0
Последний раз редактировалось introspec; 28.04.2013 в 22:35.
не знаю как подстраивает, но у нее фрейм всегда с нулевого такта начинается. В ZXMAK2 если включить View->Debug info, то последней строчкой показывает с какого такта начался текущий фрейм.
пробовал сбить ее с толку - менял начальный такт фрейма от 0 до 7 (это можно сделать из отладчика кликнув на ftmT=...), но она шибко умная, при нажатии на кнопку тут-же выравнивается на 0!
Так что с этим все ОК! Жаль что на скорпионе она не работает.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Обработчик прерываний inc sp:inc sp:ei:ret вполне может захватиться дважды на реальном пентагоне.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
У меня этот код лежит в специальной папочке, просто пока случая не было приспособить в дело
Хотя, да, у меня есть небольшая страсть к самопальным решениям...
---------- Post added at 19:51 ---------- Previous post was at 19:50 ----------
Я же говорю, код грязный, но идеи правильные есть.
Дополнение: он почему-то считает, что прерывание обрабатывается 20 тактов. Я секретно подозреваю, что это и есть тот самый знаменитый потерянный такт, о котором писали большевики из ZX Spectrum FAQ, но вникать в подробности мне не хотелось.
Последний раз редактировалось introspec; 28.04.2013 в 22:54. Причина: Добавил о прерываниях.
каким образом? Обработка сигнала INT блокирует прерывания, так что на первой инструкции inc sp прерывания уже заблокированы.
После выполнения EI прерывания запрещены до следующей инструкции. Следующая инструкция RET, т.е. пока обработчик не завершится, повторное прерывание невозможно.
Время выполнения обработчика 26 тактов + 19 тактов на обработку INT, итого - 45 тактов. Повторный вход на пентагоне невозможен, т.к. длительность прерывания - 32 такта
Последний раз редактировалось ZXMAK; 28.04.2013 в 23:01.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)