| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- IMPLEMENTATION MODULE VT52;
- IMPORT ASCII;
- FROM STextIO IMPORT WriteChar, WriteString;
- IMPORT IO, termios, FIO;
- VAR
- savedTerm : termios.TERMIOS;
- flushFlag : INTEGER;
- haveTerm : BOOLEAN;
- PROCEDURE Esc(c : CHAR);
- BEGIN
- WriteChar(ASCII.esc);
- WriteChar(c);
- END Esc;
- PROCEDURE EnterAnsi; BEGIN Esc("<"); END EnterAnsi;
- PROCEDURE SetAltKeypad; BEGIN Esc("="); END SetAltKeypad;
- PROCEDURE SetNumKeypad; BEGIN Esc(">"); END SetNumKeypad;
- PROCEDURE SetGraphics; BEGIN Esc("F"); END SetGraphics;
- PROCEDURE SetAscii; BEGIN Esc("G"); END SetAscii;
- PROCEDURE CursorUp; BEGIN Esc("A"); END CursorUp;
- PROCEDURE CursorDown; BEGIN Esc("B"); END CursorDown;
- PROCEDURE CursorRight; BEGIN Esc("C"); END CursorRight;
- PROCEDURE CursorLeft; BEGIN Esc("D"); END CursorLeft;
- PROCEDURE CursorHome; BEGIN Esc("H"); END CursorHome;
- PROCEDURE CursorPosition(row, col : CARDINAL);
- BEGIN
- WriteChar(ASCII.esc);
- WriteChar("Y");
- WriteChar(CHR(row + 31));
- WriteChar(CHR(col + 31));
- END CursorPosition;
- PROCEDURE ReverseFeed; BEGIN Esc("I"); END ReverseFeed;
- PROCEDURE ClearToEndOfLine; BEGIN Esc("K"); END ClearToEndOfLine;
- PROCEDURE ClearToEndOfScreen; BEGIN Esc("J"); END ClearToEndOfScreen;
- PROCEDURE Identify; BEGIN Esc("Z"); END Identify;
- PROCEDURE IdentifyResponse;
- BEGIN
- WriteChar(ASCII.esc);
- WriteChar("/");
- WriteChar("Z");
- END IdentifyResponse;
- (* Terminal input mode (cf. Editor/Tests/T17.mod): Unbuffered
- saves the termios state and disables line buffering so device
- replies can be read char by char; Buffered restores it. *)
- PROCEDURE Unbuffered;
- BEGIN
- flushFlag := termios.tcsflush();
- savedTerm := termios.InitTermios();
- haveTerm := termios.tcgetattr(FIO.StdIn, savedTerm) # -1;
- IO.UnBufferedMode(0, TRUE);
- IO.UnBufferedMode(1, TRUE);
- END Unbuffered;
- PROCEDURE Buffered;
- VAR res : INTEGER;
- BEGIN
- IO.BufferedMode(0, TRUE);
- IO.BufferedMode(1, TRUE);
- IF haveTerm THEN
- haveTerm := FALSE;
- res := termios.tcsetattr(FIO.StdIn, flushFlag, savedTerm);
- END;
- END Buffered;
- END VT52.
|