如何在TSR程序中使屏幕闪烁?

时间:2012-12-03 16:26:18

标签: interrupt keyboardinterrupt tsr

我编写了一个充当屏幕保护程序的程序,即10秒后,如果没有按下键盘按钮,则清除所有命令提示屏幕。总之,我已经挂钩了Timer和Keyboard中断。但我希望程序显示闪烁的屏幕,或者显示命令提示符和空白屏幕的所有文本。但我目前的情况是,如果没有按下按钮,它会在10秒后继续显示空白屏幕。如何修改程序以在清除的屏幕和文本数据之间交替显示闪烁的屏幕,而不是仅清除屏幕。这是我的计划:

#include <dos.h>
#include <conio.h>

void interrupt (*oldTimer)();
void interrupt (*oldKey)();
void interrupt newTimer();
void interrupt newKey();
char far *scr = (char far*) 0xB8000000;
int i, t=0, m=0;
char charscr[4000];

void main()
{
 oldTimer=getvect(8);
 oldKey=getvect(9);
 setvect(8,newTimer);
 setvect(9,newKey);

 getch();
 keep (0,1000);

}

void interrupt newTimer()
{
t++;
if((t>=182)&&(m==0))
{
for (i=0;i<4000;i++)
charscr [i]=*(scr+i);
for (i=0;i<=4000;i+=2)

    {
    *(scr+i)=0x20;
    *(scr+i+1)=0x07;
    }

t=0; m=1;
}
(*oldTimer)();
 }

 void interrupt newKey()
 {
 int w;
if(m==1)
  {
   for (w=0; w<4000;w++)
  *(scr+w)=charscr[w];
   m=0;
     }
(*oldKey)();
  }

抱歉我的缩进很差。我觉得在这个网站上很难缩进代码。

0 个答案:

没有答案