даже если сама данная команда ничего практического не делает, её включение может, например, код или структуры данных сдвигать и портить
Вид для печати
даже если сама данная команда ничего практического не делает, её включение может, например, код или структуры данных сдвигать и портить
В чём может быть проблема вот такой записи:
ld a,69
ld (hromokey1bas+1),a
.......
.........
hromokey1bas:
ld a,71
а ошибка-то какая? и что в качестве асма? Pasmo что ли?
Если у меня нет привязки к определённым ячейкам памяти, то как может испортиться код или структыра данных - они же по идее динамически должны настраиваться каждый раз по новому ?
- - - Добавлено - - -
Ошибка не синтаксическая, она в самой игре - работает не так как нужно. Т.е. например спрайт должен исчезнуть, а он не исчезает. Но когда убираю команду то всё работает нормально.
sjasm
Ну тогда у вас где-то в логике просто ошибка. Значит не такая она и незначащая, эта ld a,69... среда тут точно ни при чем.
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" ; информационные данные и графика
И снова я подключил всю графику.
И всё заработало.
Однако есть подозрения что теперь на "края" данных "заползает" то что портило "края" кода подпрограммы. Но пока этого не видно.
Я нашёл причину. Оказывается "пересечение интересов" происходило по вине программы (про которую я забыл) построения таблицы для векторов прерываний, которая строит их с адреса #be00 (+256), а верхняя точка моей программы #BDC3, отсюда и проблемы были.
goodboy, спасибо за совет!!