|
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 ;завершение
продолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 30 октября