Есть две странички:
1) http://www.ramsoft.bbk.org/floatingbus.html#SNOWEFFECT и
2) http://www.worldofspectrum.org/faq/r...m#IOContention .
В первой сказано, что в модели 48K байт по адресу 0x4000 берется на такте #14347. Во второй сказано, что первая задержка получается на такте #14335. Вопрос: кому верить?
Теперь представим, что вторая ссылка верна и ULA действительно начинает работу на такте #14335 так, что цикл обращения к памяти, попадая на этот такт, задерживается на 6 тактов. Тогда работа ULA должна выглядеть следующим образом.
T-state Action
14335 IDLE
14336 IDLE
14337 READ
14338 READ
14339 READ
14340 READ
14341 IDLE
14342 IDLE
14343 IDLE
14344 IDLE
...
Возникает вопрос: если такт #14335 -- это середина ожидания в цикле ULA ДО первого чтения из памяти, то что такой ULA будет выводить на экран на такте #14336 (как об этом говорит та же страничка)? Если он на самом деле читает раньше, тогда и задержки должны быть до такта #14335. Если позже, то и вывод на экран должен быть позже. Это даже если не обращать внимания на то, что, по этой схеме, сам вывод начинается не на границе цикла ULA.
Теперь еще интереснее. Эта же самая страница говорит, что расчет задержки при доступе к порту ведется ровно так же, как в случае обращения к памяти. Это что должно означать? Что четырехтактовое чтение из порта на такте #14342 пройдет без задержки? И что тогда будет делать ULA на такте #14345, когда ему наступит пора начинать свой цикл?
К слову. Я из вредности даже реализовал ровно эти задержки. Использовал тест BBG с цветными вертикальными полосами во всю высоту экрана. Разумеется, ничего похожего на правду это не дало.




Ответить с цитированием