City
#30
25 сентября 1999 |
|
Ликбез - полный диассемблер ПЗУ (часть 23).
┌─────────────────────────────────────────────────┐ │ **************** ЛИКБЕЗ ***************** │ └─────────────────────────────────────────────────┘ (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 5201. Копирование файла на одном дисководе. Поместите описатель файла в 23773 и его часть в 23789 и установите 23793, 23841, 23843 и 23759. По- дпрограмма устанавливает 23739, 23769, 23770 и 23698. 5201 LD A,(23793) ;все скопировали ? OR A RET Z ;если да, то возврат LD A,(23841) ;первый проход ? OR A JR NZ,5231 ;если да, то диск - источник уже в дисководе CALL 7575 ;очистка экрана LD HL,10154 ;печать INSERT SOURCE DISC CALL 9991 5221 CALL 4178 ;ожидание клавиши Y CP "Y" JR NZ,5211 CALL 7583 ;очистка низа экрана 5231 LD A,(23793) ;все скопировали ? OR A RET Z ;если да, то возврат PUSH HL ;сохранение HL LD HL,23843 ;копируется часть файла SUB (HL) POP HL ;восстановление HL JR NC,5323 ;если еще не конец, то копирует- ся часть файла LD A,(23793) ;копируем остаток LD B,A XOR A ;скопировали все LD (23793),A 5252 PUSH BC ;сохранение количества копируе- мых секторов LD (23758),A ;обнуление 23758 LD HL,(23759);берем адрес рабочего простран- ства PUSH HL ;сохраняем его LD DE,(23794);берем адрес копируемого участка диска CALL 5336 ;настройка дисковода под диск- источник CALL 7741 ;загрузка секторов LD HL,(23796);установка адреса на диске сле- дующего сектора LD (23794),HL CALL 7575 ;очистка экрана LD HL,10119 ;печать INSERT DESTINATION DISC CALL 9991 5285 CALL 4178 ;ожидание клавиши Y CP "Y" JR NZ,5286 CALL 7583 ;очистка низа экрана LD A,(23841) ;первый проход ? OR A CALL NZ,5123 ;если да, то проверка наличия места на диске POP HL ;восстановление адреса рабочего пространства POP BC ;и количества копируемых секто- ров LD DE,(23787);берем адрес текущего участка диска CALL 5348 ;настройка дисковода под диск- приемник CALL 7757 ;запись секторов LD HL,(23797);установка адреса на диске сле- дующего сектора LD (23787),HL JP 5201 ;повтор 5323 LD (23793),A ;установка длины оставшейся час- ти файла PUSH HL ;сохранение HL LD HL,23843 ;берем длину рабочей области LD B,(HL) POP HL ;восстановление HL XOR A ;обнуление аккумулятора JP 5252 ;копирование ─────────────────────────────────────────────────── Адрес 5336. Помещение значения 23769 в переменную режима дисковода. Установите 23769. 5336 PUSH HL ;сохранение DE и HL PUSH DE CALL 15889 ;берем адрес переменной с типом дисковода LD A,(23769);берем тип дисковода из 23769 LD (HL),A ;установка типа дисковода POP DE ;восстановление DE и HL POP HL RET ;возврат ─────────────────────────────────────────────────── Адрес 5348. Помещение значения 23770 в переменную режима дисковода. Установите 23770. 5348 PUSH HL ;сохранение DE и HL PUSH DE CALL 15889 ;берем адрес переменной с типом дисковода LD A,(23770);берем тип дисковода из 23769 LD (HL),A ;установка типа дисковода POP DE ;восстановление DE и HL POP HL RET ;возврат пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября