Информатика и технология программирования


         

Если флаг занятости DOS сброшен,



if((*PDOSBUSY==0) &#38&#38 (WAITDOS&#62 0))
// Если флаг занятости DOS сброшен, а наш флаг

{ // взведен, то сбрасываем свой флаг...

putstr(" ",0,1);
WAITDOS=0;
SAVE; PROCKEY(); RESTORE;
}
}
//---------------------------------------------------------------------------

void interrupt BIOSDISK(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flgs)
{ //Обработка перехваченного прерывания INT 13h

DISKFLAG++; //Взводим признак занятости дисковой подсистемы

(*DISKSAV)(); //Вызываем прерывание по старому вектору

newscrit(); //Сохраняем флаги ...

ax=_AX; //... и регистры ...

cx=_CX;
dx=_DX;
flgs=cflag; //... возвращаем флаги.

DISKFLAG --; //Сбрасываем признак занятости дисковой подсистемы.

if (WAITDISK&#62 0) //Если наш флаг взведен, то сбрасываем его,

{
WAITDISK=0;
putstr(" ",20,1);
SAVE; PROCKEY(); RESTORE;
}
}
//----------------------------------------------------------------------------

void interrupt TIMER(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flgs)
{ //Обработка перехваченного прерывания от таймера.

if (LEVEL==0)
{
SAVE; //Переключиться на внутренний стек

if (WAITBIOS&#62 0) //Если установлен флаг занятости BIOS, то сбрасываем его

{ // и пытаемся выполнить отложенные действия

putstr(" ",40,1);
WAITBIOS=0;
PROCKEY();
}
if ((WAITDOS&#62 0) &#38&#38 (*PDOSBUSY==0))
//Если взведен наш флаг занятости DOS, а

{ // системный флаг занятости DOS сброшен, то

putstr(" ",0,1);
WAITDOS=0; // сбрасываем свой флаг

PROCKEY(); // и пытаемся выполнить отложенные действия

}
RESTORE; //Восстанавливаем внешний стек.

}
(*TIMSAV)(); //Вызвать сохраненный обработчик прерывания от таймера.

}
//----------------------------------------------------------------------

void main()
{ int i; unsigned n , far *b; char sx[3];
if ((SP = new char[NSTACK])==NULL) goto fatal;
printf("Синхронизация DOS(y/n):"); scanf("%s",sx);
if (sx[0]!='y') WAITDOS=-1;
printf("Синхронизация DISK(y/n):"); scanf("%s",sx);

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий