Создание TSR программ в операционной системе MS DOS, страница 7

call                                OutFDC            ;передадим в контроллер

jc                                   FatalErr             ;неуспешно

mov                               ah,0FFh             ;длина передаваемых данных FF

call                                OutFDC            ;передадим в контроллер

jc                                   FatalErr             ;неуспешно

and                                IntFlags,255-IntPres-IntMCA         ;сбросим прерывание

sti                                                                                           ;откроем маски

call                                WaitInt                                            ;ждем прерывание

jc                                   FatalErr                                           ;не дождались

; получим результат

call                                InFDC                                    ;прочитаем данные из FDC

jc                                   FatalErr                                  ;неуспешно

mov                               ah,ST0                                    ;регистр состояния 0

and                                ah,11000000b                        ;выделим состояние завершения

or                                  ah,ah                                       ;успешно?

jnz                                 FatalErr                                  ;нет, ошибка

 


прочитаем три сектора, начиная с сектора 1

 


;установить DМА на рабочую область

mov                               di,WorkOff                     ;смещение рабочей области

mov                               сх,512*2                         ;длина двух секторов

mov                               al,04Ah                           ;код оперции DMA - передаем в FDC

call                                SetDMA                          ;иницируем DМА

mov                               FDCOpCode,045h          ;запомним код команды Запись

; передадим все команды чтения

cli                                  ;закроем маски

mov                               ah,046h        ;команда чтение

call                                OutFDC        ;передадим в контроллер

jc                                   FatalErr        ; неуспешно

sub                                ah,ah             ;накопитель 0 поверхность 0

call                                OutFDC        ;передадим в контроллер

jc                                   FatalErr        ;неуспешно

; перешлем данные сектора

mov                               ah,1                 ;цилиндр 1

call                                OutFDC          ;передадим в контроллер

jc                                   FatalErr          ;неуспешно

mov                               ah,0                 ;поверхность 0

call                                OutFDC          ;передадим в контроллер

jc                                   FatalErr          ;неуспешно

mov                               ah,1                 ;сектор 1

call                                OutFDC          ;передадим в контроллер

jc                                   FatalErr          ;неуспешно

mov                               ah,2                        ;код длины 2

call                                OutFDC                 ;передадим в контроллер

jc                                   FatalErr                 ;неуспешно

mov                               ah,9                        ;количество секторов 9

call                                OutFDC                 ;передадим в контроллер

jc                                   FatalErr                 ;неуспешно

mov                               ah,02Ah                 ;GAP чтения/записи

call                                OutFDC                 ;передадим в контроллер

jc                                   FatalErr                 ;неуспешно

mov                               ah,0FFh                  ;длина передаваемых данных FF

call                                OutFDC                 ;передадим в контроллер

jc                                   FatalErr                 ;неуспешно