|
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 декабря