City #49
20 октября 2000

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

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

Адрес 7726. Удаление области памяти. В HL поместите начало об-
ласти, в DE - длину.
7726  RST 32
      DEFW #19E8
      RET
────────────────────────────────────────────────────────────────
Адрес 7734. Загрузка регистра дорожки. Установите 23761. При вы-
ходе по ошибке в 23831 помещается 255. Можно использовать с адр-
еса 7738 для прямого вывода в порт 63.
7734  CALL 16050;определение номера дорожки, на которой стоит головка
      LD A,H    ;установка регистра дорожки
7738  OUT (63),A
      RET       ;возврат
────────────────────────────────────────────────────────────────
Адрес 7741. Загрузка секторов. Вход: в HL - адрес загрузки,
в D - номер дорожки, в E - номер сектора, в B - кол-во секторов.
7741  XOR A  ;признак загрузки
      JR 7780;переход к подпрограмме загрузки / записи секторов
────────────────────────────────────────────────────────────────
Адрес 7744. Запись информации о файле. На входе в C должен быть
номер файла. Используется также с адресов:
7747 - запись сектора из буфера. Вход: в 23796 установите номер
сектора+1, а в 23797 - номер дорожки.
7757 - запись секторов. В HL - адрес, в D - номер дорожки, в E -
номер сектора, в B - кол-во секторов.
7780 - загрузка / запись секторов. Предварительные установки
как и для предыдущей подпрограммы плюс в A установите 0 для заг-
рузки или что-нибудь другое для записи.
7744  CALL 5739    ;чтение сектора с описателем файла и замена описателя
7747  LD DE,(23796);берем номер сектора для записи
      DEC DE
      LD B,1       ;записывать 1 сектор
      LD HL,23845  ;записывать будем из буфера
7757  PUSH HL      ;сохраним адрес секторов на диске и в памяти
      PUSH DE
      CALL 15889   ;берем тип дисковода
      BIT 7,(HL)   ;он 40-дорожечный ?
      JR Z,7776    ;если да, то записывать можно
      BIT 0,(HL)   ;используем 40 дорожек на 80-дорожечном ?
      JR NZ,7776   ;если нет, то записывать можно
      LD HL,10712  ;адрес сообщения READ ONLY
      JP 7465      ;переход на обработку ошибок
Внимание, ошибка!!! В аккумуляторе забыли установить код ошибки.
7776  POP DE       ;восстановление адресов секторов
      POP HL
7778  LD A,255     ;признак записи
7780  LD (23758),A ;установка признака операции
7783  LD (23796),DE;установка адреса секторов на диске
      PUSH BC      ;сохранение количества секторов
      PUSH HL      ;и адреса загрузки / записи
      CALL 7734    ;чтение индексной области дорожки
      POP HL       ;восстановление адреса загрузки / записи
      POP BC       ;и количества секторов
      XOR A        ;количество секторов равно 0 ?
      OR B
      RET Z        ;если да, то возврат
7797  PUSH BC      ;сохраняем адрес и кол-во секторов
      PUSH HL
      CALL 16134   ;установка адреса загрузки / записи секторов
      LD A,(23796) ;установка номера сектора
      CALL 16130
      LD A,(23797) ;позиционирование головки на дорожку
      CALL 15971
      LD A,(23758) ;берем флаг операции
      OR A         ;загрузка?
      PUSH AF
      CALL Z,16142 ;если да, то загрузка сектора
      POP AF
      CALL NZ,16138;иначе запись сектора
      POP HL       ;берем адрес следующего сектора
      LD DE,256
      ADD HL,DE
      PUSH HL      ;сохраняем его
      LD A,16      ;на дорожке 16 секторов
      LD HL,23796
      INC (HL)     ;следующий сектор
      CP (HL)      ;конец дорожки ?
      JR NZ,7847   ;если да, то номер следующего сектора 0
      LD (HL),0
      LD HL,23797  ;и берем следующую дорожку
      INC (HL)
7847  POP HL       ;восстановление адреса следующего сектора
      POP BC       ;и количества секторов
      DJNZ 7797    ;если не все, то повтор
      RET          ;возврат

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



Other articles:


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

Similar articles:
Poems - People are not made of steel.
TOP 20 - Best 20 games on the radio market Tsarina.
charts result - Poll Results: best musician, best group, best artist, etc

В этот день...   21 November