City #36
11 декабря 1999

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

<b>Ликбез</b> - полный дизассемблер ПЗУ (часть 28).
┌─────────────────────────────────────────────────┐
│    *************   ЛИКБЕЗ   ****************    │
└─────────────────────────────────────────────────┘

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

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

                    пpодолжение

Адрес 6160.  Выполнение команды VERIFY.  Установите
23825 и 23611.
Используется также с адресов:
6165 - выполнение команды LOAD.  Установите 23825 и
23611;
6168 - выполнение команды LOAD, PEEK или POKE.  Ус-
тановите 23825, 23611 и 23824.
6160  LD A,255    ;верификация файла
      LD (23801),A
6165  CALL 6226   ;обнуление 23824
6168  CALL 6198   ;обработка параметров и  загрузка 
                   файла
      CALL 7541   ;если идет проверка на  синтаксис,
                   то возврат
      LD A,255    ;выполняется команда LOAD
      LD (23824),A
      LD A,(23801);выполняется VERIFY ?
      CP 255
      JP Z,993    ;если да, то O.K.
      LD A,(23781);расширение файла B ?
      CP "B"
Внимание!! Если была операция с одним сектором фай-
ла, то надо выходить независимо от расширения.
      JP Z,298    ;если да, то обработка строки ав-
                   тостарта
      JP 993      ;иначе O.K.
───────────────────────────────────────────────────
Адрес 6198. Обработка параметров для команды LOAD и
загрузка  файла.  Установите  23825, 23611, 23801 и
23824.
6198  CALL 6266;принятие параметров
      CALL 7541;если идет проверка на синтаксис, то
                возврат
      CALL 6315;проверка параметров
      JP 6433  ;загрузка файла и возврат
───────────────────────────────────────────────────
Адрес 6210. Обработка параметров для команды LOAD..
.CODE. Установите 23645 на расширение файла. На вы-
ходе устанавливает 23766, 23769 и 23771.
6210  LD HL,(23645);следующий символ строки ENTER ?
      INC HL
      LD A,(HL)
      CP 13
      RET Z        ;если да, то возврат
      LD A,1       ;задан адрес загрузки
      LD (23766),A
      CALL 7569    ;прием одного или двух чисел
      XOR A        ;обнуление 23824
      LD (23824),A
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 6226. Обнуление 23824.
6226  XOR A
      LD (23824),A
      RET
───────────────────────────────────────────────────
Адрес 6231. Прием параметров для команды  POKE  или
PEEK. Вход:  установите  23645 на расширение файла.
Выход: устанавливает 23767, 23769, 23771 и 23871.
6231  CALL 4142    ;прием расширения файла
      LD A,"B"     ;это "B" ?
      CP B
      JR NZ,6246   ;если да,  то декремент  CH_ADD,
                    так как для
      LD HL,(23645);программы на бейсике расширение
                    не
      DEC HL       ;указывается
      LD (23645),HL
6246  CALL 7659    ;прием чисел
      LD HL,(23769);установка адреса загрузки / за-
                    писи сектора
      LD (23767),HL
      LD HL,(23771);установка номера сектора
      LD (23769),HL
      XOR A        ;обнуление 23766
      LD (23766),A
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 6266. Принятие  параметров для  команды LOAD.
Вход: установите 23825 и 23611. Выход: устанавлива-
ет 23762, 23767, 23769, 23781 и 23766 и читает опи-
сатель файла.
6266  CALL 1067   ;второй  символ  командной строки
                   ENTER ?
      JP Z,635    ;если да,то вход в командный про-
                   цессор с вводом команды
                  ;RUN"boot"
Ошибка!! Это некорректно, так как при ошибке вы по-
падете в командный процессор TR-DOS, а не вернетесь
в бейсик.
      CALL 7647   ;помещение  имени  файла  на стек
                   калькулятора
      CALL 1394   ;операция со всем файлом ?
      CALL NZ,6231;если нет,  то прием расширения и
                   двух чисел
      CALL 7564   ;берем текущий символ строки
      CP 175      ;это CODE ?
      CALL Z,6210 ;если да,  то  прием  чисел, если
                   они есть
      CP 228      ;это DATA ?
      PUSH AF     ;сохранение результата проверки
      CALL 1394   ;операция со всем файлом ?
      CALL Z,4142 ;если да, то прием расширения
      POP AF      ;восстановление  результата  про-
                   верки
      CALL Z,7164 ;если символ DATA, то прием имени
                   массива
      CALL 7541   ;если идет проверка на синтаксис,
                   то возврат
      CALL 10543  ;установка имени  файла  и  поиск
                   файла
      JP NZ,985   ;если файл не найден, то  NO FILE
      CALL 5725   ;чтение описателя файла
      RET         ;возврат

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



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

Железо - схема расширения видеорежима Скорпиона до 512x192 точек.

Смайлик - протухшие анекдоты.

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

Бук - Житие великого митька Иисуса по кликухе Хpистос и о том, как он тащился и как его замочили вpаги.

Beatles - Сегодня я вам пpедставляю еще одну песню О.Митяева.

Наш смак - Сегодня я пpедставлю вашему вниманию pецепт пpиготовления бутеpбpодов.

Реклама - Пpодам, куплю ,обменяю пpогpаммы для ZX Spectrum.


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

Похожие статьи:
Юмор - подключение RPG к Спектруму.
Новости - ACL практически в полном дауне.
Игротека - BRAIN PRESSURE. Рассказ о новой логической игре.
Interface - интервью с Alone Coder.
Реклама - реклама и объявления.

В этот день...   24 апреля