Собрал плату для проверки с реальным Z80 - и сразу начались проблемы
Вот здесь на строчке с "inc c" всё время происходит увеличение значения на 2 - сравниваю по результату записи в регистр _p05_RAM1.Код:fill_vmem: ; enable window on RAM1 in a, (_p0a_mem_man) set MEMM_RAM1EN_BIT, a out (_p0a_mem_man), a ld c, 0 ; set RAM 1 segment loop_seg: ld a, c out (_p05_RAM1), a ; screen pointer ld hl, RAM1_WINDOW ld d, 00 loop_vm: ld (hl), d inc hl ; check end ld a, h cp 0x80 jr NZ, loop_vm ld a, c cp 28 inc c jr NZ, loop_seg ; disable window on RAM1 in a, (_p0a_mem_man) res MEMM_RAM1EN_BIT, a out (_p0a_mem_man), a jp main
В эмуляторе и с софтовым процессором всё работало стабильно...
- - - Добавлено - - -
Кто может подсказать, в чём причина такого поведения?
Ловил строб записи в порт 0x05 и заметил, что ровно через раз пишется в порт 0x85, вместо 0x05 (_p05_RAM1). Вроде бы здесь всё зависит только от значений регистров всё, сам номер порта задан константой...
- - - Добавлено - - -
На логическом анализаторе вижу, что в младшем байте адреса при некорректной записи в порт выводится неинкрементированное значение регистра А.






"Байт-48"
Ответить с цитированием