City
#31
01 октября 1999 |
|
Ликбез - полный диассемблер ПЗУ (часть 25).
┌─────────────────────────────────────────────────┐ │ ************** ЛИКБЕЗ ***************** │ └─────────────────────────────────────────────────┘ (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Адрес 5360. Проверка наличия места на диске-прием- ике для команды COPY B. Установите 23775 и помести- те в дисковод диск-приемник. Устанавливает 23770, 23783, 23773 и обнуляет 23841. 5360 XOR A ;обнуление 23841 LD (23841),A CALL 1029 ;настройка на диск CALL 15889 ;берем режим дисковода LD (23770),A ;сохраняем его LD A,(24072) ;сохраняем тип диска LD (23783),A LD HL,640 ;вычисление количества секторов CP 25 ;на диске-приемнике JR Z,5407 LD HL,1260 CP 24 JR Z,5407 CP 23 JR Z,5407 LD HL,2560 CP 22 JR Z,5407 JP 7540 ;если в качестве типа диска сто- ит неопределенное значение, то *ERROR* Лучше DISC ERROR. 5407 LD (23773),HL;сохранение количества секторов на диске-приемнике LD BC,(23775);берем количество копируемых се- кторов SBC HL,BC ;места хватит ? JP C,7237 ;если нет, то NO SPACE RET ;возврат ─────────────────────────────────────────────────── Адрес 5420. Выполнение команды COPY B. Установите 23611. 5420 CALL 7541 ;если идет проверка на синтак- сис, то возврат CALL 5743 ;резервирование места в памяти LD HL,10105 ;печать BACKUP DISC CALL 9991 LD HL,10154 ;печать INSERT SOURCE DISC CALL 9991 5438 CALL 4173 ;ввод клавиши CP "Y" ;это Y ? JR NZ,5438 ;если да, то повтор CALL 7583 ;очистка низа экрана LD A,255 ;первый проход LD (23841),A Внимание!!! Эта переменная уже занята. В ней хра- нятся первые 3 символа командной строки. CALL 1029 ;настройка на диск CALL 15889 ;берем режим дисковода LD (23769),A ;сохраняем его LD A,(24072) ;берем тип диска CP 25 ;диск 40-дорожечный односторон- ний ? LD HL,640 ;всего на диске 640 секторов JR Z,5493 ;если да, то копирование LD HL,1280 ;всего на диске 1280 секторов CP 24 ;диск 80-дорожечный односторон- ний ? JR Z,5493 ;если да, то копирование CP 23 ;диск 40-дорожечный двухсторон- ний ? JR Z,5493 ;если да, то копирование LD HL,2560 ;всего на диске 2560 секторов CP 22 ;диск 80-дорожечный двухсторон- ний ? JR Z,5493 ;если да, то копирование JP 7450 ;иначе *ERROR* Внимание!!! Лучше выдавать сообщение DISC ERROR. 5493 LD BC,(24074);берем количество свободных сек- торов SBC HL,BC ;вычисляем количество занятых секторов LD (23781),HL;установка количества секторов LD (23775),HL LD HL,0 ;скопировано 0 секторов LD (23777),HL LD (23779),HL CALL 5560 ;копирование секторов CALL 1029 ;настройка на диск LD A,(23783) ;установка нового типа диска- приемника LD (24072),A LD HL,(23773);берем общее число секторов на диске-приемнике LD BC,(23775);берем число скопированных сек- торов SBC HL,BC ;вычисление числа свободных сек- торов на диске - приемнике LD (24074),HL;установка его CALL 5348 ;настройка дисковода под диск- приемник LD DE,9 ;записывали сектор 8 дорожки 0 LD (23796),DE CALL 7747 ;запись сектора JP 993 ;O.K. пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября