──────────────────────────────────────────
ЛИКБЕЗ
──────────────────────────────────────────
(c) П.Ю.Федин
╔════════════════════════════════════════╗
║ ║
║ПОЛНОЕ ОПИСАНИЕ+ ПОЛНЫЙ ДИЗАССЕМБЛЕР ПЗУ║
║ ║
║ TR-DOS 5.04T (5.03) ║
║ ║
║ ДЛЯ ПРОФЕССИОНАЛОВ, ║
║ ║
║ А ТАКЖЕ ДЛЯ ТЕХ, ║
║ ║
║ КТО ХОЧЕТ ИМИ СТАТЬ. ║
║ ║
╚════════════════════════════════════════╝
продолжение
Адрес 298. Обработка номера строки авто-
старта программы на бейсике. Установите
23824 и загрузите программу.
298 CALL 8421 ;изменение памяти и
;удаление буфера
CALL 7575 ;очистка экрана
Ох, как меня это бесит, если одна програм-
ма на бейсике грузит заставку, а затем
другую программу на бейсике.
LD HL,(23641);берем адрес, по кото-
;рому находится номер
INC HL ;строки автозапуска
;программы
LD E,(HL) ;берем этот номер
INC HL
LD D,(HL)
LD A,D ;это 0 ?
OR E
EX DE,HL ;переброска его в HL
JR Z,320 ;если это не 0, то про-
;грамму запускать
XOR A
LD (23824),A
320 PUSH HL ;сохранение номера
;строки автостарта
CALL 562 ;восстановление старого
;адреса подпрограммы
;обработки ошибок
POP HL ;восстановление номера
;строки автостарта
LD (23618),HL;установка его
XOR A ;строку запускать с пе-
;рвого оператора
LD (23620),A
RST 32 ;очистка рабочей обла-
;сти памяти, стека ка-
;лькулятора и буфера
;редактора
DEFW #16B0
LD HL,(23635);выполнение RESTORE
DEC HL
LD (23639),HL
LD SP,(23613);очистка стека
LD A,(23824) ;программу запускать ?
OR A
LD HL,7030 ;адрес подпрограммы вы-
;полнения программы на
;бейсике
JR Z,358 ;если можно, то запуск
;программы
RST 32 ;сообщение O.K.
DEFW #1BBO
358 PUSH HL ;помещение на стек ад-
;реса подпрограммы вы-
;полнения программы
;на бейсике
LD HL,23746 ;помещение на стек ад-
;реса переключателя ПЗУ
;на бейсик
PUSH HL
RET ;переход к подпрограм-
;ме выполнения програм-
;мы на бейсике
──────────────────────────────────────────
Адрес 364. То же, что и 15642, но не соз-
дает системные переменные.
364 CALL 8433 ;изменение памяти
CALL 10570 ;создание буфера
LD A,255 ;сообщения не печатать
LD (23829),A
XOR A ;обнуление 23799
LD (23799),A
LD A,170 ;заставку не выводить
LD (23831),A
LD HL,513 ;возвращаться в бейсик
LD (23834),HL
LD HL,0 ;сохранение SP
ADD HL,SP
LD (23836),HL
DEC HL ;выделение места для
;адреса подпрограммы
DEC HL ;обработки ошибок
LD SP,HL
CALL 541 ;установка адреса под-
;программы обработки
;ошибок
LD HL,(23730);командная строка нахо-
;дится выше RAMTOP ?
LD DE,(23645)
SBC HL,DE
EX DE,HL
JR NC,421 ;если да, то при выде-
;лении буфера она не
OR A ;перемещалась
LD DE,257
SBC HL,DE
421 LD (23645),HL
424 CALL 455 ;следующий символ стро-
;ки ENTER ?
427 JP Z,467 ;если да, то завершение
CP 234 ;это REM ?
INC HL ;следующий символ
JR NZ,424 ;если нет, то следующий
;символ
CALL 455 ;следующий символ стро-
;ки ENTER ?
JR Z,427 ;если да, то завершение
CP ":" ;это двоеточие ?
JP NZ,467 ;если нет, то возврат
INC HL ;следующий символ
CALL 12360 ;сжатие строки
JP 778 ;выполнение команды
продолжение следует ...
Other articles: