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

┌─────────────────────────────────────────────────┐
│ ************* ЛИКБЕЗ **************** │
└─────────────────────────────────────────────────┘
(c) П.Ю.Федин
╔═════════════════════════════════════════════════╗
║ ║
║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║
║ ║
║ TR-DOS 5.04T (5.03) ║
║ ║
║ ДЛЯ ПРОФЕССИОНАЛОВ, ║
║ ║
║ А ТАКЖЕ ДЛЯ ТЕХ, ║
║ ║
║ КТО ХОЧЕТ ИМИ СТАТЬ. ║
║ ║
╚═════════════════════════════════════════════════╝
пpодолжение
Адрес 6160. Выполнение команды VERIFY. Установите
23825 и 23611.
Используется также с адресов:
6165 - выполнение команды LOAD. Установите 23825 и
23611;
6168 - выполнение команды LOAD, PEEK или POKE. Ус-
тановите 23825, 23611 и 23824.
6160 LD A,255 ;верификация файла
LD (23801),A
6165 CALL 6226 ;обнуление 23824
6168 CALL 6198 ;обработка параметров и загрузка
файла
CALL 7541 ;если идет проверка на синтаксис,
то возврат
LD A,255 ;выполняется команда LOAD
LD (23824),A
LD A,(23801);выполняется VERIFY ?
CP 255
JP Z,993 ;если да, то O.K.
LD A,(23781);расширение файла B ?
CP "B"
Внимание!! Если была операция с одним сектором фай-
ла, то надо выходить независимо от расширения.
JP Z,298 ;если да, то обработка строки ав-
тостарта
JP 993 ;иначе O.K.
───────────────────────────────────────────────────
Адрес 6198. Обработка параметров для команды LOAD и
загрузка файла. Установите 23825, 23611, 23801 и
23824.
6198 CALL 6266;принятие параметров
CALL 7541;если идет проверка на синтаксис, то
возврат
CALL 6315;проверка параметров
JP 6433 ;загрузка файла и возврат
───────────────────────────────────────────────────
Адрес 6210. Обработка параметров для команды LOAD..
.CODE. Установите 23645 на расширение файла. На вы-
ходе устанавливает 23766, 23769 и 23771.
6210 LD HL,(23645);следующий символ строки ENTER ?
INC HL
LD A,(HL)
CP 13
RET Z ;если да, то возврат
LD A,1 ;задан адрес загрузки
LD (23766),A
CALL 7569 ;прием одного или двух чисел
XOR A ;обнуление 23824
LD (23824),A
RET ;возврат
───────────────────────────────────────────────────
Адрес 6226. Обнуление 23824.
6226 XOR A
LD (23824),A
RET
───────────────────────────────────────────────────
Адрес 6231. Прием параметров для команды POKE или
PEEK. Вход: установите 23645 на расширение файла.
Выход: устанавливает 23767, 23769, 23771 и 23871.
6231 CALL 4142 ;прием расширения файла
LD A,"B" ;это "B" ?
CP B
JR NZ,6246 ;если да, то декремент CH_ADD,
так как для
LD HL,(23645);программы на бейсике расширение
не
DEC HL ;указывается
LD (23645),HL
6246 CALL 7659 ;прием чисел
LD HL,(23769);установка адреса загрузки / за-
писи сектора
LD (23767),HL
LD HL,(23771);установка номера сектора
LD (23769),HL
XOR A ;обнуление 23766
LD (23766),A
RET ;возврат
───────────────────────────────────────────────────
Адрес 6266. Принятие параметров для команды LOAD.
Вход: установите 23825 и 23611. Выход: устанавлива-
ет 23762, 23767, 23769, 23781 и 23766 и читает опи-
сатель файла.
6266 CALL 1067 ;второй символ командной строки
ENTER ?
JP Z,635 ;если да,то вход в командный про-
цессор с вводом команды
;RUN"boot"
Ошибка!! Это некорректно, так как при ошибке вы по-
падете в командный процессор TR-DOS, а не вернетесь
в бейсик.
CALL 7647 ;помещение имени файла на стек
калькулятора
CALL 1394 ;операция со всем файлом ?
CALL NZ,6231;если нет, то прием расширения и
двух чисел
CALL 7564 ;берем текущий символ строки
CP 175 ;это CODE ?
CALL Z,6210 ;если да, то прием чисел, если
они есть
CP 228 ;это DATA ?
PUSH AF ;сохранение результата проверки
CALL 1394 ;операция со всем файлом ?
CALL Z,4142 ;если да, то прием расширения
POP AF ;восстановление результата про-
верки
CALL Z,7164 ;если символ DATA, то прием имени
массива
CALL 7541 ;если идет проверка на синтаксис,
то возврат
CALL 10543 ;установка имени файла и поиск
файла
JP NZ,985 ;если файл не найден, то NO FILE
CALL 5725 ;чтение описателя файла
RET ;возврат
пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 18 ноября