|
City
#27
09 сентября 1999 |
|
Ликбез - полный дизассемблер ПЗУ (часть 20).

┌─────────────────────────────────────────────────┐
│ ************* ЛИКБЕЗ **************** │
└─────────────────────────────────────────────────┘
(c) П.Ю.Федин
╔═════════════════════════════════════════════════╗
║ ║
║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║
║ ║
║ TR-DOS 5.04T (5.03) ║
║ ║
║ ДЛЯ ПРОФЕССИОНАЛОВ, ║
║ ║
║ А ТАКЖЕ ДЛЯ ТЕХ, ║
║ ║
║ КТО ХОЧЕТ ИМИ СТАТЬ. ║
║ ║
╚═════════════════════════════════════════════════╝
пpодолжение
Адрес 4558. Выполнение команды LIST. Установите
23825 и 23611.
4558 CALL 1067 ;проверка второго символа строки
LD BC,2 ;по умолчанию печатать в поток 2
LD (23771),BC
JR Z,4163 ;если второй символ строки ENTER
, то вывод каталога
CP "#" ;если второй символ строки "#" ?
JR NZ,4600 ;если нет, то установка дисково-
да
LD (23645),HL;установка CH_ADD
CALL 7691 ;прием номера потока
CALL 7564 ;берем текущий символ
CP 13 ;это ENTER ?
JR Z,4163 ;если да, то вывод каталога
CP "," ;это "," ?
JP NZ,7450 ;если нет, то ошибка
CALL 7722 ;следующий символ
CALL 7613 ;прием имени дисковода на стек
калькулятора
JR 4603 ;установка дисковода
4600 CALL 7647 ;установка CH_ADD и прием имени
дисковода на стек калькулятора
4603 CALL 7541 ;если идет проверка на синтаксис
, то возврат
CALL 7605 ;снятие имени дисковода со стека
калькулятора
EX DE,HL ;переброска его адреса в HL
CALL 7297 ;установка дисковода
4613 CALL 7541 ;если идет проверка на синтаксис
, то возврат
LD A,(23798) ;загрузка имени дисковода в23801
LD (23801),A
CALL 1029 ;настройка на диск
LD A,(23771) ;берем номер потока
CP 2 ;это 2 ?
PUSH AF ;сохраняем его
CALL Z,7555 ;если да, то очистка экрана
POP AF ;восстановление номера потока
CP 17 ;он больше 16 ?
JP NC,7450 ;если да,то ошибка
CALL 7556 ;открытие потока
LD A,255 ;буфер не убирать, память не из-
менять
LD (23800),A
CALL 4433 ;выделение памяти в рабочей об-
ласти
LD HL,24070 ;начало описателя диска в буфере
LD DE,(23759);берем адрес WORKSP
LD BC,32 ;длина описателя диска
LDIR ;сохранение описателя диска
CALL 1000 ;загрузка в буфер сектора 0 до-
рожки 0
LD HL,23845 ;адрес буфера
PUSH HL ;сохранение его
4670 LD HL,4275 ;адрес сообщения TITLE:
PUSH BC ;сохранение BC
RST 24 ;печать TITLE:
LD HL,(23759);берем адрес WORKSP
LD BC,20 ;20-й байт
ADD HL,BC
RST 24 ;печать имени диска
LD HL,4282 ;печать DISC DRIVE:
RST 24
LD A,(23798) ;берем номер дисковода
ADD A,"A" ;вычисление имени дисковода
CALL 15746 ;печать его
CALL 15744 ;перевод строки
LD HL,(23759);3-й байт описателя диска
LD BC,3
ADD HL,BC
LD A,(HL) ;берем количество файлов на дис-
ке
LD HL,(23759);19-й байт
LD BC,19
ADD HL,BC
SUB (HL) ;вычисление количества нестертых
файлов
PUSH HL ;сохранение адреса 19-го байта
описателя диска
CALL 7587 ;печать количества нестертых
файлов
LD HL,4266 ;печать FILE(S)
RST 24
LD HL,(23759);2-й байт описателя диска
LD BC,2
ADD HL,BC
LD A,(HL) ;берем тип диска
LD HL,4302 ;адрес сообщения 40 TRACKS,S.SI-
DE
CP 25 ;это 25 ?
JR Z,4754 ;если да, то печать сообщения
LD HL,4322 ;адрес сообщения 80 TRACKS,S.SI-
DE
CP 24 ;это 24 ?
JR Z,4754 ;если да, то печать сообщения
LD HL,4342 ;адрес сообщения 40 TRACKS,D.SI-
DE
CP 23 ;это 23 ?
JR Z,4754 ;если да, то печать сообщения
LD HL,4362 ;адpес сообщения 80 TRACKS,D.SI-
DE
пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
Несколько слов - "многие из вас, наверняка, думают, что этот номер - тот самый
обещанный номер 4"...
В этот день... 26 октября