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

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



               ПОЛНЫЙ ДИЗАССЕМБЛЕР ПЗУ TR-DOS 5.04T

================================================================
Адрес 0. Полная инициализация системы.

0     DI         ;запрет прерываний
      LD DE,65535;адрес вершины памяти
      LD A,7     ;цвет бордюра - 7
      JR 9       ;инициализация системы
----------------------------------------------------------------
Адрес 8. Инициализация системы. В DE поместите адрес вершины па-
мяти, в A - 7 и запретите прерывания. Используется также с адре-
са 9.

8     NOP
9     OUT (254),A;установка цвета бордюра
      LD A,63    ;число для регистра I
      JR 19      ;инициализация системы
----------------------------------------------------------------
Адрес 16. Переход к подпрограмме печати символа из регистра A.

16    JP 15746
----------------------------------------------------------------
Адрес 19. Инициализация системы. В DE поместите адрес вершины
памяти, установите белый бордюр, поместите в A старший байт низ-
шего адреса памяти и запретите прерывания.

19    LD I,A;загрузка регистра I
      JP 27 ;инициализация системы
----------------------------------------------------------------
Адрес 24. Переход к подпрограмме печати строки.

24    JP 9991
----------------------------------------------------------------
Адрес 27. То же, что и 36.

27    NOP
      NOP
      JR 36
----------------------------------------------------------------
Адрес 32. Переход к подпрограмме вызова подпрограмм из ПЗУ бей-
сика. Адрес вызываемой подпрограммы поместите в двух байтах пос-
ле команды RST 32. Например:
RST 32
DEFW #0D6B

32    JP 12146
----------------------------------------------------------------
Адрес 36. Инициализация системы. В DE поместите адрес вершины
памяти, установите белый бордюр, поместите в A старший байт низ-
шего адреса памяти и запретите прерывания.

36    LD H,D;переброска адреса вершины памяти в HL
      LD L,E
      JR 43 ;инициализация системы
----------------------------------------------------------------
Адрес 40. Выборка адреса текущего канала с учетом сдвига, задан-
ного в регистре C.

40    JP 8995
----------------------------------------------------------------
Адрес 43. Инициализация системы. В DE и HL поместите адрес вер-
шины памяти, установите белый бордюр, поместите в A старший байт
низшего адреса памяти и запретите прерывания.

43    LD (HL),2;помещение по очередному адресу числа 2
      DEC HL   ;следующий адрес
      CP H     ;конец памяти ?
      JR NZ,43 ;если нет, то повтор
      JR 58    ;инициализация системы
----------------------------------------------------------------
Адрес 56. Обработка маскируемого прерывания.

56    EI
      RET
----------------------------------------------------------------
Адрес 58. Инициализация системы. В DE поместите адрес веpшины
памяти в HL - адрес дна, установите белый бордюр, заполните
обозначенную область памяти байтом 2 и запретите прерывания.

58    OR A         ;сброс флага C
      SBC HL,DE    ;конец области памяти ?
      ADD HL,DE
      INC HL       ;следующий байт
      JR NC,71     ;если все, то установка системных переменных
      DEC (HL)     ;уменьшение байта на 1
      JR Z,71      ;если получился 0, то ОЗУ здесь не работает
      DEC (HL)     ;уменьшение байта на 1
      JR Z,58      ;если получился 0, то ОЗУ в порядке
71    DEC HL       ;последний исправный байт
      LD (23872),HL;установка P_RAMT
      LD DE,16047  ;адрес символов для UDG
      LD BC,168    ;длина UDG - 168 байтов
      LD A,E
      EX DE,HL     ;переброска адреса символов для UDG в HL
      LD SP,24576  ;установка временного стека
      LD (24320),HL;сохранение адреса символов для UDG
      LD HL,121    ;возвращаться в 121
      PUSH HL      ;помещение его на стек
      LD HL,15663  ;адрес переключателя ПЗУ на TR-DOS
      PUSH HL      ;помещение его на стек
      LD HL,#B8ED  ;код команды LDDR
      JR 105       ;установка UDG
----------------------------------------------------------------
Адрес 102. Подпрограмма обработки немаскируемого прерывания.

102   JP 10838
----------------------------------------------------------------
Адрес 105. Выполнение любой команды процессора. Поместите в HL
коды команды, установите регистры (24320 вместо HL) и поместите
в HL коды команды.

