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 ---------------------------------------------------------------------------