City #27
09 сентября 1999

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

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

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

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

                    пpодолжение

Адрес 4558.  Выполнение  команды  LIST.  Установите
23825 и 23611.
4558  CALL 1067    ;проверка второго символа строки
      LD BC,2      ;по умолчанию печатать в поток 2
      LD (23771),BC
      JR Z,4163    ;если второй символ строки ENTER
                   , то вывод каталога
      CP "#"       ;если второй символ строки "#" ?
      JR NZ,4600   ;если нет, то установка дисково-
                    да
      LD (23645),HL;установка CH_ADD
      CALL 7691    ;прием номера потока
      CALL 7564    ;берем текущий символ
      CP 13        ;это ENTER ?
      JR Z,4163    ;если да, то вывод каталога
      CP ","       ;это "," ?
      JP NZ,7450   ;если нет, то ошибка
      CALL 7722    ;следующий символ
      CALL 7613    ;прием  имени  дисковода на стек
                    калькулятора
      JR 4603      ;установка дисковода
4600  CALL 7647    ;установка  CH_ADD и прием имени
                    дисковода на стек  калькулятора
4603  CALL 7541    ;если идет проверка на синтаксис
                   , то возврат
      CALL 7605    ;снятие имени дисковода со стека
                    калькулятора
      EX DE,HL     ;переброска его адреса в HL
      CALL 7297    ;установка дисковода
4613  CALL 7541    ;если идет проверка на синтаксис
                   , то возврат
      LD A,(23798) ;загрузка имени дисковода в23801
      LD (23801),A
      CALL 1029    ;настройка на диск
      LD A,(23771) ;берем номер потока
      CP 2         ;это 2 ?
      PUSH AF      ;сохраняем его
      CALL Z,7555  ;если да, то очистка экрана
      POP AF       ;восстановление номера потока
      CP 17        ;он больше 16 ?
      JP NC,7450   ;если да,то ошибка
      CALL 7556    ;открытие потока
      LD A,255     ;буфер не убирать, память не из-
                    менять
      LD (23800),A
      CALL 4433    ;выделение памяти в рабочей  об-
                    ласти
      LD HL,24070  ;начало описателя диска в буфере
      LD DE,(23759);берем адрес WORKSP
      LD BC,32     ;длина описателя диска
      LDIR         ;сохранение описателя диска
      CALL 1000    ;загрузка в буфер  сектора 0 до-
                    рожки 0
      LD HL,23845  ;адрес буфера
      PUSH HL      ;сохранение его
4670  LD HL,4275   ;адрес сообщения TITLE:
      PUSH BC      ;сохранение BC
      RST 24       ;печать TITLE:
      LD HL,(23759);берем адрес WORKSP
      LD BC,20     ;20-й байт
      ADD HL,BC
      RST 24       ;печать имени диска
      LD HL,4282   ;печать DISC DRIVE:
      RST 24
      LD A,(23798) ;берем номер дисковода
      ADD A,"A"    ;вычисление имени дисковода
      CALL 15746   ;печать его
      CALL 15744   ;перевод строки
      LD HL,(23759);3-й байт описателя диска
      LD BC,3
      ADD HL,BC
      LD A,(HL)    ;берем количество файлов на дис-
                    ке
      LD HL,(23759);19-й байт
      LD BC,19
      ADD HL,BC
      SUB (HL)     ;вычисление количества нестертых
                    файлов
      PUSH HL      ;сохранение  адреса  19-го байта
                    описателя диска
      CALL 7587    ;печать   количества   нестертых
                    файлов
      LD HL,4266   ;печать FILE(S)
      RST 24
      LD HL,(23759);2-й байт описателя диска
      LD BC,2
      ADD HL,BC
      LD A,(HL)    ;берем тип диска
      LD HL,4302   ;адрес сообщения 40 TRACKS,S.SI-
                    DE
      CP 25        ;это 25 ?
      JR Z,4754    ;если да, то печать сообщения
      LD HL,4322   ;адрес сообщения 80 TRACKS,S.SI-
                    DE
      CP 24        ;это 24 ?
      JR Z,4754    ;если да,  то  печать  сообщения
      LD HL,4342   ;адрес сообщения 40 TRACKS,D.SI-
                    DE
      CP 23        ;это 23 ?
      JR Z,4754    ;если да, то печать сообщения
      LD HL,4362   ;адpес сообщения 80 TRACKS,D.SI-
                    DE

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




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

Похожие статьи:
Юмор - Леденящая душу история про начальника отдела и подотчетный ему компьютер.
О журнале - О грустном будущем журнала.
Содержание

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