во многих эмулях практикуется такой подход к эмуляции ULA-видеоконтроллера: после того, как процессор исполнит очередную команду, берется кол-во тактов, затраченное на эту команду, и выполняется соответствующий обьем отрисовки ULA.
к примеру: некий PUSH занял 11 тактов, стало быть (в случае прямого хода луча) ULA рисует 22 точки. и так далее.
НО -- ведь если у нас машина с раздельными полями памяти, ULA и Z80 обращаются к данным одновременно, то есть может возникнуть ситуация, когда PUSH положил на стек, находящийся в экранной памяти, старший байт слова, тем временем ULA считала байт по предыдущему адресу, а затем PUSH положил и младший байт, но ULA уже ускакала вперед, и на экран таким образом попал только старший байт слова, которое клал на стек PUSH.
в упомянутом выше алгоритме эмуляции это не будет учтено, на экран попадут оба байта, то есть, строго говоря, такая эмуляция некорректна.
прав ли я?