City
#32
04 октября 1999 |
|
Ликбез - полный дизассемблер ПЗУ (часть 25).
┌─────────────────────────────────────────────────┐ │ ************* ЛИКБЕЗ **************** │ └─────────────────────────────────────────────────┘ (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 5554. Проверка переменной 23781. Соответст- венно содержимому будет установлен флаг Z, а само содержимое будет в HL. 5554 LD HL,(23781);берем содержимое переменной 23781 LD A,H ;проверка его на 0 OR L RET ;возврат ─────────────────────────────────────────────────── Адрес 5560. Копирование секторов. Установите 23769, 23759, 23781, 23841, 23843 и 23771 5560 CALL 5554 ;все скопировали ? RET Z ;если да, то возврат LD A,(23841) ;первый проход ? OR A JR NZ,5595 ;если да, то диск-источник уже в дисководе LD HL,10505 ;печать BACKUP DISC CALL 9991 LD HL,10154 ;печать INSERT SOURCE DISC CALL 9991 5585 CALL 4178 ;ожидание нажатия Y CP "Y" JR NZ,5585 CALL 7583 ;очистка низа экрана 5595 CALL 5554 ;все скопировали ? RET Z ;если да, то возврат PUSH BC ;сохранение BC и количества сек- торов PUSH HL LD HL,23843 ;берем длину рабочей области в секторах LD C,(HL) LD B,0 POP HL ;восстановление количества сек- торов SBC HL,BC ;уменьшение количества секторов POP BC ;восстановление BC JP NC,5700 ;если рабочего пространства ма- ло, то это еще не конец LD BC,(23781);берем оставшееся количество се- кторов LD HL,0 ;все скопировали LD (23781),HL 5624 PUSH BC ;сохранение количества секторов LD HL,(23759);берем адрес рабочей области PUSH HL ;сохраняем его CALL 5336 ;настройка дисковода под диск- источник LD DE,(23771);берем адрес группы секторов на диске-источнике LD B,C CALL 7741 ;загрузка секторов LD HL,(23796);установка адреса следующей группы секторов LD (23771),HL;на диске-источнике CALL 7575 ;очистка экрана LD HL,10105 ;печать BACKUP DISC CALL 9991 LD HL,10117 ;печать INSERT DESTINATION DISC CALL 9991 5661 CALL 4178 ;ожидание нажатия Y CP "Y" JR NZ,5601 CALL 7583 ;очистка низа экрана LD A,(23841) ;первый проход ? OR A CALL NZ,5360 ;если да, то проверка наличия места на диске POP HL ;восстановление адреса рабочей области POP BC ;и количества копируемых секто- ров LD DE,(23779);берем адрес группы секторов на диске-приемнике LD B,C CALL 5348 ;настройка дисковода под диск- приемник CALL 7757 ;запись секторов LD HL,(23796);установка адреса следующей группы секторов LD (23779),HL;на диске-приемнике JP 5560 ;повтор 5700 LD (23871),HL;установка оставшегося количест- ва секторов PUSH HL ;сохранение его LD HL,(23843);берем длину рабочей области LD C,(HL) ;столько секторов будем копиро- вать LD B,0 POP HL ;восстановление оставшегося ко- личества секторов XOR A ;обнуление аккумулятора JP 5624 ;копирование пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября