City #42
25 марта 2000

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

<b>Ликбез</b> - полный дизассемблер ПЗУ (часть 32).
╔═════════════════════════════════════════════════╗
║.................................................║
║.....     ..................       ..............║
║....  @@@ ................   @@@@  ..............║
║...  @  @  ...............   @     ..............║
║..  @   @  ...............   @   ................║
║..  @   @                     @                  ║
║..  @   @  @   @   @   @@    @@@@    @@@    @@@  ║
║..  @   @  @   @   @  @  @  @    @  @   @  @   @ ║
║..  @   @  @   @   @@@      @    @ @@   @  @   @ ║
║    @   @  @   @   @  @     @    @@ @@@@  @    @ ║
║ @  @   @  @   @  @@   @  @ @    @  @    @   @@  ║
║  @@     @@ @@@ @@ @    @@   @@@@    @@@@      @ ║
║                                           @@@ @ ║
║........................................  @    @ ║
║.......................................   @    @ ║
║........................................   @@@@  ║
║..........................................       ║
║.................................................║
╚═════════════════════════════════════════════════╝

(c) П.Федин

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

6925  CALL 7541    ;если проверка на  синтаксис, то
                    возврат
      CALL 7564    ;берем текущий символ
      LD HL,23781
      CP 228       ;это DATA ?
      JR Z,6956    ;если да, то запись массива
      CP 13        ;это ENTER ?
      JP NZ,7450   ;если нет, то ошибка
      LD (HL),"B"  ;расширение B
      CALL 6846    ;проверка наличия такого файла и
                    свободного места в каталоге
      CALL 7708    ;удаление  из  командной  строки
                    пятибайтных чисел
6951  CALL 7134    ;установка начала и  длины файла
      JP 6995      ;запись файла
6956  LD (HL),"D"  ;расширение D
      CALL 6846    ;проверка наличия  файла и места
                    в каталоге
      CALL 7183    ;установка начала и  длины файла
      JR NC,6995   ;если все  в  порядке, то запись
                    файла
      JP C,7450    ;иначе ошибка
6969  CALL 7653    ;принятие  начала  и длины файла
      LD HL,(23769);установка начала файла
      LD (23767),HL
      LD HL,(23771);установка длины файла
      LD (23769),HL
6984  CALL 7541    ;если проверка на  синтаксис, то
                    возврат
      LD A,"C"     ;расширение C
      LD (23871),A
      CALL 6846    ;проверка наличия файла и места
                    в каталоге
6995  CALL 7001    ;запись файла
      JP 1385      ;запись информации о нем
───────────────────────────────────────────────────
Адрес 7001. Запись файла.  Установите 23761, 23767,
23769 и 23771, а в буфер загрузите сектор 8  дорож-
ки 0.
7001  LD HL,(23767);установка начала файла
      LD (23782),HL
      EX DE,HL     ;переброска его в DE
      LD HL,(23769);берем длину файла
      LD A,L       ;она равна 0 ?
      OR H
      JP Z,7450    ;если да, то ошибка
      LD A,L       ;вычисление длины файла в секто-
                    рах
      OR A
      JR Z,7021
      INC H
7021  LD A,H       ;установка длины  файла в секто-
                    рах
      LD (23786),A
      LD E,A       ;вычисление  нового   количества
                    свободных секторов
      LD D,0
      LD HL,(24074)
      SBC HL,DE
      JP C,7237    ;если  на  диске  нет  места, то
                    ошибка
      PUSH HL      ;сохранение нового количества
                    свободных секторов
      LD HL,(23641);добавление к программе  на бей-
                    сике байта 170
      LD (HL),170
      INC HL
      LD DE,(23761);и номера строки автостарта
      LD (HL),E
      INC HL
      LD (HL),D
      LD HL,(23771);установка длины файла
      LD (23784),HL
      LD HL,(24070);установка адреса файла  на дис-
                    ке
      LD (23787),HL
      EX DE,HL     ;переброска его в DE
      LD HL,(23782);берем начало файла
      LD A,(23786) ;берем его длину в секторах
      LD B,A
      CALL 7757    ;запись файла
      LD HL,(23796);берем адрес  свободного  прост-
                    ранства диска
      PUSH HL      ;сохраняем его
      CALL 1021    ;загрузка в буфер сектора  8 до-
                    рожки 0
      POP HL       ;восстановление адреса свободно-
                    го места на диске
      LD (24070),HL;установка его
      POP HL       ;восстановление  количества сво-
                    бодных секторов
      LD (24074),HL;установка его
      LD HL,(24073);берем номер файла
      LD A,(HL)
      LD (23838),A ;установка его
      INC (HL)     ;записали еще 1 файл
      PUSH HL      ;сохранение адреса с кол-вом
                    файлов на диске
      CALL 7747    ;перезапись сектора  8 дорожки 0
      POP HL       ;восстановление   адреса с  кол-
                    вом файлов
      LD C,(HL)    ;берем номер  записанного  файла
      DEC C
      LD A,(23781) ;расширение файла B ?
      CP "B"
      CALL Z,7112  ;если  да,  то  установка  длины
                    программы без переменных
      RET          ;возврат

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



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

Вступление - Совсем недавно получил письмо от VTS aka Виктоpа Pощупко.

Железо - схема Cashe памяти для Спектрума.

Юмор - смешной толковый словарь.

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

Бук - ПАПАХИ HА БАШHЯХ.

Beatles - GET BACK.

Смак - рецепт Мяса в маринаде.

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


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

Похожие статьи:
Реклама - реклама и объявления.
От авторов - об ужасах фирменных спектрумов.
От редакции - Получил наконец-то посылку от Nemo. В посылке был XTR-модем.
Реклама - Реклама и объявления ...
Интерфейс - обзор Windows подобных оболочек и систем на ZX Spectrum.

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3