City #40
08 февраля 2000

Ликбез - полное описание + полный дизассемблер ПЗУ TR-DOS (продолжение).

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

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

                          пpодолжение

Адрес 6657. Подготовка к загрузке программы на бейсике.
6657  LD DE,(23635);берем адрес начала программы на бейсике
      LD HL,(23641);берем адрес конца программы на бейсике
      DEC HL
      PUSH HL      ;сохранение начала и конца программы
      PUSH DE
      SBC HL,DE    ;вычисление длины программы на бейсике
      LD DE,(23782);берем длину программы с переменными
      PUSH DE      ;сохраняем ее
      PUSH HL      ;сохранение длины старой программы
      LD HL,0      ;идет верификация ?
      LD A,(23801)
      CP 255
      JR Z,6688    ;если да, то длину не меняем
      LD HL,5      ;иначе увеличим ее на 5 байтов
6688  ADD HL,DE
      LD (23771),HL;установка длины загрузки
      POP HL       ;восстановление длины старой программы
      LD A,(23801) ;верификация ?
      CP 255
      JR NZ,6705   ;если нет, то подготовка памяти
      POP DE       ;снятие регистров со стека
      POP DE
      POP HL
      JR 6728      ;возврат
6705  CALL 6642    ;проверка наличия места для программы
      POP BC       ;восстановление длины программы с переменными
      POP DE       ;восстановление начала программы
      POP HL       ;восстановление конца программы
      PUSH BC      ;сохранение длины программы
      RST 32       ;стирание старой программы
      DEFW #19E5
      POP BC       ;восстановление длины программы
      CALL 7730    ;резервирование места для новой программы
      INC HL       ;установка переменной VARS
      LD BC,(23784)
      ADD HL,BC
      LD (23627),HL
6728  LD HL,(23635);берем адрес загрузки программы
      RET          ;возврат
────────────────────────────────────────────────────────────────
Адрес 6732. Подготовка памяти к загрузке массива. Установите
23784, 23767, 23769 и 23801.
6732  LD DE,(23784);загружать весь файл
      LD (23771),DE
      LD HL,(23767);берем адрес массива в памяти
      LD A,(23801) ;верификация ?
      CP 255
      RET Z        ;если да, то возврат
      LD HL,(23769);берем адрес загрузки файла
      PUSH HL      ;сохраняем его
6753  CALL 6642    ;проверка наличия места для массива
      POP HL       ;восстановление адреса загрузки файла
      LD A,H       ;он равен 0 ?
      OR L
      JR Z,6777    ;если да, то старый массив не убираем
      LD HL,(23767);берем начало старого массива
      DEC HL
      DEC HL
      DEC HL
      LD BC,(23769);берем его длину
      INC BC
      INC BC
      INC BC
      CALL 7726    ;стирание старого массива
6777  LD HL,(23641);берем начало области переменных
      DEC HL
      LD BC,(23784);берем длину файла
      PUSH BC      ;сохраняем ее
      INC BC
      INC BC
      INC BC
      CALL 7730    ;резервирование места для нового массива
      INC HL       ;установка имени массива
      LD A,(23762)
      LD (HL),A
      INC HL       ;восстановление и установка длины массива
      POP DE
      LD (HL),E
      INC HL
      LD (HL),D
      INC HL       ;берем адрес тела массива
      RET          ;возврат

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





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

Похожие статьи:
Система - Обзор новых системок: Sprite Maker v4.0, Turbo Copier v2.0, Sample Studio, Art Works 1, Burst Eyes v1.2, Excess Sample Editor v1.4.25, Excess Deluxe Paint v1.1, Graphic Station, BA v1.0, Global Commander v1.31, Quick Commander v2.3, Stall Spriter v0.1, AGA v1.0, Ultra Sonic v0.1, Universal Sprite Studio v1.0, HRUST v1.1, STORM v1.3.
Новости - новый варез: PSYCНОZ#17,CОSSACKОS#16,17,InfоGuide#6.
AMANDAS ALL NEW X-RATED DIARY

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