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