City #35
04 декабря 1999

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

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


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

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

                    пpодолжение

  Адрес 6053. Перемещение файла. Установите  23763,
23843, 23759, 23765 и 23767.
6053  LD A,(23763) ;перемещен весь файл ?
      OR A
      RET Z        ;если да, то возврат
      PUSH HL      ;сохранение HL
      LD HL,23843  ;буфера хватит на остаток ?
      SUB (HL)
      POP HL       ;восстановление HL
      JR NC,6109   ;если буфера не хватит, то пере-
                    мещаем часть файла
      LD A,(23763) ;берем количество оставшихся се-
                    кторов
      LD B,A
      XOR A        ;переместили все
      LD (23763),A
6074  PUSH BC      ;сохранение количества перемеща-
                    емых секторов
      LD HL,(23759);берем адрес рабочей области
      PUSH HL      ;сохранение его
      LD DE,(23765);берем адрес части перемещаемого
                    файла на старом месте
      CALL 7741    ;загрузка секторов
      LD HL,(23796);установка адреса следующей час-
                    ти файла
      LD (23765),HL
      POP HL       ;восстановление  адреса  рабочей
                    области
      POP BC       ;и количества перемещаемых  сек-
                    торов
      LD DE,(23767);берем адрес части перемещаемого
                    файла на новом месте
      CALL 7757    ;запись секторов
      LD HL,(23796);установка адреса следующей час-
                    ти файла
      LD (23767),HL
      JR 6053      ;повтор
6109  LD (23763),A ;установка количества оставшихся
                    секторов
      PUSH HL      ;сохранение HL
      LD HL,23843  ;берем длину  рабочей  области в
                    секторах
      LD B,(HL)
      POP HL       ;восстановление HL
      XOR A        ;обнуление аккумулятора
      JR 6074      ;перемещение секторов

───────────────────────────────────────────────────

Адрес 6121. Загрузка в буфер  сектора с  описателем
файла и перенос описателя. В регистре C- номер фай-
ла, в A- направление перемещения (0 - в переменные,
иначе - в прочитанный сектор).
6121  PUSH AF    ;сохранение направления  перемеще-
                  ния
      LD HL,23756;первый сектор каталога - 0
      LD (HL),0
      LD A,C     ;определение номера сектора с опи-
                  сателем файла
6128  SUB 16
      JR C,6135
      INC (HL)
      JR 6128
6135  ADD A,16   ;берем номер описателя в секторе
      LD C,A
      PUSH BC    ;сохраним его
      CALL 1004  ;загрузка в буфер сектора с описа-
                  телем
      POP BC     ;восстановление номера описателя в
                  секторе
      POP AF     ;и направление перемещения
      CALL 7332  ;определение адреса описателя фай-
                  ла в буфере
      LD DE,23773;берем второй адрес для LDIR
      LD BC,16   ;берем длину описателя
      OR A       ;установка направления перемещения
      JR Z,6157
      EX DE,HL
6157  LDIR       ;перенос описателя файла
      RET        ;возврат

───────────────────────────────────────────────────

Адрес 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.

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



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

От редакции - я получил два письма от VEL'а/PXM и по одному от Hardy/FLASH и Nemo.

Железо - три схемы согласования модема со Spectrum'ом.

Что-где-почем - Hачну с того, что мне пpислал на этот pаз VEL.

Смайлик - кучка анекдотов.

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

Beatles - Сегодня у нас самая известная песня гpуппы "Евpопа" - "Последний отсчет".

Наш смак - несколько pецептов пpиготовления самогона, веpнее заквасок.

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


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

Похожие статьи:
Экранные эффекты - "наливающийся" экран из игры Rockstar.
Обзор - O новых программах: Narc, The Hundred, Heavy Metal Mover, Quick Draw McGraw, Iice Climber (Альпинист), Super Cars, Lode Runner 3, Down Town, Страна Мифов, Gremlin 2, Sword of Bane, Turbo Skate Fighter, Assault Course, Mercs, Darkman. Десятка лучших игр.
Cult pro свет - история самого-лучшего-8-ми-разрядного компьютера - Sam Coupe.
Реклама - Пpодам, куплю ,обменяю пpогpаммы для Spectrum.
Информация - авторы газеты.

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