Полное описание и дизассемблер ПЗУ TR-DOS 5.04T (5.03) 1995 г.

Глава 16 - полный дизассемблер ПЗУ TR-DOS 5.04T. (адреса 12457-13074).


Адрес 12457. Определение номера ключевого слова. Установите
23769. После возврата если флаг Z установлен, то в C будет номер
ключевого слова, а в HL - адрес последнего символа ключевого
слова; иначе ключевое слово не было опознано, а в HL будет адрес
из 23769.

12457 LD HL,(23769);берем адрес ключевого слова в строке
      LD DE,12541  ;адрес таблицы ключевых слов
      LD C,0       ;начнем со слова 0
12465 LD A,(HL)    ;берем символ слова из нашей строки
      AND 223      ;буква заглавная
      LD B,A       ;загрузка символа в B
      OR A         ;это CHR$ 0 ?
      JR NZ,12475  ;если да, то
      INC HL       ;следующий символ
      JR 12465     ;и повтор
12475 LD A,(DE)    ;берем символ из таблицы
      AND 128      ;его бит 7 включен ?
      JR NZ,12488  ;если да, то этот символ последний
      LD A,(DE)    ;снова берем символ из таблицы
      CP B         ;сравнение символов
      JR NZ,12505  ;если они не совпадают, то проверка следующего слова
      INC HL       ;адреса следующих символов
      INC DE
      JR 12465     ;повтор
12488 LD A,(DE)    ;берем символ из таблицы
      AND 127      ;сбрасываем бит 7
      CP B         ;сравниваем символы
      RET Z        ;если они совпали, то возврат
12493 INC C        ;номер следующего слова
      LD HL,(23769);берем адрес ключевого слова в строке
      INC DE       ;следующий символ из таблицы
      LD A,(DE)
      CP 255       ;конец таблицы ?
      JR NZ,12465  ;если нет, то повтор
      OR A         ;сброс флага Z
      RET          ;возврат
12505 INC DE       ;следующий символ из таблицы
      LD A,(DE)
      AND 128      ;его бит 7 включен ?
      JR Z,12505   ;если да, то следующий символ
      JR 12493     ;проверка достижения конца таблицы
────────────────────────────────────────────────────────────────
Адрес 12513. Проверка местонахождения  строки. Устанавливает
23766, а в HL помещает адрес поля длины строки минус 2.

12513 LD HL,(23621);берем номер выполняющейся строки
      INC HL       ;подана прямая команда ?
      INC HL
      LD A,H
      OR L
      JR Z,12532   ;если да, то установка флага
      XOR A        ;команда находится в строке программы на бейсике
      LD (23766),A
      DEC HL       ;восстановление номера строки
      DEC HL
      RST 32       ;определение адреса строки
      DEFW #196E
      RET          ;возврат
12532 LD A,255     ;подана прямая команда
      LD (23766),A
      LD HL,(23641);любой адрес
      RET          ;возврат
────────────────────────────────────────────────────────────────
Адрес 12541. Таблица ключевых слов TR-DOS.

12541 DEFM "SAVE"
      DEFB 128
      DEFM "SAV"
      DEFB 197
      DEFM "LOAD"
      DEFB 128
      DEFM "LOA"
      DEFB 196
      DEFM "RUN"
      DEFB 128
      DEFM "RU"
      DEFB 206
      DEFM "CAT"
      DEFB 128
      DEFM "CA"
      DEFB 212
      DEFM "ERASE"
      DEFB 128
      DEFM "ERAS"
      DEFB 197
      DEFM "NEW"
      DEFB 128
      DEFM "NE"
      DEFB 215
      DEFM "MOVE"
      DEFB 128
      DEFM "MOV"
      DEFB 197
      DEFM "MERGE"
      DEFB 128
      DEFM "MERG"
      DEFB 197
      DEFM "PEEK"
      DEFB 128
      DEFM "PEE"
      DEFB 203
      DEFM "POKE"
      DEFB 128
      DEFM "POK"
      DEFB 197
      DEFM "OPEN"
      DEFB 131
      DEFM "CLOSE"
      DEFB 131
      DEFM "CODE"
      DEFB 128
      DEFM "COD"
      DEFB 197
      DEFM "RND"
      DEFB 128
      DEFM "RN"
      DEFB 197
      DEFM "DATA"
      DEFB 128
      DEFM "DAT"
      DEFB 193
      DEFM "SCREEN"
      DEFB 4,132
      DEFM "SCREEN"
      DEFB 132
      DEFM "COPY"
      DEFB 128
      DEFM "COP"
      DEFB 217
      DEFM "FORMAT"
      DEFB 128
      DEFM "FORMA"
      DEFB 212
      DEFM "GO TO"
      DEFB 128
      DEFM "GO T"
      DEFB 207
      DEFM "LIST"
      DEFB 128
      DEFM "LIS"
      DEFB 212
      DEFM "LINE"
      DEFB 128
      DEFM "LIN"
      DEFB 197
      DEFM "VERIFY"
      DEFB 128
      DEFM "VERIF"
      DEFB 217
      DEFB 255
────────────────────────────────────────────────────────────────
Адрес 12744. Таблица кодов ключевых слов TR-DOS.

12744 DEFB 248,248,239,239,247,247,207,207,210,210,230,230,209
      DEFB 209,213,213,190,190,244,244,211,212,175,175,165,165
      DEFB 228,228,170,170,255,255,208,208,236,236,240,240,202
      DEFB 202,214,214,0
────────────────────────────────────────────────────────────────
Адрес 12787. Проверка наличия системных переменных TR-DOS. Если
они есть, то флаг C будет сброшен, иначе установлен.

