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

{BRIAN DHATT

> Does anyone have codes/source For replacing GotoXY Procedure?
}
Asm
  MOV AH,$0F                   {To get active page, returns BH}
  INT $10
  MOV Page,BH
end;

Asm                  {to find current cursor pos in form XX,YY}
  MOV AH,$3           {Equiv of XX:=WhereX, YY:=WhereY         }
  MOV BH,Page
  INT $10
  MOV YY,DH
  MOV XX,DL
end;

Asm                        {This block moves the cursor to           }
  MOV AH,$02               {XX,YY just like GotoXY(XX,YY)            }
  MOV BH,Page
  MOV DL,XX
  MOV DH,YY
  INT $10
end;

{
GREG ESTABROOKS

>Can someone tell me how to make the cursor in Turbo Pascal disappear and
>appear?
}

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]