105   LD (24336),HL;помещение кодов команды в память
      PUSH AF      ;сохранение AF
      LD A,201     ;код команды RET
      LD (24338),A ;помещение его в память
      POP AF       ;восстановление AF
      LD HL,(24320);берем адpес символов для UDG
      JP 24336     ;выполнение команды и возврат
----------------------------------------------------------------
Адрес 121. Инициализация системы. Установите P_RAMT, знакогене-
ратор пользователя, белый бордюр, поместите в DE адрес начала
знакогенератора минус 1 и запретите прерывания.

121   EX DE,HL     ;загрузка адреса UDG в HL
      INC HL
      LD (23675),HL;установка переменной UDG
      DEC HL       ;следующий адрес
      LD BC,7744   ;установка RASP и PIP
      LD (23608),BC
      LD (23730),HL;установка RAMTOP
      LD HL,15360  ;установка CHARS
      LD (23606),HL
      LD HL,(23730);берем адрес RAMTOP
      LD (HL),62   ;признак конца стека GO SUB
      DEC HL       ;следующий адрес
      LD SP,HL     ;установка постоянного стека
      DEC HL       ;установка ERR_SP
      DEC HL
      LD (23613),HL
      LD DE,4867   ;адрес подпрограммы обработки ошибок
      PUSH DE      ;установка его
      IM 1         ;установка первого режима прерываний
      LD IY,23610  ;установка регистра IY
      LD HL,23734  ;установка CHANS
      LD (23631),HL
      LD DE,5551   ;адрес области описателей каналов в ПЗУ бейсика
      LD BC,21     ;ее длина - 21 байт
      EX DE,HL
      CALL 279    ;перенос области описателей каналов в ОЗУ
      EX DE,HL
      DEC HL       ;установка DATADD
      LD (23639),HL
      INC HL       ;следующий адрес
      LD (23635),HL;установка PROG
      LD (23627),HL;установка VARS
      LD (HL),128  ;конец области
      INC HL       ;следующий адрес
      LD (23641),HL;установка E_LINE
      LD (HL),13   ;конец строки
      INC HL       ;следующий адрес
      LD (HL),128  ;конец области
      INC HL       ;следующий адрес
      LD (23649),HL;установка WORKSP
      LD (23651),HL;установка STKBOT
      LD (23653),HL;установка STKEND
      LD A,56      ;атрибуты экрана
      LD (23693),A ;установка ATTR_P
      LD (23695),A ;установка ATTR_T
      LD (23624),A ;установка BORDER
      LD HL,1315   ;установка REPDEL и REPPER
      LD (23561),HL
      DEC (IY-58)  ;клавиши не нажаты
      DEC (IY-54)
      LD HL,5574   ;адрес таблицы STRMS в ПЗУ бейсика
      LD DE,23568  ;адрес переменной STRMS
      LD BC,24     ;длина таблицы - 24 байта
      CALL 279     ;перенос таблицы в ОЗУ
      SET 1,(IY+1) ;открыт поток 3
      LD HL,23746  ;помещение команды RET в ОЗУ
      LD (HL),201

Внимание!!! Системных переменных TR-DOS пока еще нет и это пор-
тит память.

      RST 32       ;инициализация буфера принтера и экрана
      DEFW #0EDF
      LD HL,23658  ;буфер принтера использовался
      LD (HL),2
      LD HL,4747   ;возвращаться в 4747
      PUSH HL
      LD A,170     ;выполнять команду RUN"boot"
      LD (23296),A
      EI           ;разрешение прерываний
      JP 15665     ;вход в TR-DOS
----------------------------------------------------------------
Адрес 279. Выполнение команды LDIR. Установите HL, DE и BC и по-
местите байт 201 по адресу 24338.

279   LD (24320),HL;сохранение HL
      LD HL,15663  ;адрес переключателя ПЗУ на TR-DOS
      PUSH HL      ;помещение его на стек
      LD HL,#B0ED  ;коды команды LDIR
      LD (24336),HL;помещение команды в ОЗУ
      LD HL,(24320);восстановление HL
      JP 24336     ;выполнение команды и возврат



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Список BBS - Список работающий BBS.
Анкета - А теперь пришло время для публикации некоторых пришедших в редакцию анкет.
Разное - о компьютерных проблемах: ПРОФИ и СКОРПИОН, IBM...
Экспертиза - подробно рассмотрена игра "Hostages". Вы участник операции "Юпитер".
Краткие новости - 15-го августа прошла третья по счету поинтовка

В этот день...   21 ноября