Можно поинтересоваться, как вот в этом моменте 
ld	a, yh			; Write the data high byte
	ld	(x), a				;
	ld	a, yl			; Write the data low byte
	ld	(1, x), a			;
мк знает что запись нужно начинать не после первого байта, а после второго? Мысли же он не читает. Для 4х вот явно написано что запись начнется после загрузки последнего байта.