Собрал плату для проверки с реальным Z80 - и сразу начались проблемы :)
https://i.ibb.co/BCvKP6F/2020-07-04-17-01-06.jpg
Вот здесь на строчке с "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). Вроде бы здесь всё зависит только от значений регистров всё, сам номер порта задан константой...
- - - Добавлено - - -
На логическом анализаторе вижу, что в младшем байте адреса при некорректной записи в порт выводится неинкрементированное значение регистра А.

