push hl
;ld a,68
pop hl
--------->работает нормально

push hl
ld a,68
pop hl
--------->работает неправильно

;push hl
ld a,68
;pop hl
--------->работает нормально

Оказалось неважно какая команда блокируется, важно на сколько байт меняется код.
Каким-то образом это влияет на дальнейший код.

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

Нашёл в чём проблема, но не понял почему она возникает. Проблема насколько я понял в нехватке памяти.
Я отключил некоторую графику (данные в формате db 1,2,3,4...) и в итоге всё заработало как нужно.
При подключении графики программа работает неправильно.

Не пойму почему так происходит, поскольку запас памяти у меня ещё есть.

Моя программа определяется так:
org 24500
ld sp,61440 ; (#F000)
.......

После трансляции выдаёт следующие данные:

> start: 0x5FB4, 24500 bytes (начало кода)
> total: 0x5E0F, 24079 bytes (всего код занимает)

Выходит что:
#BDC3 (48579) - верхняя точка программы

----------------------------------------------------------
Далее пришла идея поменять в конце кода местами include

было:
include "include\rumdata.asm" ; информационные данные и графика
include "include\rumdata2.asm" ; информационные данные и графика
include "include\podprog.asm" ; различные подпрограммы (код)

стало:
include "include\podprog.asm" ; различные подпрограммы (код)
include "include\rumdata.asm" ; информационные данные и графика
include "include\rumdata2.asm" ; информационные данные и графика

И снова я подключил всю графику.
И всё заработало.

Однако есть подозрения что теперь на "края" данных "заползает" то что портило "края" кода подпрограммы. Но пока этого не видно.