{
> I Write the following Procedure to shadow Text behind a box.  It works
> fine (so Far), but am not sure if there is a quicker, easier way.

You are searching through the video-RAM For the Char and Attr, you want to
change. Perhaps, it is easier and faster to use the interrupt, that returns
you the Char under the Cursor , than you can change the attribute.
}
Uses
  Dos, Crt;

Procedure Shadow(x1, y1, x2, y2 : Byte);
Var
  s, i, j : Byte;

  Procedure Z(x, y : Byte);
  Var
    r : Registers;
  begin
    r.ah := $02;
       { Function 2hex (Put Position of Cursor) }
    r.bh := 0;
    r.dh := y - 1;        { Y-Position }
    r.dl := x - 1;        { X-Position }
    intr($10,r);
    r.ah := $08;
       { Fkt. 8hex ( Read Char under cursor ) }
    r.bh := 0;
    intr($10, r);
    Write(chr(r.al));
  end;

begin
  s := TextAttr; { save Attr }
  TextAttr := 8;
  For i := y1 + 1 to y2 + 1 do
    For j := x1 + 1 to x2 + 1 do
      z(i, j);
  TextAttr := s; { Attr back }
end;

begin
  Shadow(10,10,20,20);
  ReadKey;
end.