iav1917@ritcv.UUCP (s) (01/04/88)
Hello Net-land:
The following is a quick demo program that contains two functions
GetCursorColPos and GetCursorRowPos which return the cursor's
current column and row positions, respectively. The routines
each grab a byte of data out of the Rainbow's screen RAM segment.
This pair of routines are a lot easier to use than trying to
use VT102 escape sequences or other methods of figuring out where
the cursor is. These routines are probably best used to 'remember'
the cursor's position before using the SaveScreen and after using
the RestoreScreen routines in the RBDEMO3 demo.
The routines are after the .signature.
Enjoy,
Alan
Alan I. Vymetalik @ {allegra,seismo}!rochester!ritcv!iav1917
----------------------------------+----------------------------------
J.A.M, Inc. | Prism Software Designs
300 Main Street | 44 Arborwood Crescent
East Rochester, New York, 14445 | Rochester, New York, 14615-3807
| 1-716-458-4932
----------------------------------+----------------------------------
DISCLAIMER: The above statements and opinions belong to the author.
Any resemblence to statements found in actual reality is purely coin-
cidental. And, as always, the above opinions have absolutely nothing
to do with the little, fat man putting $100 bills in my pocket.
---------------------------------------------------------------------
---------------------------------------------------------------------
program DEC_Rainbow_Cursor_Demo;
var
i : byte; { misc. loop variable }
{
GetCursorColPos
======================================================================
and
GetCursorRowPos
======================================================================
GetCursorColPos and GetCursorRowPos return the screen cursor's current
column and row positions, respectively, from the values stored in the
Screen RAM segment of video memory.
These procedures can be useful in saving the cursor's position in a
storage variable before saving and clearing the screen. Later, the
cursor can be properly replaced when the screen is restored.
}
function GetCursorColPos : byte;
begin { GetCursorColPos }
GetCursorColPos := mem[$EE00:$0F41];
end; { GetCursorColPos }
function GetCursorRowPos : byte;
begin { GetCursorRowPos }
GetCursorRowPos := mem[$EE00:$0F42];
end; { GetCursorRowPos }
{
A quick demo program to demonstrate the above functions...
The first character displayed is located at the position
decribed.
}
Begin { demo }
Write(#27,'[2J',#27,'[H'); { clear screen, home cursor }
For i := 1 To 23 Do
Begin
GotoXY(i,i);
Write(GetCursorColPos:1,',',GetCursorRowPos:1);
End;
For i := 23 DownTo 1 Do
Begin
GotoXY(76-i,i);
Write(GetCursorColPos:1,',',GetCursorRowPos:1);
End;
End. { demo }