City #46
09 июня 2000

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

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

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

Адрес 7450.  Обработка  синтаксической ошибки. Установите 23610,
23822, 23829,  и все  для подпрограммы 467. Используется также с
адреса 7465  (обработка ошибок;  в A - код ошибки,  в HL - адрес
сообщения).
7450  BIT 7,(IY+0);код ошибки бейсика уже назначен ?
      JR Z,7461   ;если нет, то установка ошибки
      LD A,11     ;NONSENCE IN BASIC
      LD (23610),A
7461  INC A       ;получение кода ошибки DOS
      LD HL,10674 ;адрес сообщения ERROR
7465  CALL 963    ;печать сообщения, если можно
      JP 467      ;завершение
────────────────────────────────────────────────────────────────
Адрес 7471.  Обработка  ошибки,  поступившей  из пзу бейсика без
очистки стека. Установите 23610.
7471  LD A,(23610);берем код ошибки бейсика
      LD HL,10186 ;адрес сообщения *BREAK*
      CP 20       ;BREAK INTO PROGRAM ?
      JR Z,7465   ;если да, то печать сообщения
      CP 12       ;BREAK - CONT REPEATS ?
      JR Z,7465   ;если да, то печать сообщения
      LD HL,10194 ;адрес сообщения OUT OF RAM
      CP 3        ;OUT OF MEMORY ?
      JR Z,7465   ;если да, то печать сообщения
      LD HL,10205 ;адрес сообщения ARRAY NOT FOUND
      CP 1        ;VARIABLE NOT FOUND ?
      JR Z,7465   ;если да, то печать сообщения
      JR 7450     ;иначе сообщение *ERROR*
────────────────────────────────────────────────────────────────
Адрес 7501. Выполнение команды RUN. Установите 23825 и 23611.
7501  CALL 6226    ;выполнять загрузку файла
      CALL 6198    ;обработка параметров и загрузка файла
      CALL 7541    ;если идет проверка на синтаксис, то возврат
      LD HL,(23782);берем адрес загрузки файла по умолчанию
  Ошибка!! Ведь файл могли загрузить и по другому адресу. В под-
программе  6315 надо сохранять в 23840 действительный адрес заг-
рузки файла, а здесь восстанавливать его.
      LD A,(23781) ;расширение файла B ?
      CP "B"
      JP Z,298     ;если да, то запуск программы на бейсике
      PUSH HL      ;запуск программы в кодах
      RET
  Боже!! Ну кто так делает!!! Во-первых, адрес программы при за-
пуске должен быть в BC;  во-вторых, надо совсем выйти из TR-DOS,
иначе  программа спятит при вызове 15635;  в третьих, куда прог-
рамма  будет  возвращаться?;  в  четвертых...  В общем, надо так
(после CALL 7541):
      LD A,(23781)
      CP "D"
      JP Z,7450
      CP "B"
      JP Z,298
      LD HL,START
      LD (23834),HL
      JP 467
────────────────────────────────────────────────────────────────
START CALL 562
      LD BC,(23840)
      PUSH BC
      RET
────────────────────────────────────────────────────────────────
Адрес 7523. Очистка рабочей области памяти.
7523  LD HL,23822;рабочую область очищать ?
      LD A,(HL)
      CP 255
      LD (HL),0  ;рабочая область очищена
      RET NZ     ;если рабочая область очищена, то возврат
      RST 32     ;очистка рабочей области
      DEFW #16BF
      RET        ;возврат
────────────────────────────────────────────────────────────────
Адрес 7536. Проверка,  идет  ли проверка строки на синтаксис или
выполнение команды.  Если идет выполнение, то флаг Z будет сбро-
шен, иначе установлен.
7536  BIT 7,(IY+1)
      RET
                     продолжение следует ...




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

Преамбула - На сегодняшний день новостей особых нет, если не считать того, что удалось сменить прошивку ПЗУ на v2.95.

Планета шелезяка - RS-232 интерфейс для Спектрума.

Смайлик - Молоко вдвойне смешней, если после огурцов ...

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

Бук - Лабиринт Отражений.

Beatles - увлечение "Битлз" не англо-американской музыкой.

Смак - малосольные огурцы.

Двигатель торговли - Пpодаю, покупаю ,меняюсь пpогpаммами для ZX Spectrum, каталог программ и все выпуски CITY бесплатно запишу на ваши диски.

Благодарности - - В.Елисееву и С.Кокунову за ZX Word 2.5m remix


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

Похожие статьи:
Софт - о глюках в NICRON'е.
Зеркало - интервью с Майком Сингльтоном, автором таких известных игр, как "Lords of Midnight", "Doomdark Revenge", "War in the middle earth", "Dark Scepetre" и др.
Demo Party - POL/PHT: отчет о Doxycon '99.

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