(* Screen   BIOS screen routines   Chris Harshman   1992
    These procedures are useful for working with screen data directly,
such as reading a character at a point on the screen, or making a copy of the
screen to hold for later.  *)

DEFINITION MODULE Screen;

TYPE ScreenData = ARRAY [0..6599] OF CHAR;

PROCEDURE SaveScreen(VAR s:ScreenData);
    (* Saves all screen data into the array s, includes characters and
       colors used.  Call before a SetWindow to later erase the window
       from the screen. *)

PROCEDURE RestoreScreen(VAR s:ScreenData);
    (* Restores all screen data back to the screen from array s.  Call to
       return the screen to its previous conditions when SaveScreen was
       called. *)

PROCEDURE GetPosition(VAR v,h:CARDINAL);
    (* Returns the row and column of the cursor's position.  The coordinates
       v and h will be screen relative not window relative. *)

PROCEDURE GetChar(VAR ch:CHAR; VAR fc,bc:CARDINAL);
    (* Returns the character and its foreground and background colors at the
       current cursor location.  Use SetCursor before using to be accurate. *)

PROCEDURE PrintScreen();
    (* Simmilar to pressing Ctrl-PrtSc.  Dumps the screen to the printer. *)

PROCEDURE CursorOff();
    (* Turns the text screen cursor off.  To turn back on, call the procedure
       for setting the used text video mode, ex. SetText *)

END Screen.