City #25
16 августа 1999

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

  
┌─────────────────────────────────────────────────┐
│   ***************   ЛИКБЕЗ   ****************   │
└─────────────────────────────────────────────────┘
 
(c) П.Ю.Федин

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

                    пpодолжение


Адpес 2054. Фирменный знак изготовителей TR-DOS ве-
рсии 5.04T.
2054  DEFM " Message for hackers:Base version 5.03,
           High Speed"
      DEFM ", Turbo Format. "
      DEFB 127
      DEFM "Copyright C.C. 1991"
───────────────────────────────────────────────────
Адрес 4096. Текст "Interface one fitted."
4096  DEFB 22,9,5
      DEFM "Interface one fitted."
      DEFB 0
───────────────────────────────────────────────────
Адрес 4120.  Выполнение  команды  "*".   Установите
23825 и 23611.
4120  CALL 7647   ;установка  CH_ADD  и прием имени
                   дисковода на стек калькулятора
      CALL 7541   ;если идет проверка на синтаксис,
                   то возврат
      CALL 1329   ;снятие  имени дисковода со стека
                   калькулятора
      LD A,(DE)   ;берем первый символ имени
      CALL 1316   ;вычисление номера дисковода
      LD (23833),A;установка дисковода по умолчанию
      CALL 15819  ;выбор дисковода
      JP 993      ;сообщение O.K.
───────────────────────────────────────────────────
Адрес 4142.   Прием  расширения  файла.  Установите
23645 и 23766.
4142  LD B,"C"    ;расширение C
      LD A,(23766);расширение принимать ?
      OR A
      JR NZ,4173  ;если  нет, то установка расшире-
                   ния файла
      CALL 7564   ;берем текущий символ
      CP 175      ;это CODE ?
      LD B,"C"    ;расширение C
      JR Z,4173   ;если да, то установка расширения
                   файла
      CP 228      ;это DATA ?
      LD B,"D"    ;расширение D
      JR Z,4173   ;если да, то установка расширения
                   файла
      CP "#"      ;это # ?
      LD B,"#"    ;расширение #
      JR Z,4173   ;если да, то установка расширения
                   файла
      LD B,"B"    ;расширение B
4173  LD HL,23781 ;адрес  переменной  с расширением
                   файла
      LD (HL),B   ;установка расширения
      RET         ;возврат
───────────────────────────────────────────────────
Адрес 4206. Вывод цветных полос для заставки.
4206  LD HL,22757;адрес линии атрибутов
      LD B,10    ;установка атрибутов
4211  LD (HL),7
      INC HL
      DJNZ 4211
      LD (HL),2
      INC HL
      LD (HL),22
      INC HL
      LD (HL),52
      INC HL
      LD (HL),37
      INC HL
      LD (HL),40
      INC HL
      LD (HL),7
      LD HL,16622;адрес   верхней  линии   пикселей
      LD B,8     ;8  линий  пикселей  в  знакоместе
      XOR A      ;обнуление  аккумулятора
4239  PUSH BC    ;сохранение  количества  линий
      SCF        ;сдвиг  пикселей
      RLA
      PUSH HL    ;сохранение  адреса линии пикселей
      PUSH AF    ;и  байта  для  заполнения
      LD B,5     ;в линии 5 байтов
4246  INC HL     ;заполнение линии
      LD (HL),A
      DJNZ 4246
      POP AF     ;восстановление байта для заполне-
                  ния линии,
      POP HL     ;адреса линии
      POP BC     ;и количества линий
      LD DE,256  ;берем адрес следующей линии
      ADD HL,DE
      DJNZ 4239  ;повтор до конца
      RET        ;возврат
───────────────────────────────────────────────────
Адрес 4178. Ввод клавиши с ожиданием.
4178  DI        ;запрет прерываний
      PUSH HL   ;сохранение регистров
      PUSH BC
      PUSH DE
4182  RST 32    ;определение номера нажатой клавиши
      DEFW #028E
      LD C,0    ;режим клавиатуры - C или L
      JR NZ,4182;если нажата бессмысленная комбина-
                 ция клавиш, то повтор
      RST 32    ;определение  кода нажатой  клавиши
      DEFW #031E
      JR NC,4182;если  ничего  не нажато, то повтор
      DEC D     ;режим клавиатуры - C или L
      LD E,A    ;помещение кода клавиши в регистр E
      RST 32    ;обработка клавиш CAPS SHIFT и SYM-
                 BOL SHIFT
      DEFW #0333
      POP DE    ;восстановление регистров
      POP BC
      POP HL
      AND 223   ;буква будет заглавная
      EI        ;разрешение прерываний
      RET       ;возврат

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



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

Вступление - наша доблестная почта веpнула обpатно мой пеpевод в Уссуpийск.

Железо - несложная схема аналого-цифрового преобразователя, позволяющая оцифровывать аналоговые сигналы с 10/8 битным качеством.

Смайлик - Тpетий не лишний, тpетий - запасной.

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

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

Beatles - "Yesterday". По-моему, комментиpовать здесь абсолютно нечего.

Реклама - Пpиобpету схему туpбиpования Скоpпиона.


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

Похожие статьи:
Сказки чОрного кота - Загадочная архитектура брестского компьютера Байт, который нельзя однозначно эволюционно связать ни с одним клоном спектрума.
Открытые письма Nemo №2.8
MinskZXNet - Hamer BBS некоторое время не работала.

В этот день...   19 июля