City #15
14 июня 1999

Ликбез - ПОЛHОЕ ОПИСАHИЕ+ ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS 5.04T (5.03).

──────────────────────────────────────────
                ЛИКБЕЗ
──────────────────────────────────────────

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



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

               пpодолжение
Адрес 298. Обработка  номера  строки авто-
старта  программы на  бейсике.  Установите
23824 и загрузите программу.
298   CALL 8421    ;изменение   памяти   и
                   ;удаление буфера
      CALL 7575    ;очистка экрана
Ох, как меня это бесит, если одна програм-
ма на  бейсике  грузит  заставку, а  затем
другую программу на бейсике.
      LD HL,(23641);берем адрес,  по кото-
                   ;рому находится номер
      INC HL       ;строки     автозапуска
                   ;программы
      LD E,(HL)    ;берем этот номер
      INC HL
      LD D,(HL)
      LD A,D       ;это 0 ?
      OR E
      EX DE,HL     ;переброска его в HL
      JR Z,320     ;если это не 0, то про-
                   ;грамму запускать
      XOR A
      LD (23824),A
320   PUSH HL      ;сохранение      номера
                   ;строки автостарта
      CALL 562     ;восстановление старого
                   ;адреса    подпрограммы
                   ;обработки ошибок
      POP HL       ;восстановление  номера
                   ;строки автостарта
      LD (23618),HL;установка его
      XOR A        ;строку запускать с пе-
                   ;рвого оператора
      LD (23620),A
      RST 32       ;очистка  рабочей обла-
                   ;сти памяти, стека  ка-
                   ;лькулятора  и   буфера
                   ;редактора
      DEFW #16B0
      LD HL,(23635);выполнение RESTORE
      DEC HL
      LD (23639),HL
      LD SP,(23613);очистка стека
      LD A,(23824) ;программу запускать ?
      OR A
      LD HL,7030   ;адрес подпрограммы вы-
                   ;полнения программы  на
                   ;бейсике
      JR Z,358     ;если можно, то  запуск
                   ;программы
      RST 32       ;сообщение O.K.
      DEFW #1BB0
358   PUSH HL      ;помещение на  стек ад-
                   ;реса  подпрограммы вы-
                   ;полнения программы
                   ;на бейсике
      LD HL,23746  ;помещение  на стек ад-
                   ;реса переключателя ПЗУ
                   ;на бейсик
      PUSH HL
      RET          ;переход к  подпрограм-
                   ;ме выполнения програм-
                   ;мы на бейсике
──────────────────────────────────────────

Адрес 364. То же, что и 15642,  но не соз-
дает системные переменные.
364   CALL 8433    ;изменение памяти
      CALL 10570   ;создание буфера
      LD A,255     ;сообщения не печатать
      LD (23829),A
      XOR A        ;обнуление 23799
      LD (23799),A
      LD A,170     ;заставку не выводить
      LD (23831),A
      LD HL,513    ;возвращаться в бейсик
      LD (23834),HL
      LD HL,0      ;сохранение SP
      ADD HL,SP
      LD (23836),HL
      DEC HL       ;выделение   места  для
                   ;адреса подпрограммы
      DEC HL       ;обработки ошибок
      LD SP,HL
      CALL 541     ;установка адреса  под-
                   ;программы    обработки
                   ;ошибок
      LD HL,(23730);командная строка нахо-
                   ;дится выше RAMTOP ?
      LD DE,(23645)
      SBC HL,DE
      EX DE,HL
      JR NC,421    ;если да, то  при выде-
                   ;лении  буфеpа  она  не
      OR A         ;перемещалась
      LD DE,257
      SBC HL,DE
421   LD (23645),HL
424   CALL 455     ;следующий символ стро-
                   ;ки ENTER ?
427   JP Z,467     ;если да, то завершение
      CP 234       ;это REM ?
      INC HL       ;следующий символ
      JR NZ,424    ;если нет, то следующий
                   ;символ
      CALL 455     ;следующий символ стро-
                   ;ки ENTER ?
      JR Z,427     ;если да, то завершение
      CP ":"       ;это двоеточие ?
      JP NZ,467    ;если нет, то возврат
      INC HL       ;следующий символ
      CALL 12360   ;сжатие строки
      JP 778       ;выполнение команды

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




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

Похожие статьи:
Дебют - прохождение "Castle Master" - игра, которую отличает трехмерная закрашенная графика и обилие головоломок.
Iron Making - впечталения от KAY-1024.
Вступление - Disabler закончил писать новую оболочку к DonNews.

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