Каким образом эта программа подстраивает HALT под нужный такт из 4? А может, она его вообще не подстраивает и результат рандомный?
Каким образом эта программа подстраивает HALT под нужный такт из 4? А может, она его вообще не подстраивает и результат рандомный?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
У Яна Бобровского выложены все исходники:
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)