City
#24
12 августа 1999 |
|
Ликбез - полный дизассемблер ПЗУ (часть 16).
┌─────────────────────────────────────────────────┐ │ ************** ЛИКБЕЗ **************** │ └─────────────────────────────────────────────────┘ (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 1921. Стирание файлов. Вход: установите 23773, 23781, и произведите поиск файла. Программа устанавливает 23816 и 23815. 1921 XOR A ;обнуление количества стертых файлов LD (23815),A JR 1952 ;стирание файлов ─────────────────────────────────────────────────── Адрес 1927. Выполнение команды ERASE. Установите 23825 и 23611. 1927 CALL 7647 ;прием имени файла на стек каль- кулятора CALL 7541 ;если идет проверка на синтаксис, то возврат CALL 4142 ;прием расширения файла XOR A ;пока ничего не стерто LD (23815),A CALL 10543 ;установка и проверка имени сти- раемого файла CALL 1952 ;стирание файла JP NZ,1399 ;если стерли файл не в конце ка- талога, то проверка, сколько файлов стерли JP 993 ;сообщение O.K. ─────────────────────────────────────────────────── Адрес 1952. Стирание файлов.Вход: установите 23773, 23781, обнулите 23815 и произведите поиск файла. Программа устанавливает 23816 и 23815. 1952 LD A,(23773) ;сохранение первого символа име- ни файла LD (23816),A RET NZ ;если файл не был найден,то воз- врат LD HL,23815 ;стерт еще один файл INC (HL) PUSH BC ;сохранение номера файла CALL 1021 ;чтение в буфер сектора 8 дорож- ки 0 LD A,(24073) ;берем количество файлов на дис- ке POP BC ;восстановление номера файла INC C ;этот файл последний ? CP C JR NZ,1980 ;если нет, то стирание обычным порядком DEC A ;на диске теперь на 1 файл мень- ше LD (24073),A XOR A ;стираемый файл в конце каталога 1980 PUSH AF ;сохранение признака метода сти- рания JR Z,1987 ;если файл не в конце каталога, LD HL,24089 ;то увеличение на 1 количества стертых файлов INC (HL) 1987 PUSH BC ;сохранение номера стираемого файла CALL 7747 ;перезапись сектора 8 дорожки 0 POP BC ;восстановление номера стираемо- го файла DEC C CALL 5725 ;загрузка описателя файла POP AF ;восстановление флага метода стирания JP Z,2002 ;если файл в конце каталога, то первый символ имени будет CHR$0 LD A,1 ;иначе он будет CHR$ 1 2002 LD (23773),A ;установка первого символа имени PUSH AF ;сохранение метода стирания CALL 7744 ;запись описателя файла LD A,(23816) ;восстановление первого символа имени файла LD (23773),A POP AF ;восстановление метода стирания JR Z,2023 ;если стерт файл в конце катало- га, то реорганизация описателя диска CALL 7347 ;поиск следующего файла с таким именем JR 1952 ;стирание его, если он есть 2023 CALL 1021 ;чтение сектора 8 дорожки 0 LD HL,(23787);установка нового начала свобод- ного места LD (24070),HL LD DE,(23786);установка нового количества свободных секторов LD HL,(24074) LD D,0 ADD HL,DE LD (24074),HL JP 7747 ;перезапись сектора 8 дорожки 0 и возврат ─────────────────────────────────────────────────── Адрес 2048. Позиционирование с быстрой скоростью перемещения головки. Поместите физический номер до- рожки в регистр данных, а команду позиционирования - в аккумулятор. 2048 AND 252 ;позиционировать с быстрой скоростью JP 15770;выдача команды и ожидание INTRQ пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября