City
#49
20 октября 2000 |
|
Ликбез - ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS 5.04 (5.03)
@@@ @@@@ @ @ @ @ @ @ @ @ @ @ @ @@ @@@@ @@@ @@@ @ @ @ @ @@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @@@@ @ @ @ @ @ @ @ @@ @ @ @ @ @ @ @@ @@ @@ @@@ @@ @ @@ @@@@ @@@@ @ @@@ @ @ @ (c) П.Федин @@@@ ПОЛНОЕ ОПИСАНИЕ + ПОЛНЫЙ ДИЗАССЕМБЛЕР ПЗУ TR-DOS 5.04 (5.03) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ, КТО ХОЧЕТ ИМИ СТАТЬ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ продолжение Адрес 7726. Удаление области памяти. В HL поместите начало об- ласти, в DE - длину. 7726 RST 32 DEFW #19E8 RET ──────────────────────────────────────────────────────────────── Адрес 7734. Загрузка регистра дорожки. Установите 23761. При вы- ходе по ошибке в 23831 помещается 255. Можно использовать с адр- еса 7738 для прямого вывода в порт 63. 7734 CALL 16050;определение номера дорожки, на которой стоит головка LD A,H ;установка регистра дорожки 7738 OUT (63),A RET ;возврат ──────────────────────────────────────────────────────────────── Адрес 7741. Загрузка секторов. Вход: в HL - адрес загрузки, в D - номер дорожки, в E - номер сектора, в B - кол-во секторов. 7741 XOR A ;признак загрузки JR 7780;переход к подпрограмме загрузки / записи секторов ──────────────────────────────────────────────────────────────── Адрес 7744. Запись информации о файле. На входе в C должен быть номер файла. Используется также с адресов: 7747 - запись сектора из буфера. Вход: в 23796 установите номер сектора+1, а в 23797 - номер дорожки. 7757 - запись секторов. В HL - адрес, в D - номер дорожки, в E - номер сектора, в B - кол-во секторов. 7780 - загрузка / запись секторов. Предварительные установки как и для предыдущей подпрограммы плюс в A установите 0 для заг- рузки или что-нибудь другое для записи. 7744 CALL 5739 ;чтение сектора с описателем файла и замена описателя 7747 LD DE,(23796);берем номер сектора для записи DEC DE LD B,1 ;записывать 1 сектор LD HL,23845 ;записывать будем из буфера 7757 PUSH HL ;сохраним адрес секторов на диске и в памяти PUSH DE CALL 15889 ;берем тип дисковода BIT 7,(HL) ;он 40-дорожечный ? JR Z,7776 ;если да, то записывать можно BIT 0,(HL) ;используем 40 дорожек на 80-дорожечном ? JR NZ,7776 ;если нет, то записывать можно LD HL,10712 ;адрес сообщения READ ONLY JP 7465 ;переход на обработку ошибок Внимание, ошибка!!! В аккумуляторе забыли установить код ошибки. 7776 POP DE ;восстановление адресов секторов POP HL 7778 LD A,255 ;признак записи 7780 LD (23758),A ;установка признака операции 7783 LD (23796),DE;установка адреса секторов на диске PUSH BC ;сохранение количества секторов PUSH HL ;и адреса загрузки / записи CALL 7734 ;чтение индексной области дорожки POP HL ;восстановление адреса загрузки / записи POP BC ;и количества секторов XOR A ;количество секторов равно 0 ? OR B RET Z ;если да, то возврат 7797 PUSH BC ;сохраняем адрес и кол-во секторов PUSH HL CALL 16134 ;установка адреса загрузки / записи секторов LD A,(23796) ;установка номера сектора CALL 16130 LD A,(23797) ;позиционирование головки на дорожку CALL 15971 LD A,(23758) ;берем флаг операции OR A ;загрузка? PUSH AF CALL Z,16142 ;если да, то загрузка сектора POP AF CALL NZ,16138;иначе запись сектора POP HL ;берем адрес следующего сектора LD DE,256 ADD HL,DE PUSH HL ;сохраняем его LD A,16 ;на дорожке 16 секторов LD HL,23796 INC (HL) ;следующий сектор CP (HL) ;конец дорожки ? JR NZ,7847 ;если да, то номер следующего сектора 0 LD (HL),0 LD HL,23797 ;и берем следующую дорожку INC (HL) 7847 POP HL ;восстановление адреса следующего сектора POP BC ;и количества секторов DJNZ 7797 ;если не все, то повтор RET ;возврат продолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября