City #33
17 октября 1999

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

┌─────────────────────────────────────────────────┐
│   ***************   ЛИКБЕЗ   ****************   │
└─────────────────────────────────────────────────┘

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

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

                  пpодолжение

Адрес 5715.  Проверка состояния файла.  Номер файла
задайте в регистре A. Возвращает Z, если файл стерт
и NZ,  если  нет, а  в A  будет первый символ имени
файла.
5715  CALL 5725   ;чтение описателя файла
      LD A,(23773);берем первый  символ имени файла
      CP 1        ;проверка состояния файла
      RET         ;возврат
───────────────────────────────────────────────────
Адрес 5724. Чтение описателя файла.  На входе в ре-
гистр A поместите номер файла. Описатель будет заг-
ружен  по  адресу 23781. Используется также с адре-
сов:
5725 - то же, что и 5724, но номер файла в регистре
C.
5726 - то же, что и 6121, но сохраняет номер файла.
5724  LD C,A   ;перенос номера файла в рег. C
5725  XOR A    ;переносим описатель из буфера в па-
                мять
5726  PUSH BC  ;сохранение номера файла
      CALL 6121;чтение сектора с описателем и пере-
                нос описателя
      POP BC   ;восстановление номера файла
      RET      ;возврат
───────────────────────────────────────────────────
Адрес 5732. запись информации о файле. Вход: описа-
тель расположить  по адресу  23773, а в аккумулятор
поместить номер файла.
5732  LD C,A   ;перенос в C номера файла
      CALL 5739;чтение   сектора и замена описателя
                файла в нем
      JP 7747  ;перезапись сектора
───────────────────────────────────────────────────
Адрес 5739. Чтение  в  буфер  сектора  с описателем
файла  и  замена  описателя. Поместите описатель по
адресу 23773.
5739  LD A,255;описатель перемещать из переменных в
               буфер
      JR 5726 ;то же, что и 6121, но  с сохранением
               BC
───────────────────────────────────────────────────
Адрес 5743. Резервирование места в памяти. Устанав-
ливает 23759 и 23843.
5743  LD A,255     ;WORKSP использовалась
      LD (23822),A
      CALL 5760    ;вычисление  размера   доступной
                    памяти
      LD HL,(23649);установка адреса рабочей облас-
                    ти
      LD (23759),HL
      JP 7715      ;выделение места в памяти и воз-
                    врат
───────────────────────────────────────────────────
Адрес 5760. Вычисление количества  свободной памяти
в секторах.
  Размер свободной памяти в байтах  будет в BC, а в
секторах - в 23843.
5760  RST 32      ;берем количество свободной памя-
                   ти в байтах
      DEFW #1F1A
      LD HL,65535
      SBC HL,BC
      LD A,H      ;свободно меньше 16 секторов ?
      CP 16
      JR NC,5775  ;если да, то
      LD A,17     ;будем выделять 16 секторов
5775  DEC A       ;1 сектор на всякий случай
      LD (23843),A;установка  размера свободной па-
                   мяти в секторах
      LD B,A      ;установка  размера свободной па-
                   мяти в байтах
      LD C,0
      RET         ;возврат
───────────────────────────────────────────────────
Адрес 5783. Помещает HL в 23767 и 23771 и прибавля-
ет 23786 (1 байт) к 23769 (2 байта).
5783  LD (23767),HL;установка 23767 и 23769
      LD (23771),HL
      LD DE,(23786);сложение 23786 и 23769
      LD HL,(23769)
      LD D,0
      ADD HL,DE
      LD (23769),HL
      RET          ;возврат

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




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

Похожие статьи:
WANTED - Розыск программ.
EMS - Наверное уже практически не осталось в Московской сетке человека, не слышавшего что-либо о новой терминальной программе.
Press - обзор свежей прессы: Explorer 1,2,3, IzhNews #0C, Body, Zx-Light, Inferno #2, ULTIMATUM#2, MADNESS #1, KoSME#0.

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