[comp.lang.modula2] screen-clear and cursor-move operations

mfeldman@GWUSUN.GWU.EDU (Mike Feldman) (05/13/89)

Things like screen-clear, cursor-move, etc., are not standard M2 library
functions. There are 2 choices: use a compiler-specific library or
try to write a portable mini-screen package. We have done the latter
at GWU - this works with any terminal that can emulate a vt100 (including
a PC with ANSI.SYS installed in the CONFIG.SYS file).
This compiles under half-a-dozen different VMS, Unix, DOS compilers I
have known and loved.

......cut here....


DEFINITION MODULE vt100;
   (* EXPORT QUALIFIED ClearScreen, SetCursorAt; *)
   PROCEDURE ClearScreen;
   PROCEDURE SetCursorAt(Column, Row: CARDINAL);
END vt100.




IMPLEMENTATION MODULE vt100;

FROM InOut    IMPORT Write;

   VAR ASCIIOffset: CARDINAL;


   PROCEDURE ClearScreen;
      BEGIN
        Write(CHR(27)); Write('[');
        Write('2'); Write('J');
      END ClearScreen;

  PROCEDURE SetCursorAt(column, row: CARDINAL);
      BEGIN
        Write(CHR(13));  (* the newline is just to flush the buffer *)
                         (* this is often necessary because InOut uses *)
                         (* buffered I/O at the OS level and you don't *)
                         (* want the OS to flush on its own - you'll get *)
                         (* spurious newlines in the screen transaction *)
                         (* You can delete this if it works on your OS *)
                         (* without it *)
        Write(CHR(27)); Write('[');
        Write(CHR((row    DIV 10) + ASCIIOffset));
        Write(CHR((row    MOD 10) + ASCIIOffset));
        Write(';');
        Write(CHR((column DIV 10) + ASCIIOffset));
        Write(CHR((column MOD 10) + ASCIIOffset));
        Write('H');
     END SetCursorAt;

BEGIN
   ASCIIOffset := ORD("0");
END vt100.









......cut here....
Have fun with this - modify it as you see fit.
---------------------------------------------------------------------------
Prof. Michael Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
+1-202-994-5253
mfeldman@gwusun.gwu.edu
mfeldman@gwuvm.bitnet
---------------------------------------------------------------------------