[Back to TSR SWAG index] [Back to Main SWAG index] [Original]

    {  I'm sorry that my reply Sounded rude, it wasn't meant as such.  Probably
    the best way to make a screen saver TSR is to latch onto inT $8, which is
    called once a second to update the clock, using GetIntVec and SetIntVec.
    Since your other TSR code is probably a normal Procedure For whatever other
    interrupts you are using, just put the screen blanker Procedure inside the
    other Procedure, and hopefully when you use Keep Dos will retain both your
    normal TSR code and the screen saver code.
    }
    {$M 4096,0,0}
    {$N-,S-}
    Program TSRplusSaver;
    Uses Dos;

    Procedure MyTSR (Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP : Word);
    inTERRUPT;
    Const Maximum = 120; {2 minutes}
    Var Elapsed : Word;
    Var Saving  : Boolean;

    Procedure ResetSvr (Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP : Word);
    Interrupt;
    begin
      if Saving then begin
         Saving := False;
         Port[984] := 41;      {Enable 6845 video}
         end;
      Elapsed := 0;
      end;

    Procedure MyScreenSaver (Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP : Word);
    Interrupt;
    begin
      Inc (Elapsed);
      if Elapsed=Maximum then
         Port[984] := 33;      {Disable 6845 video}
         Saving := True;
         end;
      end;

    begin {MyTSR}
      MemW[$b800:$0000] := 3585; {Happy face}
      end;

    begin
       SetIntVec( $09, @ResetSvr);      {Reset screen saver on Keypress}
       SetIntVec( $08, @MyScreenSaver); {Increment elapsed every second,
                                         activate when ready}
       SetIntVec( $1C, @MyTSR);         {Set up your TSR code}
       Keep(0);
    end.

    {   I'm pretty sure something like this will work, but I haven't tried it
    myself yet.  of course you'll have to add CLI instructions at the
    beginning of each of the interrupt Procedure and a restore interrupts after
    it, so nothing can occur during them except NMI.  You may have some trouble
    there, since on the PCjr the NMI includes keyboard input (pretty stupid,
    huh?)
    }

[Back to TSR SWAG index] [Back to Main SWAG index] [Original]