City #44
19 мая 2000

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

╔═════════════════════════════════════════════════╗
║.................................................║
║.....     ..................       ..............║
║....  @@@ ................   @@@@  ..............║
║...  @  @  ...............   @   ................║
║..  @   @                     @                  ║
║..  @   @  @   @   @   @@    @@@@    @@@    @@@  ║
║..  @   @  @   @   @  @  @  @    @  @   @  @   @ ║
║..  @   @  @   @   @@@      @    @ @@   @  @   @ ║
║    @   @  @   @   @  @     @    @@ @@@@  @    @ ║
║ @  @   @  @   @  @@   @  @ @    @  @    @   @@  ║
║  @@     @@ @@@ @@ @    @@   @@@@    @@@@      @ ║
║                                           @@@ @ ║
║........................................  @    @ ║
║........................................   @@@@  ║
║.................................................║
╚═════════════════════════════════════════════════╝

(c) П.Федин

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

Адрес 7248. Обработка ошибки FILE EXISTS.
7248  LD HL,10693;адрес сообщения FILE EXISTS
      LD A,2     ;код ошибки - 2
      JR 7242    ;обработка ошибок
───────────────────────────────────────────────────
Адрес 7255. Установка имени файла. Установите 23645
на имя файла. Будет выбран дисковод  и  установлена
переменная 23773.
7255  LD HL,23773;адрес переменной с именем файла
      LD B,8     ;ее длина - 8 байтов
7260  LD (HL)," ";очистка ее
      INC HL
      DJNZ 7620
      CALL 1329  ;снятие строки со стека  калькуля-
                  тора
      EX DE,HL
      CALL 7297  ;установка дисковода
      LD A,C     ;имя файла - пустая строка ?
      OR A
Ошибка в программе!!! Здесь должно быть OR B.
      JP Z,7450  ;если да, то ошибка
      CP 9       ;в имени файла больше 8 символов
      JR Z,7283  ;если да, то обрезаем его
      LD C,8
Внимание!!! Это будет работать неправильно при дли-
не имени файла больше 255 символов.
7283  LD A,(HL)  ;берем первый символ имени файла
      CP " "     ;его код меньше 32 ?
      JP C,7450  ;если да, то ошибка
      LD DE,23773;адрес переменной с именем файла
      PUSH BC    ;сохранение длины имени
      LDIR       ;установка имени
      POP BC     ;восстановление длины имени
      RET        ;возврат
───────────────────────────────────────────────────
Адрес 7297. Установка дисковода для операции с фай-
лом. В HL поместите начало имени файла в ASCII пре-
дставлении, а в BC - его  длину. HL установится  на
начало имени без дисковода, а в BC будет его длина.
7297  INC HL      ;берем адрес  следующего  символа
                   имени
      LD A,(HL)   ;берем этот символ
      CP ":"      ;это двоеточие ?
      JR NZ,7230  ;если нет, то активизация  диско-
                   вода по умолчанию
      DEC HL      ;берем адрес имени дисковода
      LD A,(HL)   ;берем имя дисковода
      CALL 1316   ;преобразование имени дисковода в
                   его номер
      PUSH BC     ;сохранение длины имени файла
      PUSH HL     ;и адреса имени дисковода
      CALL 15819  ;выбор дисковода
      POP HL      ;восстановление адреса имени дис-
                   ковода
      POP BC      ;и длины имени файла
      DEC BC      ;отсекли 2 символа
      DEC BC
      INC HL      ;берем адрес имени файла без дис-
                   ковода
      INC HL
      RET         ;возврат
7320  DEC HL      ;берем адрес имени файла
      LD A,(23833);берем дисковод по умолчанию
      PUSH BC     ;сохранение длины и адреса  имени
                   файла
      PUSH HL
      CALL 15819  ;выбор дисковода
      POP HL      ;восстановление   длины  и адреса
                   имени файла
      POP BC
      RET         ;возврат

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



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

Преамбула - наконец-то удалось достать прошивку v. 4.01 для ПрофПЗУ.

Железо - RS-232 Интерфейс для SPECTRUM компьюетров.

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

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

Бук - ПАПАХИ HА БАШHЯХ.

Beatles - Ticket to Ride.

Наш смак - окрошка сборная мясная.

Реклама - двигатель торговли.


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

Похожие статьи:
Этюды - Печать символа, увеличенного в 8 раз. Программа "наливания" экрана. Процедура гашения экрана по точкам. Очистка экрана как в Terminator'е. Поиск последовательности символов в памяти. Система перекодировки символьного набора.
Юмор - Сказка о царе Салтане.
Софт - Тест интеллекта по Айзенку - теперь и на Спектруме!

В этот день...   16 июля