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одолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября