Как стереть переменные TR-DOS, переместив бейсик-область обратно на свое место:
Код:
LD HL,23755 ; адрес начала области переменных ТR-DOS
LD BC,112 ;длина области переменных TR-DOS
JP #19E8 ;удаление области, начиная с HL, длиной в BC
Это сдвинет всю бейсик-область на место, скорректировав системные переменные.
Процедуру можно вызывать прямо из бейсика с помощью USR, работа интерпретатора не будет прервана.
Вот еще полезная релоцируемая процедура, может кому-нибудь понадобится.
Переход из 128го бейсика в 48 бейсик с продолжением работы интерпретатора (аналог команды 128 бейсика "spectrum", но только без останова и без блокировки порта #7ffd).
Код:
ORG #b000
DI
LD HL,4867 ;АДРЕС ВОЗВРАТА ПРИ ОШИБКЕ 48BAS
PUSH HL
LD (23613),SP
LD HL,7030 ;АДРЕС ВОЗВРАТА В 48BAS
PUSH HL
LD HL,(23621) ;ТЕКУЩАЯ СТРОКА
LD (23618),HL ;БУДЕТ ВЫПОЛНЯТЬСЯ
LD A,(23623) ;НОМЕР ТЕКУЩЕГО ОПЕРАТОРА
INC A ;УСТАНАВЛИВАЕМ НА СЛЕДУЮЩИЙ
LD (23620),A ;БУДЕТ ВЫПОЛНЯТЬСЯ
LD HL,(23631)
LD DE,15
ADD HL,DE
LD DE,5566
EX DE,HL
LD BC,4
LDIR
LD A,(23611)
AND %11101111
LD (23611),A
EI
RET