Так это (циклы ожидания) уже будет бОльшое отступление от "правильной" эмуляции (картинки на бордюре и т.д.).Цитата:
дёргать за него, когда центральный обращается к памяти
Вид для печати
Так это (циклы ожидания) уже будет бОльшое отступление от "правильной" эмуляции (картинки на бордюре и т.д.).Цитата:
дёргать за него, когда центральный обращается к памяти
помоему в железе это рулилось так - при 1чке тактового сигнала - память юзал процессор а при нолике тактового - видеоконтроллер. если не ошибаюсь именно это и называлось "прозрачный доступ к памяти". Но было сделано не на всех клонах. Единственно не могу вспомнить к какому из тактовых это привязывалось - 14, 7 или 3.5 мегагерц. Скорее всего к какому либо из первых двух.
Как это реализовано в настоящем Спектруме можно почитать здесь:
http://www.worldofspectrum.org/faq/r...kreference.htm
начиная со слов
Это даст общее представление. Возможно, имеет смысл не реализовывать различные схемы "прозрачного" доступа и затем эмулировать логику ULA в части видеовывода, а реализовать разделение доступа между видеопроцессором и основным процессором сразу так, как это сделано в ULA.Цитата:
If you run a program in the lower 16K of RAM, or read or write in that memory, the processor is halted sometimes, as the ULA needs to access the video memory to keep the TV updated; the electron beam can't be interrupted, so the ULA is given a higher priority to access the contended memory.
Это будет неверное решение. Не надо забывать о том, что "там" использовалась динамическая оперативная память и операция обращения к памями разруливалась автоматом, который формировал, в том числе, такие сигналы как RAS и CAS. В данном случае, надеюсь, память другого типа и все "проще". Да и вообще, о каких там приоритетах может идти речь - я, помнится делал автомат, где коллизий не м.б. в принципе и тайминги 565ру5 это позволяли.Цитата:
сразу так, как это сделано в ULA
Штука в том, что в Спектруме видеовывод, остановки центрального процессора и прерывания жестко связаны между собой. Качественная эмуляция Спектрума подразумевает и эмуляцию этих связей. Поэтому, какого бы типа память ни использовалась, видеовывод приходится реализовывать согласно тому, как работает оригинальный Спектрум с его динамической памятью и всеми остальными особенностями. Я дал ссылку. Почитайте.
Ну, некоторые продвиги есть. Правда изредка слетает:
http://www.youtube.com/watch?v=DI4us7O4KiY