0
Вид для печати
0
Если там и упоминалось, что-нибудь подобное, то остановка по-break не блокировалась, а изменялся адрес ПП обработки ошибок. Т.е. вместо вывода сообщения об ошибке и остановки бейсик программы, производился переход на определенную строку в бейсике (или выполнялась ассемблерная ПП, не вызывающая остановку выполнения бейсика).
По-моему изменение данной переменной (адрес ПП обработки ошибок) на 2 от того, что там находится первоначально (вверх или вниз, уже не помню) давало эффект "блокировки" нажатия break (но при использовании в программе go sub ..\return он не работал).
пока 23613,0 вызовет ресет при нажатии бреак, или любой ошибке бейсика. но заметил из-за этого иногда не катят проги в коде.
23759,0
вроде как сжимал 'нижнее системное окно' до нуля строк.
23739,111
вроде перенаправлял вывод системных сообщений на принтер.
но корректно работало не на всех прошивках..
Подскажите процедурку для защиты проги от банального BREAK.
(в ассемблере)
Так L BREAK into program или D BREAK cont repeats?
Теория и практика про обработку ошибок в Basic (написано толково):
http://vtrdos.ru/book/ZXREVU92.ZIP, страница 263.
Если уменьшить на 2 слово, на которое указывает системная переменная #5C3D, то при возникновении любой ошибки повторно выполнится тот опреатор, который ее вызвал. Если это ошибка L, то получится как бы блокировка BREAK'а. Если нет, то последствия могут быть любыми (зависон скорее всего). Алсо вероятно есть операторы, которые возвращают штатные цифры #1303 в слово, на которое указывает #5C3D (я бы побоялся использовать CLEAR и RUN при такой "защите").
В книге "Системные программы для ZX-Spectrum (Питер'93)"
http://vtrdos.ru/book/SYSZX.ZIP
на странице 162 описаны две процедуры из "SuperCode" - обработка ошибок бейсик-программы и обработка прерывания по BREAK.