--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 455. берет символ по адресу из HL и возвраща- ет его в аккумуляторе плюс флаг Z если это 0, 13 или 128, иначе NZ. 455 LD A,(HL);берем байт по нужному адресу CP 13 ;это 13 ? RET Z ;если да, то возврат CP 128 ;это 128 ? RET Z ;если да, то возврат OR A ;сравнение его с нулем RET ;возврат ─────────────────────────────────────────────────── Адрес 467. Подпрограмма завершения. Вход:установить 23734, 23820, 23823, 23825, 23832, 23834, 23836 и 23839. Выход: в SP адрес из 23836, а в BC код ошибки. 467 LD HL,0 ;буфер убирать, память изменять LD (23800),HL CALL 8421 ;если есть буфер, то уберем его CALL 7523 ;если надо, то очистка рабочей области памяти LD HL,23831 ;заставку не выводить LD (HL),170 LD HL,23839 ;команда поступила из машинного кода ? LD A,(HL) OR A LD (HL),0 ;следующая команда будет не из маш. кода JR NZ,499 ;если команда была не из машин- ного кода, то CALL 7708 ;удаление из строки 5-байтовых чисел и пpогон символов до кон- CALL 530 ;ца строки 499 LD SP,(23836);помещаем в SP адрес из 23836 LD HL,(23834);берем адрес выхода из этой под- программы LD BC,(23823);помещаем в BC код ошибки LD B,0 JP (HL) ;переход по назначенному адресу ─────────────────────────────────────────────────── Адрес 513. Проверка на ошибку. Вход: установите 23610 и 23827. 513 CALL 562 ;помещение в 23613 адреса из 23827 BIT 7,(IY+0) ;была ошибка ? RET NZ ;если нет,то возврат LD DE,23746 ;адрес команды RET в озу LD SP,(23613);установка SP на дно стека PUSH DE ;переход на обработку ошибок RET ─────────────────────────────────────────────────── Адрес 530. Прогон символов до конца строки. Устано- вите в 23645 адрес одного из символов строки. На выходе там будет адрес конца строки. 530 CALL 7564;берем текущий символ строки CP 13 ;это ENTER ? RET Z ;если да, то возврат CALL 7722;берем следующий символ строки JR 530 ;повтор ─────────────────────────────────────────────────── Адрес 541. Установка адреса обработки ошибок. Вход: в 23836 должен быть адрес на 2 больше того, по ко- торому размещаете адрес подпрограммы обработки оши- бок. Выход: старое содержимое 23613 копируется в 23827, а в 23613 помещается адрес, по которому на- ходится размещенный адрес. 541 LD HL,(23613);сохранение старого содержимого 23613 LD (23827),HL LD HL,(23836);берем адрес из 23826 DEC HL ;берем нужный нам адрес DEC HL LD (23613),HL;установка 23613 LD DE,15638 ;адрес подпрограммы обработки ошибок LD (HL),E ;запись его в наши ячейки INC HL LD (HL),D RET ;возврат ─────────────────────────────────────────────────── Адрес 562. Помещение в 23613 адреса из 23827. Уста- новите 23827. 562 LD HL,(23827) LD (23613),HL RET ─────────────────────────────────────────────────── Адрес 569. Вход в командный процессор. Используется также с адреса 635 (запуск файла "boot"). 569 LD HL,0 ;обнуление 23799 и 23800 LD (23799),HL ADD HL,SP ;сохранение SP LD (23836),HL DEC HL ;выделение места для адреса под- программы DEC HL ;обработки ошибок LD SP,HL CALL 541 ;установка адреса подпрограммы обработки ошибок LD HL,23831 ;заставку выводить ? LD A,(HL) CP 170 LD A,0 ;ошибок нет LD (23823),A JP Z,715 ;если заставка не нужна, то пе- реход к командному процессору LD (HL),170 ;в следующий раз заставку не вы- водить CALL 7575 ;очистка экрана CALL 7560 ;открытие потока 2 LD HL,864 ;вывод текста заставки RST 24 CALL 4206 ;вывод цветных полос LD A,(23734) ;интерфейс-1 есть ? CP 244 JR Z,625 ;если да, то LD HL,4096 ;вывод "Interface one fitted." RST 24 625 LD A,(23296) ;файл "boot" запускать ? CP 170 JR NZ,715 ;если нет, то вход в командный процессор CALL 8433 ;изменение памяти LD HL,(23641);берем адрес буфера команд LD A,254 ;был запущен файл "boot" LD (23822),A LD (HL),247 ;ввод команды RUN"boot" INC HL LD (HL),34 INC HL LD (HL),"b" INC HL LD (HL),"o" INC HL LD (HL),"o" INC HL LD (HL),"t" INC HL LD (HL),34 INC HL LD (23643),HL;установка адреса курсора LD (HL),13 ;ENTER INC HL LD (HL),128 ;конец области INC HL LD (23649),HL;установка переменной WORKSP LD (23651),HL;установка и очистка стека каль- кулятора LD (23653),HL SET 3,(IY+1) ;установка режима L JR 751 ;выполнение команды пpодолжение следует ...