mov ah,03h ;команда SPECIFY
mov FDCOpCode,03h ;запомним код команды SPECIFY
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,00Fh ;SRT + HUT для 360 в 1.2
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
mov ah,02h ;HLT + ND
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
Выполним команду Recalibrate (обязательно после сброса )
mov FDCOpCode,07h ;запомним код команды Recalibrate
mov cx,2 ;количество повторов
;Примачание:
;!! для дисководов с 80
;!! цилиндрами за одну
;!! операцию головки могут
;!! не встать на цилиндр 0
RecalRestart:
cli ;закроем маски
mov ah,07h ;команда Recalibrate
call OutFDC ;передадим в контроллер
jc FatalErr ;неуспешно
sub ah,ah ;устройство 0
call OutFDC ;передадим в контроллер номерустройства
FatalErr ;неуспешно
and IntFlags,255-IntPres-IntMCA ;сбросим состояние прерывания
sti ;откроем маски
WaitInt ;ждем прерывание
FatalErr ;не дождались
; снимем состояние прерываний
call Sensl ;опросим прерывание
jc FatalErr ;неуспешно
; проверим результат
mov ah,ST0 ;регистр состояния 0
test ah,00100000b ;операция завершена?
jz RecalTry ;нет, повторим операцию
and ah,11000000b ;выделим 6иты типа завершения
test ah,11000000b ;успешно?
jz RecalCompl ;да, на выход
RecalTry:
loop RecalRestart ;повторим
jmp FatalErr ;все же неуспешно
; успешно сделали: подождем успокоения головок (для привода 1.2 время
; успокоения состовляет 15 мс)
RecalCompl:
mov bx,18750 ; время успокоения в циклах таймера
; 15000 мкс/0.8 мкс
call WaitTimer2 ; подождем
; подготовим таблицу формата :
; 9 секторов длиной 2, цилиндр 1, поверхность 0
mov si,WorkOff ;адрес рабочей области
mov cx,9 ;количество секторов
; подготовим заголовок
mov byte ptr ds:[si],2 ; размер сектора 2
mov byte ptr ds:[si+1],9 ; количество секторов 9
mov byte ptr ds:[si+2],80 ; размер GAP 3
mov byte ptr ds:[si+3],0F6h ;символ-заполнитель
sub al,al ;для номеров секторов
PrepForFormat:
inc al ;увеличим номер сектора
add si,4 ; увеличим адрес в таблица
;формата
mov byte ptr ds:[si],1 ;цилиндр 1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.