City #27
09 сентября 1999

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

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

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

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

                    пpодолжение

Адрес 4558.  Выполнение  команды  LIST.  Установите
23825 и 23611.
4558  CALL 1067    ;проверка второго символа строки
      LD BC,2      ;по умолчанию печатать в поток 2
      LD (23771),BC
      JR Z,4163    ;если второй символ строки ENTER
                   , то вывод каталога
      CP "#"       ;если второй символ строки "#" ?
      JR NZ,4600   ;если нет, то установка дисково-
                    да
      LD (23645),HL;установка CH_ADD
      CALL 7691    ;прием номера потока
      CALL 7564    ;берем текущий символ
      CP 13        ;это ENTER ?
      JR Z,4163    ;если да, то вывод каталога
      CP ","       ;это "," ?
      JP NZ,7450   ;если нет, то ошибка
      CALL 7722    ;следующий символ
      CALL 7613    ;прием  имени  дисковода на стек
                    калькулятора
      JR 4603      ;установка дисковода
4600  CALL 7647    ;установка  CH_ADD и прием имени
                    дисковода на стек  калькулятора
4603  CALL 7541    ;если идет проверка на синтаксис
                   , то возврат
      CALL 7605    ;снятие имени дисковода со стека
                    калькулятора
      EX DE,HL     ;переброска его адреса в HL
      CALL 7297    ;установка дисковода
4613  CALL 7541    ;если идет проверка на синтаксис
                   , то возврат
      LD A,(23798) ;загрузка имени дисковода в23801
      LD (23801),A
      CALL 1029    ;настройка на диск
      LD A,(23771) ;берем номер потока
      CP 2         ;это 2 ?
      PUSH AF      ;сохраняем его
      CALL Z,7555  ;если да, то очистка экрана
      POP AF       ;восстановление номера потока
      CP 17        ;он больше 16 ?
      JP NC,7450   ;если да,то ошибка
      CALL 7556    ;открытие потока
      LD A,255     ;буфер не убирать, память не из-
                    менять
      LD (23800),A
      CALL 4433    ;выделение памяти в рабочей  об-
                    ласти
      LD HL,24070  ;начало описателя диска в буфере
      LD DE,(23759);берем адрес WORKSP
      LD BC,32     ;длина описателя диска
      LDIR         ;сохранение описателя диска
      CALL 1000    ;загрузка в буфер  сектора 0 до-
                    рожки 0
      LD HL,23845  ;адрес буфера
      PUSH HL      ;сохранение его
4670  LD HL,4275   ;адрес сообщения TITLE:
      PUSH BC      ;сохранение BC
      RST 24       ;печать TITLE:
      LD HL,(23759);берем адрес WORKSP
      LD BC,20     ;20-й байт
      ADD HL,BC
      RST 24       ;печать имени диска
      LD HL,4282   ;печать DISC DRIVE:
      RST 24
      LD A,(23798) ;берем номер дисковода
      ADD A,"A"    ;вычисление имени дисковода
      CALL 15746   ;печать его
      CALL 15744   ;перевод строки
      LD HL,(23759);3-й байт описателя диска
      LD BC,3
      ADD HL,BC
      LD A,(HL)    ;берем количество файлов на дис-
                    ке
      LD HL,(23759);19-й байт
      LD BC,19
      ADD HL,BC
      SUB (HL)     ;вычисление количества нестертых
                    файлов
      PUSH HL      ;сохранение  адреса  19-го байта
                    описателя диска
      CALL 7587    ;печать   количества   нестертых
                    файлов
      LD HL,4266   ;печать FILE(S)
      RST 24
      LD HL,(23759);2-й байт описателя диска
      LD BC,2
      ADD HL,BC
      LD A,(HL)    ;берем тип диска
      LD HL,4302   ;адрес сообщения 40 TRACKS,S.SI-
                    DE
      CP 25        ;это 25 ?
      JR Z,4754    ;если да, то печать сообщения
      LD HL,4322   ;адрес сообщения 80 TRACKS,S.SI-
                    DE
      CP 24        ;это 24 ?
      JR Z,4754    ;если да,  то  печать  сообщения
      LD HL,4342   ;адрес сообщения 40 TRACKS,D.SI-
                    DE
      CP 23        ;это 23 ?
      JR Z,4754    ;если да, то печать сообщения
      LD HL,4362   ;адpес сообщения 80 TRACKS,D.SI-
                    DE

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



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

От редакции - нашел схему контpоллеpа XT-клавиатуpы. Возможно, скоpо опубликую.

Железо - КОНТРОЛЛЕР IBM-совместимой клавиатуры и мыши для любого компьютера типа ZX-SPECTRUM (Инструкция по работе и подключению V 2.0).

Смайлик - самые свежие анекдоты.

Что-где-почем - новая поpция пpогpаммного обеспечения от VELа из г.Ковpова.

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

Бук - Похождения Штиpлица и дpугие пpиключения Боpмана.

Beatles - одна из многочисленных песен нашей же легендаpной МАШИHЫ ВPЕМЕHИ.

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

Реклама - Пpиобpету оболочки для газеты и жуpнала.


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

Похожие статьи:
Вступление - содержание номера.
Моя собака - Фокстерьер - мечты и реальность.
Форум - А.Стрельников. Перспективы развития 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