Invisible cursor

I use the following procedures/functions to turn the
cursor on and off and change the size of the cursor
(overwrite mode on/off).

On some old monochrome monitors the cursor is not
visible when I use the LineCursor procedure.
When in overwrite mode (BlockCursor) the cursor is
full visible.

How can I change the folowing procedures/function so
it works both on (old) monochrome monitors as
(new) color monitors?

Iwan Oprins

---

function MonoScreen: Boolean;

begin
  MonoScreen := (Mem[0:$449] = 7);
end;
{-----}
procedure Cursor (CursorOn: Boolean);

var
  Reg: Registers;

begin
  if (CursorOn) then
    if (MonoScreen) then
      Reg.CX := $0C0D
    else
      Reg.CX := $0607
  else
    Reg.CX := $2000;
  Reg.AX := $0100;
  Intr ($10,Reg);
end;
{-----}
procedure CursorFormat (StartLine, EndLine: Byte);

var
  Reg: Registers;

begin
  Reg.AX := 256;
  Reg.CX := StartLine shl 8 + EndLine;
  Intr ($10,Reg);
end;
{-----}
procedure BlockCursor;

begin
  CursorFormat (0,12);
end;
{-----}
procedure LineCursor;

begin
  CursorFormat (11,12);
end;

Sent via Deja.com http://www.deja.com/
Before you buy.