|
City
#42
25 марта 2000 |
|
Ликбез - полный дизассемблер ПЗУ (часть 32).

╔═════════════════════════════════════════════════╗
║.................................................║
║..... .................. ..............║
║.... @@@ ................ @@@@ ..............║
║... @ @ ............... @ ..............║
║.. @ @ ............... @ ................║
║.. @ @ @ ║
║.. @ @ @ @ @ @@ @@@@ @@@ @@@ ║
║.. @ @ @ @ @ @ @ @ @ @ @ @ @ ║
║.. @ @ @ @ @@@ @ @ @@ @ @ @ ║
║ @ @ @ @ @ @ @ @@ @@@@ @ @ ║
║ @ @ @ @ @ @@ @ @ @ @ @ @ @@ ║
║ @@ @@ @@@ @@ @ @@ @@@@ @@@@ @ ║
║ @@@ @ ║
║........................................ @ @ ║
║....................................... @ @ ║
║........................................ @@@@ ║
║.......................................... ║
║.................................................║
╚═════════════════════════════════════════════════╝
(c) П.Федин
ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5.04T (5.03) ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
КТО ХОЧЕТ ИМИ СТАТЬ
~~~~~~~~~~~~~~~~~~~
пpодолжение
6925 CALL 7541 ;если проверка на синтаксис, то
возврат
CALL 7564 ;берем текущий символ
LD HL,23781
CP 228 ;это DATA ?
JR Z,6956 ;если да, то запись массива
CP 13 ;это ENTER ?
JP NZ,7450 ;если нет, то ошибка
LD (HL),"B" ;расширение B
CALL 6846 ;проверка наличия такого файла и
свободного места в каталоге
CALL 7708 ;удаление из командной строки
пятибайтных чисел
6951 CALL 7134 ;установка начала и длины файла
JP 6995 ;запись файла
6956 LD (HL),"D" ;расширение D
CALL 6846 ;проверка наличия файла и места
в каталоге
CALL 7183 ;установка начала и длины файла
JR NC,6995 ;если все в порядке, то запись
файла
JP C,7450 ;иначе ошибка
6969 CALL 7653 ;принятие начала и длины файла
LD HL,(23769);установка начала файла
LD (23767),HL
LD HL,(23771);установка длины файла
LD (23769),HL
6984 CALL 7541 ;если проверка на синтаксис, то
возврат
LD A,"C" ;расширение C
LD (23871),A
CALL 6846 ;проверка наличия файла и места
в каталоге
6995 CALL 7001 ;запись файла
JP 1385 ;запись информации о нем
───────────────────────────────────────────────────
Адрес 7001. Запись файла. Установите 23761, 23767,
23769 и 23771, а в буфер загрузите сектор 8 дорож-
ки 0.
7001 LD HL,(23767);установка начала файла
LD (23782),HL
EX DE,HL ;переброска его в DE
LD HL,(23769);берем длину файла
LD A,L ;она равна 0 ?
OR H
JP Z,7450 ;если да, то ошибка
LD A,L ;вычисление длины файла в секто-
рах
OR A
JR Z,7021
INC H
7021 LD A,H ;установка длины файла в секто-
рах
LD (23786),A
LD E,A ;вычисление нового количества
свободных секторов
LD D,0
LD HL,(24074)
SBC HL,DE
JP C,7237 ;если на диске нет места, то
ошибка
PUSH HL ;сохранение нового количества
свободных секторов
LD HL,(23641);добавление к программе на бей-
сике байта 170
LD (HL),170
INC HL
LD DE,(23761);и номера строки автостарта
LD (HL),E
INC HL
LD (HL),D
LD HL,(23771);установка длины файла
LD (23784),HL
LD HL,(24070);установка адреса файла на дис-
ке
LD (23787),HL
EX DE,HL ;переброска его в DE
LD HL,(23782);берем начало файла
LD A,(23786) ;берем его длину в секторах
LD B,A
CALL 7757 ;запись файла
LD HL,(23796);берем адрес свободного прост-
ранства диска
PUSH HL ;сохраняем его
CALL 1021 ;загрузка в буфер сектора 8 до-
рожки 0
POP HL ;восстановление адреса свободно-
го места на диске
LD (24070),HL;установка его
POP HL ;восстановление количества сво-
бодных секторов
LD (24074),HL;установка его
LD HL,(24073);берем номер файла
LD A,(HL)
LD (23838),A ;установка его
INC (HL) ;записали еще 1 файл
PUSH HL ;сохранение адреса с кол-вом
файлов на диске
CALL 7747 ;перезапись сектора 8 дорожки 0
POP HL ;восстановление адреса с кол-
вом файлов
LD C,(HL) ;берем номер записанного файла
DEC C
LD A,(23781) ;расширение файла B ?
CP "B"
CALL Z,7112 ;если да, то установка длины
программы без переменных
RET ;возврат
п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