City #16
29 июня 1999

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

<b>Ликбез</b> - полное описани и полный дизассемблер ПЗУ (часть 11).
---------------------------------------------------
                     ЛИКБЕЗ
---------------------------------------------------



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

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

                    пpодолжение


Адрес 455. берет символ по адресу из HL и возвраща-
ет его в  аккумуляторе  плюс  флаг Z если это 0, 13
или 128, иначе NZ.
455   LD A,(HL);берем байт по нужному адресу
      CP 13    ;это 13 ?
      RET Z    ;если да, то возврат
      CP 128   ;это 128 ?
      RET Z    ;если да, то возврат
      OR A     ;сравнение его с нулем
      RET      ;возврат
───────────────────────────────────────────────────
Адрес 467. Подпрограмма завершения. Вход:установить
23734, 23820,  23823,  23825, 23832, 23834, 23836 и
23839. Выход: в SP
адрес из 23836, а в BC код ошибки.
467   LD HL,0      ;буфер убирать, память  изменять
      LD (23800),HL
      CALL 8421    ;если есть буфер, то уберем  его
      CALL 7523    ;если надо, то  очистка  рабочей
                    области памяти
      LD HL,23831  ;заставку не выводить
      LD (HL),170
      LD HL,23839  ;команда поступила  из машинного
                    кода ?
      LD A,(HL)
      OR A
      LD (HL),0    ;следующая  команда  будет не из
                    маш. кода
      JR NZ,499    ;если команда была  не из машин-
                    ного кода, то
      CALL 7708    ;удаление  из  строки 5-байтовых
                    чисел и пpогон символов до кон-
      CALL 530     ;ца строки
499   LD SP,(23836);помещаем в SP адрес из 23836
      LD HL,(23834);берем адрес выхода из этой под-
                    программы
      LD BC,(23823);помещаем в BC код ошибки
      LD B,0
      JP (HL)      ;переход по назначенному  адресу
───────────────────────────────────────────────────
Адрес 513.  Проверка  на  ошибку.  Вход: установите
23610 и 23827.
513   CALL 562     ;помещение  в  23613  адреса  из
                    23827
      BIT 7,(IY+0) ;была ошибка ?
      RET NZ       ;если нет,то возврат
      LD DE,23746  ;адрес команды RET в озу
      LD SP,(23613);установка SP на дно стека
      PUSH DE      ;переход на обработку ошибок
      RET
───────────────────────────────────────────────────
Адрес 530. Прогон символов до конца строки. Устано-
вите  в  23645  адрес одного из символов строки. На
выходе там будет адрес конца строки.
530   CALL 7564;берем текущий символ строки
      CP 13    ;это ENTER ?
      RET Z    ;если да, то возврат
      CALL 7722;берем следующий символ строки
      JR 530   ;повтор
───────────────────────────────────────────────────
Адрес 541. Установка адреса обработки ошибок. Вход:
в 23836 должен быть  адрес на 2 больше того, по ко-
торому размещаете адрес подпрограммы обработки оши-
бок.  Выход:  старое  содержимое 23613 копируется в
23827, а  в 23613 помещается адрес, по которому на-
ходится размещенный адрес.
541   LD HL,(23613);сохранение  старого содержимого
                    23613
      LD (23827),HL
      LD HL,(23836);берем адрес из 23826
      DEC HL       ;берем нужный нам адрес
      DEC HL
      LD (23613),HL;установка 23613
      LD DE,15638  ;адрес   подпрограммы  обработки
                    ошибок
      LD (HL),E    ;запись его в наши ячейки
      INC HL
      LD (HL),D
      RET          ;возврат
───────────────────────────────────────────────────
Адрес 562. Помещение в 23613 адреса из 23827. Уста-
новите 23827.
562   LD HL,(23827)
      LD (23613),HL
      RET
───────────────────────────────────────────────────
Адрес 569. Вход в командный процессор. Используется
также с адреса 635 (запуск файла "boot").
569   LD HL,0      ;обнуление 23799 и 23800
      LD (23799),HL
      ADD HL,SP    ;сохранение SP
      LD (23836),HL
      DEC HL       ;выделение места для адреса под-
                    программы
      DEC HL       ;обработки ошибок
      LD SP,HL
      CALL 541     ;установка  адреса  подпрограммы
                    обработки ошибок
      LD HL,23831  ;заставку выводить ?
      LD A,(HL)
      CP 170
      LD A,0       ;ошибок нет
      LD (23823),A
      JP Z,715     ;если заставка  не нужна, то пе-
                    реход к  командному  процессору
      LD (HL),170  ;в следующий раз заставку не вы-
                    водить
      CALL 7575    ;очистка экрана
      CALL 7560    ;открытие потока 2
      LD HL,864    ;вывод текста заставки
      RST 24
      CALL 4206    ;вывод цветных полос
      LD A,(23734) ;интерфейс-1 есть ?
      CP 244
      JR Z,625     ;если да, то
      LD HL,4096   ;вывод  "Interface  one fitted."
      RST 24
625   LD A,(23296) ;файл "boot" запускать ?
      CP 170
      JR NZ,715    ;если  нет,  то вход в командный
                    процессор
      CALL 8433    ;изменение памяти
      LD HL,(23641);берем адрес буфера команд
      LD A,254     ;был запущен файл "boot"
      LD (23822),A
      LD (HL),247  ;ввод команды RUN"boot"
      INC HL
      LD (HL),34
      INC HL
      LD (HL),"b"
      INC HL
      LD (HL),"o"
      INC HL
      LD (HL),"o"
      INC HL
      LD (HL),"t"
      INC HL
      LD (HL),34
      INC HL
      LD (23643),HL;установка адреса курсора
      LD (HL),13   ;ENTER
      INC HL
      LD (HL),128  ;конец области
      INC HL
      LD (23649),HL;установка   переменной   WORKSP
      LD (23651),HL;установка и очистка стека каль-
                    кулятора
      LD (23653),HL
      SET 3,(IY+1) ;установка режима L
      JR 751       ;выполнение команды


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



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

От редакции - Hа днях получил от Nemo бандеpольку с General Sound и ПО к ней.

Железо - подключении видеопоpта (дигитайзера) А.П.Манилова ( ZX-FORUM #2).

Что-где-почем - что же мне пpислал Nemo: Open Letters, Headball, ZX-News 26-29, Text Utility.

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

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

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

Beatles - Музыка и слова О.Митяева.

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


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

Похожие статьи:
Разберемся - Подробный отчет о прохождении игры ЗВЕЗДНОЕ НАСЛЕДИЕ - 1.
V.I.P. - The most noble tale of the scene.
WANTED - Розыск программ.
Юмор - Мыселки 1 & 2 (полезные советы).
Проза - Вера Павлова. Чужое место.

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