|
City
#16
29 июня 1999 |
|
Ликбез - полное описани и полный дизассемблер ПЗУ (часть 11).

---------------------------------------------------
ЛИКБЕЗ
---------------------------------------------------
(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одолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 18 ноября