12787 LD HL,(23631);берем адрес области описателей каналов
      OR A         ;для правильного вычитания
      LD BC,23845  ;адрес области описателей каналов при наличии системных
                   ;переменных TR-DOS.
      SBC HL,BC    ;установка флага C
      RET          ;возврат
────────────────────────────────────────────────────────────────
Адрес 12800. Выбор формата диска. Устанавливает 23782 и 23784, а
в аккумуляторе возвращает тип дисковода.

12800 LD HL,12844  ;печать PRESS T FOR TURBO FORMAT,
      RST 24       ;OTHER KEY FOR FORMAT
      CALL 4178    ;ввод клавиши
      CP "T"       ;это "T"" ?
      JR Z,12823   ;если да, то быстрый формат
      LD HL,8121   ;адрес таблицы секторов для форматирования
      LD (23782),HL;обычного диска
      INC HL       ;адрес таблицы секторов для проверки
      LD (23784),HL;обычного диска
      JR 12833     ;продолжение
12823 LD HL,12890  ;адрес таблицы секторов для форматирования
      LD (23782),HL;быстрого диска
      INC HL       ;адрес таблицы секторов для проверки
      LD (23784),HL;быстрого диска
12833 RST 32       ;очистка низа экрана
      DEFW #0D6E
      LD HL,13074  ;печать HEAD 0 CYLINDER 0
      RST 24
      CALL 15889   ;берем тип дисковода
      RET          ;возврат
12844 DEFM "Press T for TURBO-FORMAT"
      DEFB 13
      DEFM "Other key for FORMAT"
      DEFB 0
12890 DEFB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1
────────────────────────────────────────────────────────────────
Адрес 12907. Запрос на повтор форматирования.

12907 LD A,13    ;перевод строки
      RST 16
      LD HL,12940;печать PRESS R FOR REPEAT FORMAT,OTHER KEY FOR
      RST 24     ;TR-DOS
      CALL 4178  ;ввод клавиши
      CP "R"     ;это R ?
      JR Z,12924 ;если нет, то завеpшение
      JP 467
12924 RST 32     ;очистка низа экрана
      DEFW #0D6E
12927 RST 32     ;берем номер нажатой клавиши
      DEFW #028E
      JR NZ,12927;если нажата бессмысленная комбинация клавиш, то повтор
      RST 32     ;берем код нажатой клавиши
      DEFW #031E
      JR C,12927 ;если что-то нажато, то повтор
      JP 7901    ;повтор форматирования
12940 DEFM "Press R for repeat FORMAT"
      DEFB 13
      DEFM "Other key for TR-D0S"
      DEFB 0
────────────────────────────────────────────────────────────────
Адрес 12987. Проверка дорожки по таблице секторов для обычного
диска. Установите 23768, обнулите 23766 и спозиционируйте голов-
ку.

12987 LD HL,8122   ;установка адреса таблицы секторов
      LD (23784),HL
      JP 8317      ;проверка дорожки
────────────────────────────────────────────────────────────────
Адрес 12996. Помещение аккумулятора в 23781 и очистка низа экра-
на.

12996 LD (23781),A
      RST 32
      DEFW #0D6E
      RET
────────────────────────────────────────────────────────────────
Адрес 13003. Сообщения HEAD и CYLINDER.

13003 DEFM "HEAD "
      DEFB 0
13009 DEFM "  CYLINDER "
      DEFB 0
────────────────────────────────────────────────────────────────
Адрес 13021. Печать номера дорожки на верхней стороне и формати-
рование ее. Номер дорожки поместите в A, выберите верхнюю сторону
диска и установите все для 8189. Используется также с адреса
13022 (Печать номера стороны и дорожки и форматирование ее; ус-
тановите все для 13021 плюс флаг C должен указывать номер сторо-
ны.

13021 OR A        ;нижняя сторона
13022 PUSH DE     ;сохранение номера дорожки
      PUSH AF     ;и стороны
      LD A,22     ;печать кода "AT"
      RST 16
      LD A,(23659);последняя строка нижнего экрана
      DEC A
      RST 16
      LD A,0      ;колонка 0
      RST 16
      LD HL,13003 ;печать HEAD
      RST 24
      POP AF      ;восстановление номера стороны
      LD A,"0"    ;печать номера стороны
      ADC A,0
      RST 16
      LD HL,13009 ;печать CYLINDER
      RST 24
      POP DE      ;восстановление
      PUSH DE     ;и снова сохранение номера дорожки
      LD C,E      ;перенос его в BC
      LD B,0
      CALL 7593   ;печать его
      POP DE      ;восстановление
      PUSH DE     ;и снова сохранение номера дорожки
      LD A,E      ;он меньше 10 ?
      CP 10
      JR NC,13067 ;если да, то
      LD A," "    ;печать пробела
      RST 16
13067 POP DE      ;восстановление номера дорожки
      JP 8189     ;форматирование дорожки и возврат
────────────────────────────────────────────────────────────────
Адрес 13071. Печать номера дорожки на нижней стороне и формати-
рование ее. Номер дорожки поместите в A, выберите нижнюю сторону
диска и установите все для 8189.

13071 SCF     ;нижняя сторона
      JR 13022;печать номера стороны и дорожки ,форматирование ее и возврат
────────────────────────────────────────────────────────────────
Адрес 13074. Сообщение HEAD 0 CYLINDER 0.

13074 DEFM "HEAD 0  CYLINDER 0"
      DEFB 0



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Эсперанто - справочник по языку Эсперанто.
Birthday - поздравления спектрумистов с днем рождения.
Программирование - Стрелочка.
Реклама - Реклама и объявления.
B.B.S. Новости - О работе B.B.S.'ок.

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