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одолжение следует ...




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Рек-тайм - Реклама и объявления ...
Scene 0fF! - optical brothers news.
Ультарские коты - Говард Филипп Лавкрафт: путешествие к обратной стороне Луны.

В этот день...   19 ноября