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