[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]