City
#39
14 января 2000 |
|
Ликбез - полный дизассемблер ПЗУ (часть 30).
┌─────────────────────────────────────────────────┐ │ ************* ЛИКБЕЗ **************** │ └─────────────────────────────────────────────────┘ (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 6565. Выполнение команды PEEK. Установите 23825 и 23611. 6565 LD A,255;код функции PEEK JR 6571 ;выполнение команды ─────────────────────────────────────────────────── Адрес 6569. Выполнение команды POKE. Установите 23825 и 23611. Используется также с адреса 6571 (выполнение коман- ды LOAD, PEEK или POKE; Установите 23825 и 23611, а в аккумулятор поместите код функции). 6569 LD A,238 ;код функции POKE 6571 LD (23824),A;установка кода функции JP 6168 ;выполнение команды ─────────────────────────────────────────────────── Адрес 6577. Выполнение команды MERGE. Установите 23825 и 23611. 6577 LD A,255 ;использовалась рабочая область LD (23839),A Ошибка!!! Флаг состояния рабочей области находится по адресу 23829. CALL 6266 ;обработка параметров CALL 7541 ;если идет проверка на синтаксис ,то возврат LD A,(23781) ;расширение файла B ? CP "B" JP NZ,7450 ;если нет, то ошибка LD BC,(23782);установка длины файла для заг- рузки LD (23771),BC PUSH BC ;сохранение ее INC BC ;оставим место для байта 128 RST 32 ;выделение места в рабочей обла- сти DEFW #0030 LD (HL),128 ;маркер конца программы EX DE,HL ;переброска адреса загрузки в HL POP DE ;снятие со стека длины файла PUSH HL ;сохранение адреса загрузки LD DE,(23787);берем адрес файла на диске CALL 6427 ;загружать весь файл LD A,(23772) ;берем длину файла в блоках LD B,A CALL 6226 ;операция со всем файлом CALL 6433 ;загрузка файла POP HL ;восстанавливаем адрес загрузки LD DE,(23635);берем адрес программы на бейси- ке RST 32 ;объединение программ DEFW #08D2 JP 993 ;сообщение O.K. ─────────────────────────────────────────────────── Адрес 6642. Проверка места в памяти для резервиро- вания нового пространства вместо старого. В HL - старая длина, в DE - новая. Используется также с адреса 6653 (проверка наличия пространства в памяти; длина пространства должна быть в DE). 6642 EX DE,HL SCF ;вычисление разности длин SBC HL,DE RET C ;если новая длина меньше старой, то возврат LD DE,10 ;должно остаться еще 10 байтов ADD HL,DE LD B,H ;переброска разности длин в BC LD C,L 6653 RST 32 ;проверка наличия пространства в памяти DEFW #1F05 RET ;возврат пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября