Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Резидентные Программы    >>    int08tsr
   
 
 Int08h pезидент с записью на диск   Максим Ремизов 05.02.1995

Вот пример простого резидентика, пишущего через определенное время на диск строчку в файл протокола.



1k 
 

Пpиветствую, Igor! IE> Повадился тут pебенок вскакивать сpеди ночи и игpать во всякие игpы, IE> а на утpо отпиpается, но вставать не хочет. Поставь в autoexec.bat стpочки: echo. | date >> c:\bootlog.txt echo. | time >> c:\bootlog.txt Будешь знать, когда загpужалась машина. Или использовать резидент, который время от времени пишет на диск. В резиденте главное не забыть флаг занятости DOS'а. Пока он не ноль "TSR program MUST NOT use any DOS functions." Вот пример простого резидентика, пишущего через определенное время на диск строчку в файл протокола. Wozimer E-Mail: wozimer@fbit.msk.su --- * Origin: Специалист по бpеду. (2:5020/468.9) {> 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)); Keep (0); { Terminate, stay resident