City #32
04 октября 1999

Ликбез - полный дизассемблер ПЗУ (часть 25).

┌─────────────────────────────────────────────────┐
│    *************   ЛИКБЕЗ   ****************    │
└─────────────────────────────────────────────────┘

(c) П.Ю.Федин

╔═════════════════════════════════════════════════╗
║                                                 ║
║    ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ    ║
║                                                 ║
║              TR-DOS 5.04T (5.03)                ║
║                                                 ║
║              ДЛЯ ПРОФЕССИОНАЛОВ,                ║
║                                                 ║
║               А ТАКЖЕ ДЛЯ ТЕХ,                  ║
║                                                 ║
║             КТО ХОЧЕТ ИМИ СТАТЬ.                ║
║                                                 ║    
╚═════════════════════════════════════════════════╝

                   пpодолжение

Адрес 5554.  Проверка  переменной 23781. Соответст-
венно содержимому  будет  установлен флаг Z, а само
содержимое будет в HL.
5554  LD HL,(23781);берем   содержимое   переменной
                    23781
      LD A,H       ;проверка его на 0
      OR L
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 5560. Копирование секторов. Установите 23769,
23759, 23781, 23841, 23843 и 23771
5560  CALL 5554    ;все скопировали ?
      RET Z        ;если да, то возврат
      LD A,(23841) ;первый проход ?
      OR A
      JR NZ,5595   ;если да, то диск-источник уже в
                    дисководе
      LD HL,10505  ;печать BACKUP DISC
      CALL 9991
      LD HL,10154  ;печать INSERT SOURCE DISC
      CALL 9991
5585  CALL 4178    ;ожидание нажатия Y
      CP "Y"
      JR NZ,5585
      CALL 7583    ;очистка низа экрана
5595  CALL 5554    ;все скопировали ?
      RET Z        ;если да, то возврат
      PUSH BC      ;сохранение BC и количества сек-
                    торов
      PUSH HL
      LD HL,23843  ;берем  длину  рабочей области в
                    секторах
      LD C,(HL)
      LD B,0
      POP HL       ;восстановление количества  сек-
                    торов
      SBC HL,BC    ;уменьшение  количества секторов
      POP BC       ;восстановление BC
      JP NC,5700   ;если рабочего  пространства ма-
                    ло, то это еще не конец
      LD BC,(23781);берем оставшееся количество се-
                    кторов
      LD HL,0      ;все скопировали
      LD (23781),HL
5624  PUSH BC      ;сохранение количества  секторов
      LD HL,(23759);берем адрес рабочей области
      PUSH HL      ;сохраняем его
      CALL 5336    ;настройка  дисковода  под диск-
                    источник
      LD DE,(23771);берем адрес группы  секторов на
                    диске-источнике
      LD B,C
      CALL 7741    ;загрузка секторов
      LD HL,(23796);установка   адреса    следующей
                    группы секторов
      LD (23771),HL;на диске-источнике
      CALL 7575    ;очистка экрана
      LD HL,10105  ;печать BACKUP DISC
      CALL 9991
      LD HL,10117  ;печать  INSERT DESTINATION DISC
      CALL 9991
5661  CALL 4178    ;ожидание нажатия Y
      CP "Y"
      JR NZ,5601
      CALL 7583    ;очистка низа экрана
      LD A,(23841) ;первый проход ?
      OR A
      CALL NZ,5360 ;если да,  то  проверка  наличия
                    места на диске
      POP HL       ;восстановление  адреса  рабочей
                    области
      POP BC       ;и количества копируемых  секто-
                    ров
      LD DE,(23779);берем адрес  группы секторов на
                    диске-приемнике
      LD B,C
      CALL 5348    ;настройка  дисковода  под диск-
                    приемник
      CALL 7757    ;запись секторов
      LD HL,(23796);установка    адреса   следующей
                    группы секторов
      LD (23779),HL;на диске-приемнике 
      JP 5560      ;повтор
5700  LD (23871),HL;установка оставшегося количест-
                    ва секторов
      PUSH HL      ;сохранение его
      LD HL,(23843);берем длину рабочей области
      LD C,(HL)    ;столько секторов будем  копиро-
                    вать
      LD B,0
      POP HL       ;восстановление  оставшегося ко-
                    личества секторов
      XOR A        ;обнуление аккумулятора
      JP 5624      ;копирование

               пpодолжение следует ...




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

Похожие статьи:
Реклама - реклама и обьявления.
Почта - Письма.
Новости - John Silver переехал в собственную квартиру. Сейчас я копаюсь в старых бумагах, пытаюсь восстановить цепь событий.

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