
Сообщение от
ZX_NOVOSIB
Этот код можно просто скопировать в Sublime Text?
Нет, есть несколько проблем.
Проблема №1: учимся сразу писать правильно, потом переделываться будет тяжко. В начало модуля пихаем (хотя бы так, все подряд, но лучше разделить на константы системных переменных и процедур ПЗУ):
Код:
PROG equ #5c53
STKEND equ #5c65
RECLAIM_1 equ #19e5
Тогда у тебя PROG, STKEND и RECLAIM_1 становятся понятными и говорящими именами в программе (вместо hex-значений). Олсо SjAsm пихает в error output сообшения об ошибках а sublime, по идее, их должен ловить. Либо настраиваем это, либо учимся их не игнорить (sjasm, если не знает метку RECLAIM-1, пихает в место нее 0, что превращает call RACLAIM-1 в RANDOMIZE USR 0). Ахтунг - моя лажа, "-" использовать в метках нельзя, меняем на "_", но RANDOMIZE USR 65535 (0 - 1) примерно то же самое 
Проблема №2 (потенциальная): если у тебя загрузчик в машкодах, встроенных в первую BASIC-строку, а ты стираешь весь BASIC, то программа твоя может пострадать (я не помню уже сколько на самом деле занимает "пустая" программа).
Проблема №3: учимся пользоваться отладчиком Unreal Spectrum - как минимум он показывает что у тебя скомпилировалось, а еще от него можно узнать в каком месте происходит Большой взрыв с возвратом в начало эволюции;
Проблема №4 (у меня в мозгу): я так понимаю, тебе всей ценой нужно сделать честный CLEAR перед стартом программы. А ты говоришь,

Сообщение от
ZX_NOVOSIB
после него поставил JP на адрес автораспаковки-автостарта игры
Получается, машинный стек у тебя остается там, где его придумал BASIC, он затирается кодом игры и у TR-DOS при загрузке снесет крышку.
Смотри, суть оператора CLEAR в следующем:
- убийство всех BASIC-переменных (кстати, код очистки всего и вся я взял именно из реализации CLEAR);
- очистка экрана;
- установка системной переменной RAMTOP;
- инициализация стека GO SUB по адресу RAMTOP (он занимает там 1 байт);
- перенос машинного стека под стек GO SUB;
Фактически, CLEAR в BASIC-загрузчике чаще всего нужен для переноса машинного стека до, собственно, самой загрузки. Если не нужен остальной "сервис" от CLEAR, то CLEAR #nnnn заменяется на ассемблерную команду ld sp,#nnnn, при этом никаких проверок, разумеется, не делается, никаких RAMTOP no good, но в BASIC уже не вернуться - он ситает, что машинный стек в другом месте.
Там вот, объясни уже всем тут, после твоего кодового загрузчика надо попасть в игру или опять вернуться в BASIC?