City
#43
09 апреля 2000 |
|
Ликбез - полный дизассемблер ПЗУ (часть 33).
╔═════════════════════════════════════════════════╗ ║.................................................║ ║..... .................. ..............║ ║.... @@@ ................ @@@@ ..............║ ║... @ @ ............... @ ................║ ║.. @ @ @ ║ ║.. @ @ @ @ @ @@ @@@@ @@@ @@@ ║ ║.. @ @ @ @ @ @ @ @ @ @ @ @ @ ║ ║.. @ @ @ @ @@@ @ @ @@ @ @ @ ║ ║ @ @ @ @ @ @ @ @@ @@@@ @ @ ║ ║ @ @ @ @ @ @@ @ @ @ @ @ @ @@ ║ ║ @@ @@ @@@ @@ @ @@ @@@@ @@@@ @ ║ ║ @@@ @ ║ ║........................................ @ @ ║ ║........................................ @@@@ ║ ║.................................................║ ╚═════════════════════════════════════════════════╝ (c) П.Федин ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5.04T (5.03) ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ КТО ХОЧЕТ ИМИ СТАТЬ ~~~~~~~~~~~~~~~~~~~ продолжение Адрес 7112. Установка длины программы на бейсике без переменных. Длину с переменными программа поме- щает в 23782, длину без переменных - в 23784. 7112 LD HL,(23641);вычисление длины программы с переменными LD DE,(23635) SCF SBC HL,DE LD (23782),HL;установка ее LD HL,(23627);вычисление длины только прог- раммы SBC HL,DE LD (23784),HL;установка ее RET ;возврат ─────────────────────────────────────────────────── Адрес 7134. Установка начала и длины файла для за- писи программы на бейсике. 7134 LD HL,(23627);вычисление длины программы с переменными LD DE,(23635) SBC HL,DE LD (23771),HL;установка длины файла для ка- талога LD HL,(23635);установка начала файла LD (23767),HL LD HL,(23641);вычисление длины файла с пара- метрами автозапуска INC HL INC HL INC HL SBC HL,DE LD (23769),HL;установка действительной длины файла RET ;возврат ─────────────────────────────────────────────────── Адрес 7164. Прием имени массива для команды LOAD... DATA. Вход: установите 23645 на расширение файла и установите 23801.Выход: устанавливает 23762, 23767, 23769 и 23771. Используется также с адреса 7183 (то же, что и 7195, но с обработкой ошибок). 7164 CALL 7195 ;поиск массива RET NC ;если массив найден, то возврат LD HL,0 ;старого массива нет LD (23769),HL LD A,(23801) ;идет загрузка ? CP 255 RET NZ ;если да, то возврат JP 7781 ;ошибка 7183 CALL 7195 ;поиск массива RET NC ;если массив найден, то возврат 7187 LD A,14 ;код ошибки - 14 LD HL,10205 ;адрес сообщения ARRAY NOT FOUND JP 7242 ;обработка ошибок ─────────────────────────────────────────────────── Адрес 7195. Поиск массива без обработки ошибок. Бу- дут установлены 23762, 23767, 23769 и 23771. При ошибке флаг C будет установлен, иначе сброшен. 7195 CALL 7722 ;берем следующий символ CALL 7579 ;поиск массива SET 7,C ;установка бита 7 в его имени LD A,C ;установка его имени LD (23762),A JR NC,7211 ;если массив найден, то установ- ка его параметров 7209 SCF ;была ошибка RET ;возврат 7211 JR NZ,7209 ;если флаг Z сброшен, то ошибка INC HL ;берем длину массива LD E,(HL) ;установка длины массива INC HL LD D,(HL) INC HL LD (23767),HL;установка адреса тела массива LD (23771),DE;установка длины массива LD (23769),DE CALL 7722 ;следующий символ CP ")" ;это ")" ? JR NZ,7211 ;если нет, то ошибка RET ;возврат ─────────────────────────────────────────────────── Адрес 7237. Обработка ошибки NO SPACE. Используется также с адреса 7242 (обработка ошибок; в A - код ошибки, в HL - адрес сообщения). 7237 LD HL,10683;адрес сообщения NO SPACE LD A,3 ;код ошибки - 3 7242 CALL 963 ;если надо, то печать сообщения JP 467 ;завершение продолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября