City #18
09 июля 1999

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

<b>Ликбез</b> - полный дизассемблер ПЗУ (часть 13).
 
---------------------------------------------------
                     ЛИКБЕЗ
---------------------------------------------------

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

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

                   пpодолжение


───────────────────────────────────────────────────
Адрес 864. Текст заставки TR-DOS.
864   DEFB 22,1,15
      DEFM "* TR-DOS Ver 5.04T*"
      DEFB 13,13,127
      DEFM " 1986 Technology Research ltd."
      DEFB 22,5,11
      DEFM "(U.K.)"
      DEFB 22,7,5
      DEFM "BETA 128"
      DEFB 0
───────────────────────────────────────────────────
Адрес 940. Завершение выдачи каталога.
940   CALL 1021    ;загрузка  в буфер сектора 8 до-
                    рожки 0
      CALL 15744   ;перевод строки
      CALL 15744   ;еще раз
      LD BC,(24074);берем количество свободных сек-
                    торов на диске
      CALL 7593    ;печать его
      LD HL,10706  ;печать FREE
      RST 24
      JP 467       ;завершение
───────────────────────────────────────────────────
Адрес 960. Переход к подпрограмме завершения.
960   JP 467
───────────────────────────────────────────────────
Адрес 963. Печать сообщения об ошибке. В HL устано-
вите адрес сообщения, в A - код ошибки.
963   PUSH AF     ;сохранение кода ошибки
      LD A,(23822);ошибка произошла при автозагруз-
                   ке ?
      CP 254
      JR NZ,973   ;если   нет,  то  установка  кода
                   ошибки
      POP AF      ;снятие со стека кода ошибки
      RET         ;возврат
973   POP AF      ;восстановление кода ошибки
      LD (23823),A;установка кода ошибки
      LD A,(23829);печать сообщений разрешена ?
      OR A
      CALL Z,9991 ;если да, то печать сообщения
Ошибка!! Перед печатью надо открыть поток 0 и очис-
тить низ экрана.
      RET         ;возврат
───────────────────────────────────────────────────
Адрес 993. Вывод сообщения O.K.
993   LD HL,10086;адрес сообщения O.K.
      XOR A      ;код ошибки - 0
      JP 7242    ;выдача сообщения и завершение
───────────────────────────────────────────────────
Адрес 1000. Загрузка  сектора  0 дорожки 0 в буфер.
Обнуляет 23756. Используется также с адресов:
1004 - загрузка сектора дорожки 0 в буфер.  Устано-
вите 23756.
1010 - загрузка сектора в буфер, номер сектора в E,
дорожки - в D.
1000  XOR A        ;текущий сектор 0
      LD (23756),A
1004  LD DE,(23756);берем номер сектора
      LD D,0       ;дорожка 0
1010  CALL 10570   ;создание буфера
      LD HL,23845  ;загружать в буфер
      LD B,1       ;1 сектор
      JP 7741      ;загрузка сектора
───────────────────────────────────────────────────
Адрес 1021. Загрузка  в  буфер сектора 8 дорожки 0.
Установите 23820.
1021  CALL 10570;создание буфера, если его нет
      LD DE,8   ;дорожка 0, сектор 8
      JR 1010   ;загрузка сектора в буфер
───────────────────────────────────────────────────
Адрес 1029. Настройка на диск.  Меняет переменную с
типом дисковода.
1029  CALL 1021   ;чтение в буфер сектора 8 дорожки
                   0
      LD A,(24076);диск от TR-DOS ?
      CP 16
      JR Z,1045   ;если  да, то установка типа дис-
                   ковода
      LD HL,10722 ;адрес сообщеня DISC ERROR
      RST 24      ;печать сообщения
      JR 960      ;завершение
Внимание, ошибка!! Неправильно обрабатывается ошиб-
ка. Здесь программа должна быть такой:
      LD HL,10722
      LD A,7
      JP 7242
А в этом случае ваша программа не получит код ошиб-
ки, а внизу  экрана  совершенно не к месту появится
DISC ERROR.
      CALL 15889  ;берем тип дисковода
      RES 0,(HL)  ;установка типа дисковода под тип
                   диска
      RES 1,(HL)  ;и возврат
      LD A,(24072)
      BIT 0,A
      JR NZ,1061
      SET 0,(HL)
1061  BIT 3,A
      RET NZ
      SET 1,(HL)
      RET
Ошибка!!!  Перед  установкой типа надо бы проверить
совместимость диска и дисковода.


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



Другие статьи номера:

От редакции - получил от VELа пpиглашение на спектpумовское party г. Дзеpжинске.

Железо - Hемного о GMX (окончание).

Смайлик - анекдоты про женщин.

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

Бук - Похождения Штиpлица и дpугие пpиключения Боpмана.

Beatles - композиция "Металлики" "Кукловод в театpе маpионеток" из альбома 1986 года.

Реклама - Пpодам, куплю ,обменяю пpогpаммы для ZX Spectrum.


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

Похожие статьи:
Система - руководство пользователя DАF v8.05.
Софт - описание нового ассемблера - Storm.
Этюды - Процедура составления оптимальной таблицы символов.
Форум - С.Астров. Генератор псевдослучайных чисел.
Открытые письма Nemo №8.3

В этот день...   10 декабря