[Back to TSR SWAG index] [Back to Main SWAG index] [Original]
{
Screen Blanker , Tsr Example only, By Maynard Philbrook ,VGA Type
From: Maynard.Philbrook@trisoft.com (Maynard Philbrook)
}
{$F+,S-,D-,I-,V-,R-}
{$M 1024, 0,0} { Reduce Memory to the minimum }
Uses DOs;
Var
OLDINT09, OLDINT08:pointer;
IsScreenOn :Boolean;
DownCounter :Word;
procedure NewKeyBoardHandler; Interrupt;
Begin
ASm PushF;
Call OldInt09;
Cmp IsScreenOn, True;
Je @Done;
Mov DX, $03C4; { Tell VGA Card Which Reg we want "Index Reg"}
Mov AL, 01;
Out DX,AL; { Make sure we are in the correct Regs }
Inc DX; { Move to the Data Reg now }
IN AL, DX; { get the curent value of the CLocking Mode
Reg}
And AL ,($FF-$20); { Turn off Blanker Bit }
Out DX, AL; { Send New Value to Port, WRite it Back }
mov IsScreenOn, True;
@Done:
Mov DownCounter, 50; { Set for 50 Ticks for Now }
end;
end;
procedure NewTimerHandler; Interrupt;
begin
ASm
PushF;
Call Oldint08;
Mov BX, DownCounter;
Cmp BX, 0;
Je @Done;
Dec BX;
Jnz @Done;
Mov DX, $03C4; { Tell VGA Card Which Reg we want "Index Reg"}
Mov AL, 01;
Out DX,AL; { Make sure we are in the correct Regs }
Inc DX; { Move to the Data Reg now }
IN AL, DX; { get the curent value of the CLocking Mode Reg}
Or AL ,$20; { Turn off Blanker Bit }
Out DX, AL; { Send New Value to Port, WRite it Back }
Mov IsScreenOn, False;
@Done:
Mov DownCounter, BX;
End;
End;
Begin
GetINtVec($09, OLDINT09);
GetIntVec($08, OLDINT08);
SetIntVec($09, @NewKeyBoardHandler);
SetIntVec($08, @NewTimerHandler);
IsScreenOn := True;
{ The Following is a Test }
Readln;
SetIntVec($09, OldINt09); { Restore Vectors after test }
SetIntVec($08, OldINt08);
{ End of Test}
{ To used as a TSR Exit the program With out restoring Vectors Like
So}
{ KEEP(0) }
End.
[Back to TSR SWAG index] [Back to Main SWAG index] [Original]