[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]
{
One way to do it is to change the cursor size attributes. Here are some
routines I use and a little demo program I wrote for another user a
while back(Gosh almost a year now<g>). Also if your doing a lot of
screen writing and either don't want the cursor to move or not be
visible at all you might want to try looking into direct video memory
writes.
}
PROGRAM CursorDemo; (* May 27/93, Greg Estabrooks *)
USES CRT; (* For Readkey, Clrscr. *)
CONST
(* Define Cursor Value to make chaning cursor easier *)
NoCursor = $2000;
DefaultCursor = $0607;
BlockCursor = $000A;
VAR
Curs :WORD; (* Stores saved cursor value *)
Ch :CHAR;
PROCEDURE SetCursor( Cursor :WORD ); ASSEMBLER;
(* Routine to change the shape of the cursor *)
ASM
Mov AH,1 (* Function to change cursor shape *)
Mov BH,0 (* Set Page to 0 *)
Mov CX,Cursor (* Load new cursor Shape Value *)
Int $10 (* Call Dos *)
END;{SetCursor}
FUNCTION GetCursor :WORD; ASSEMBLER;
(* Routine to return Cursor Shape *)
ASM
Mov AH,3 (* Function to return cursor shape *)
Mov BH,0 (* Set Page to 0 *)
Int $10 (* Call Dos *)
Mov AX,CX (* Move Result to proper register *)
END;{GetCursor}
BEGIN
Clrscr; (* Clear the screen for demonstration*)
Curs := GetCursor; (* Save Current Cursor Value *)
Writeln('The Cursor is turned off');
SetCursor( NoCursor ); (* Turn off the cursor *)
Ch := Readkey; (* Pause to show user new cursor *)
Writeln('The Cursor is a block shape');
SetCursor( BlockCursor ); (* Set the cursor to a block *)
Ch := Readkey;
Writeln('The Cursor is now the normal shape');
SetCursor( DefaultCursor ); (* Set Default Cursor *)
Ch := Readkey;
SetCursor( Curs ); (* Restore cursor to previous style *)
END.
[Back to CURSOR SWAG index] [Back to Main SWAG index] [Original]