City #43
09 апреля 2000

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

╔═════════════════════════════════════════════════╗
║.................................................║
║.....     ..................       ..............║
║....  @@@ ................   @@@@  ..............║
║...  @  @  ...............   @   ................║
║..  @   @                     @                  ║
║..  @   @  @   @   @   @@    @@@@    @@@    @@@  ║
║..  @   @  @   @   @  @  @  @    @  @   @  @   @ ║
║..  @   @  @   @   @@@      @    @ @@   @  @   @ ║
║    @   @  @   @   @  @     @    @@ @@@@  @    @ ║
║ @  @   @  @   @  @@   @  @ @    @  @    @   @@  ║
║  @@     @@ @@@ @@ @    @@   @@@@    @@@@      @ ║
║                                           @@@ @ ║
║........................................  @    @ ║
║........................................   @@@@  ║
║.................................................║
╚═════════════════════════════════════════════════╝

(c) П.Федин

  ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 5.04T  (5.03) ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ,
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               КТО ХОЧЕТ ИМИ СТАТЬ
               ~~~~~~~~~~~~~~~~~~~
                   продолжение

Адрес 7112. Установка длины  программы  на  бейсике
без переменных. Длину с переменными программа поме-
щает в 23782, длину без переменных - в 23784.
7112  LD HL,(23641);вычисление  длины  программы  с
                    переменными
      LD DE,(23635)
      SCF
      SBC HL,DE
      LD (23782),HL;установка ее
      LD HL,(23627);вычисление длины  только  прог-
                    раммы
      SBC HL,DE
      LD (23784),HL;установка ее
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 7134. Установка начала и длины файла для  за-
писи программы на бейсике.
7134  LD HL,(23627);вычисление  длины  программы  с
                    переменными
      LD DE,(23635)
      SBC HL,DE
      LD (23771),HL;установка  длины файла для  ка-
                    талога
      LD HL,(23635);установка начала файла
      LD (23767),HL
      LD HL,(23641);вычисление длины файла с  пара-
                    метрами автозапуска
      INC HL
      INC HL
      INC HL
      SBC HL,DE
      LD (23769),HL;установка действительной  длины
                    файла
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 7164. Прием имени массива для команды LOAD...
DATA. Вход: установите 23645 на расширение файла  и
установите 23801.Выход: устанавливает 23762, 23767,
23769 и 23771. Используется также с адреса 7183 (то
же, что и 7195, но с обработкой ошибок).
7164  CALL 7195    ;поиск массива
      RET NC       ;если массив найден, то  возврат
      LD HL,0      ;старого массива нет
      LD (23769),HL
      LD A,(23801) ;идет загрузка ?
      CP 255
      RET NZ       ;если да, то возврат
      JP 7781      ;ошибка
7183  CALL 7195    ;поиск массива
      RET NC       ;если массив найден, то  возврат
7187  LD A,14      ;код ошибки - 14
      LD HL,10205  ;адрес сообщения ARRAY NOT FOUND
      JP 7242      ;обработка ошибок
───────────────────────────────────────────────────
Адрес 7195. Поиск массива без обработки ошибок. Бу-
дут установлены 23762, 23767, 23769  и  23771.  При
ошибке флаг C будет установлен, иначе сброшен.
7195  CALL 7722    ;берем следующий символ
      CALL 7579    ;поиск массива
      SET 7,C      ;установка бита 7 в его имени
      LD A,C       ;установка его имени
      LD (23762),A
      JR NC,7211   ;если массив найден, то установ-
                    ка его параметров
7209  SCF          ;была ошибка
      RET          ;возврат
7211  JR NZ,7209   ;если флаг Z сброшен, то  ошибка
      INC HL       ;берем длину массива
      LD E,(HL)    ;установка длины массива
      INC HL
      LD D,(HL)
      INC HL
      LD (23767),HL;установка адреса тела массива
      LD (23771),DE;установка длины массива
      LD (23769),DE
      CALL 7722    ;следующий символ
      CP ")"       ;это ")" ?
      JR NZ,7211   ;если нет, то ошибка
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 7237. Обработка ошибки NO SPACE. Используется
также с адреса  7242  (обработка ошибок;  в A - код
ошибки, в HL - адрес сообщения).
7237  LD HL,10683;адрес сообщения NO SPACE
      LD A,3     ;код ошибки - 3
7242  CALL 963   ;если надо, то печать сообщения
      JP 467     ;завершение

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




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

Похожие статьи:
Pot pourri - Welcome: Интервью.
Таланты - Крутой тест о компьютере от BLAZ'а.
Экспертиза - разборка известной игры Пита Кука "АКАДЕМИЯ".

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