|
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одолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3