Собрал плату для проверки с реальным Z80 - и сразу начались проблемы

Код:
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
Вот здесь на строчке с "inc c" всё время происходит увеличение значения на 2 - сравниваю по результату записи в регистр _p05_RAM1.
В эмуляторе и с софтовым процессором всё работало стабильно...

- - - Добавлено - - -

Кто может подсказать, в чём причина такого поведения?
Ловил строб записи в порт 0x05 и заметил, что ровно через раз пишется в порт 0x85, вместо 0x05 (_p05_RAM1). Вроде бы здесь всё зависит только от значений регистров всё, сам номер порта задан константой...

- - - Добавлено - - -

На логическом анализаторе вижу, что в младшем байте адреса при некорректной записи в порт выводится неинкрементированное значение регистра А.