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

╔═════════════════════════════════════════════════╗
║.................................................║
║..... .................. ..............║
║.... @@@ ................ @@@@ ..............║
║... @ @ ............... @ ................║
║.. @ @ @ ║
║.. @ @ @ @ @ @@ @@@@ @@@ @@@ ║
║.. @ @ @ @ @ @ @ @ @ @ @ @ @ ║
║.. @ @ @ @ @@@ @ @ @@ @ @ @ ║
║ @ @ @ @ @ @ @ @@ @@@@ @ @ ║
║ @ @ @ @ @ @@ @ @ @ @ @ @ @@ ║
║ @@ @@ @@@ @@ @ @@ @@@@ @@@@ @ ║
║ @@@ @ ║
║........................................ @ @ ║
║........................................ @@@@ ║
║.................................................║
╚═════════════════════════════════════════════════╝
(c) П.Федин
ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5.04T (5.03) ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
КТО ХОЧЕТ ИМИ СТАТЬ
~~~~~~~~~~~~~~~~~~~
продолжение
Адрес 7248. Обработка ошибки FILE EXISTS.
7248 LD HL,10693;адрес сообщения FILE EXISTS
LD A,2 ;код ошибки - 2
JR 7242 ;обработка ошибок
───────────────────────────────────────────────────
Адрес 7255. Установка имени файла. Установите 23645
на имя файла. Будет выбран дисковод и установлена
переменная 23773.
7255 LD HL,23773;адрес переменной с именем файла
LD B,8 ;ее длина - 8 байтов
7260 LD (HL)," ";очистка ее
INC HL
DJNZ 7620
CALL 1329 ;снятие строки со стека калькуля-
тора
EX DE,HL
CALL 7297 ;установка дисковода
LD A,C ;имя файла - пустая строка ?
OR A
Ошибка в программе!!! Здесь должно быть OR B.
JP Z,7450 ;если да, то ошибка
CP 9 ;в имени файла больше 8 символов
JR Z,7283 ;если да, то обрезаем его
LD C,8
Внимание!!! Это будет работать неправильно при дли-
не имени файла больше 255 символов.
7283 LD A,(HL) ;берем первый символ имени файла
CP " " ;его код меньше 32 ?
JP C,7450 ;если да, то ошибка
LD DE,23773;адрес переменной с именем файла
PUSH BC ;сохранение длины имени
LDIR ;установка имени
POP BC ;восстановление длины имени
RET ;возврат
───────────────────────────────────────────────────
Адрес 7297. Установка дисковода для операции с фай-
лом. В HL поместите начало имени файла в ASCII пре-
дставлении, а в BC - его длину. HL установится на
начало имени без дисковода, а в BC будет его длина.
7297 INC HL ;берем адрес следующего символа
имени
LD A,(HL) ;берем этот символ
CP ":" ;это двоеточие ?
JR NZ,7230 ;если нет, то активизация диско-
вода по умолчанию
DEC HL ;берем адрес имени дисковода
LD A,(HL) ;берем имя дисковода
CALL 1316 ;преобразование имени дисковода в
его номер
PUSH BC ;сохранение длины имени файла
PUSH HL ;и адреса имени дисковода
CALL 15819 ;выбор дисковода
POP HL ;восстановление адреса имени дис-
ковода
POP BC ;и длины имени файла
DEC BC ;отсекли 2 символа
DEC BC
INC HL ;берем адрес имени файла без дис-
ковода
INC HL
RET ;возврат
7320 DEC HL ;берем адрес имени файла
LD A,(23833);берем дисковод по умолчанию
PUSH BC ;сохранение длины и адреса имени
файла
PUSH HL
CALL 15819 ;выбор дисковода
POP HL ;восстановление длины и адреса
имени файла
POP BC
RET ;возврат
продолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 3 ноября