City
#18
09 июля 1999 |
|
Ликбез - полный дизассемблер ПЗУ (часть 13).
--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение ─────────────────────────────────────────────────── Адрес 864. Текст заставки TR-DOS. 864 DEFB 22,1,15 DEFM "* TR-DOS Ver 5.04T*" DEFB 13,13,127 DEFM " 1986 Technology Research ltd." DEFB 22,5,11 DEFM "(U.K.)" DEFB 22,7,5 DEFM "BETA 128" DEFB 0 ─────────────────────────────────────────────────── Адрес 940. Завершение выдачи каталога. 940 CALL 1021 ;загрузка в буфер сектора 8 до- рожки 0 CALL 15744 ;перевод строки CALL 15744 ;еще раз LD BC,(24074);берем количество свободных сек- торов на диске CALL 7593 ;печать его LD HL,10706 ;печать FREE RST 24 JP 467 ;завершение ─────────────────────────────────────────────────── Адрес 960. Переход к подпрограмме завершения. 960 JP 467 ─────────────────────────────────────────────────── Адрес 963. Печать сообщения об ошибке. В HL устано- вите адрес сообщения, в A - код ошибки. 963 PUSH AF ;сохранение кода ошибки LD A,(23822);ошибка произошла при автозагруз- ке ? CP 254 JR NZ,973 ;если нет, то установка кода ошибки POP AF ;снятие со стека кода ошибки RET ;возврат 973 POP AF ;восстановление кода ошибки LD (23823),A;установка кода ошибки LD A,(23829);печать сообщений разрешена ? OR A CALL Z,9991 ;если да, то печать сообщения Ошибка!! Перед печатью надо открыть поток 0 и очис- тить низ экрана. RET ;возврат ─────────────────────────────────────────────────── Адрес 993. Вывод сообщения O.K. 993 LD HL,10086;адрес сообщения O.K. XOR A ;код ошибки - 0 JP 7242 ;выдача сообщения и завершение ─────────────────────────────────────────────────── Адрес 1000. Загрузка сектора 0 дорожки 0 в буфер. Обнуляет 23756. Используется также с адресов: 1004 - загрузка сектора дорожки 0 в буфер. Устано- вите 23756. 1010 - загрузка сектора в буфер, номер сектора в E, дорожки - в D. 1000 XOR A ;текущий сектор 0 LD (23756),A 1004 LD DE,(23756);берем номер сектора LD D,0 ;дорожка 0 1010 CALL 10570 ;создание буфера LD HL,23845 ;загружать в буфер LD B,1 ;1 сектор JP 7741 ;загрузка сектора ─────────────────────────────────────────────────── Адрес 1021. Загрузка в буфер сектора 8 дорожки 0. Установите 23820. 1021 CALL 10570;создание буфера, если его нет LD DE,8 ;дорожка 0, сектор 8 JR 1010 ;загрузка сектора в буфер ─────────────────────────────────────────────────── Адрес 1029. Настройка на диск. Меняет переменную с типом дисковода. 1029 CALL 1021 ;чтение в буфер сектора 8 дорожки 0 LD A,(24076);диск от TR-DOS ? CP 16 JR Z,1045 ;если да, то установка типа дис- ковода LD HL,10722 ;адрес сообщеня DISC ERROR RST 24 ;печать сообщения JR 960 ;завершение Внимание, ошибка!! Неправильно обрабатывается ошиб- ка. Здесь программа должна быть такой: LD HL,10722 LD A,7 JP 7242 А в этом случае ваша программа не получит код ошиб- ки, а внизу экрана совершенно не к месту появится DISC ERROR. CALL 15889 ;берем тип дисковода RES 0,(HL) ;установка типа дисковода под тип диска RES 1,(HL) ;и возврат LD A,(24072) BIT 0,A JR NZ,1061 SET 0,(HL) 1061 BIT 3,A RET NZ SET 1,(HL) RET Ошибка!!! Перед установкой типа надо бы проверить совместимость диска и дисковода. пpодолжение следует ...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября