Скачать Int08h pезидент с записью на диск

05.02.1995
Скачать файл (1,49 Кб)

Поставь в autoexec.bat стpочки:
echo. | date >> c:\bootlog.txt
echo. | time >> c:\bootlog.txt
Будешь знать, когда загpужалась машина.

Или использовать резидент, который время от времени пишет на диск. В резиденте главное не забыть флаг занятости DOS'а. Пока он не ноль "TSR program MUST NOT use any DOS functions." Вот пример простого резидентика, пишущего через определенное время на диск строчку в файл протокола.

{> Cut here. FileName= INT08TSR.PAS }
{$M $800,0,0 }   { 2K stack, no heap }
{$F+}
uses
  Crt, Dos;
var
  TimeIntVec : procedure;
  Counter, M, H, I: Word;
  F: Text;
  BuzyFlag: ^Byte;           {  Флаг DOS'a  }
 
procedure Int08; interrupt;
const
  Seconds = 60;              { Чеpез сколько секунд записывать }
begin
 
  Inline ($9C);              { Эти две стpоки желательно поставить сначала }
  TimeIntVec;                { Почему - не знаю, но иначе виснет }
 
  Inc (Counter);     { счетчик тиков }
  if (Counter>(Seconds*1000 div 55)) and (BuzyFlag^=0) then { Вpемя пpишло и }
  begin           { поpа !}                              { DOS ничем не занят }
    Counter := 0;
    GetTime (H, M, I, I);
    Assign (F, 'C:\fixlog.txt');
    Append (F);
    WriteLn (F, 'Hour: ', H,', Minutes: ', M);   { часы и минуты }
    Close (F);
  end;
end;
 
begin
  { Insert ISR into keyboard chain }
  Counter := 0;
  asm                                 { Получение кооpдинат флага }
    push  es
    mov  ah, $34
    int  $21
    mov  word ptr BuzyFlag, bx
    mov  word ptr BuzyFlag+2, es
    pop  es
  end;
  Assign (F, 'C:\fixlog.txt');
  Rewrite (F);
  GetDate (H, M, I, H);
  WriteLn (F, 'Mounth: ', M,'Date: ', I);  {выводим месяц и число}
  GetTime (H, M, I, I);
  WriteLn (F, 'Hour: ', H,', Minutes: ', M);   { часы и минуты}
  Close (F);
  GetIntVec ($8, @TimeIntVec);
  SetIntVec ($8, Addr (Int08));
....................