| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- IMPLEMENTATION MODULE VT52;
- FROM STextIO IMPORT WriteString, WriteChar, WriteLn;
- FROM NumberIO IMPORT WriteCard;
- FROM ASCII IMPORT esc;
- FROM Strings IMPORT Concat, Length, String1;
- FROM NumberIO IMPORT WriteHex;
- (* CONST
- ALTKEYPAD = "=";
- NUMKEYPAD = ">";
- SETGR = "F";
- RESETGR = "G";
- CURSORUP = "A";
- CURSORDN = "B";
- CURSORRT = "C";
- CURSORLF = "D";
- CURSORHOME = "H";
- CURSORPOS = "Y";
- REVINDEX = "I";
- CLEAREOL = "K";
- CLEAREOS = "/Z";
- IDENTRESP = "KL";
- VT52C = "<"; *)
- VAR
- altkeypadStr : ARRAY[0..2] OF CHAR;
- numkeypadStr : ARRAY[0..2] OF CHAR;
- setgrStr : ARRAY[0..2] OF CHAR;
- resetgrStr : ARRAY[0..2] OF CHAR;
- cursorupStr : ARRAY[0..2] OF CHAR;
- cursordnStr : ARRAY[0..2] OF CHAR;
- cursorrtStr : ARRAY[0..2] OF CHAR;
- cursorlfStr : ARRAY[0..2] OF CHAR;
- cursorhomeStr : ARRAY[0..2] OF CHAR;
- cursorposStr : ARRAY[0..2] OF CHAR;
- revindexStr : ARRAY[0..2] OF CHAR;
- cleareolStr : ARRAY[0..2] OF CHAR;
- cleareosStr : ARRAY[0..2] OF CHAR;
- identStr : ARRAY[0..2] OF CHAR;
- identrespStr : ARRAY[0..2] OF CHAR;
- clsStr : ARRAY[0..5] OF CHAR;
- vt52Str : ARRAY[0..3] OF CHAR;
- VAR
- i : CARDINAL;
- PROCEDURE vt52; (* Enter/exit ANSI mode (VT52) ^[< *)
- BEGIN
- WriteString(vt52Str)
- END vt52;
- PROCEDURE altkeypad; (* Enter alternate keypad mode ^[= *)
- BEGIN
- WriteString(altkeypadStr)
- END altkeypad;
- PROCEDURE numkeypad; (* Exit alternate keypad mode ^[> *)
- BEGIN
- WriteString(numkeypadStr)
- END numkeypad;
- PROCEDURE setgr; (* Use special graphics character set ^[F *)
- BEGIN
- WriteString(setgrStr)
- END setgr;
- PROCEDURE resetgr; (* Use normal US/UK character set ^[G *)
- BEGIN
- WriteString(resetgrStr)
- END resetgr;
- PROCEDURE cursorup; (* Move cursor up one line ^[A *)
- BEGIN
- WriteString(cursorupStr)
- END cursorup;
- PROCEDURE cursordn; (* Move cursor down one line ^[B *)
- BEGIN
- WriteString(cursordnStr)
- END cursordn;
- PROCEDURE cursorrt; (* Move cursor right one char ^[C *)
- BEGIN
- WriteString(cursorrtStr)
- END cursorrt;
- PROCEDURE cursorlf; (* Move cursor left one char ^[D *)
- BEGIN
- WriteString(cursorlfStr)
- END cursorlf;
- PROCEDURE cursorhome; (* Move cursor to upper left corner ^[H *)
- BEGIN
- WriteString(cursorhomeStr)
- END cursorhome;
- PROCEDURE cursorpos(x : CARDINAL; y : CARDINAL); (* Move cursor to v,h location ^[<v><h> *)
- VAR
- tempString : ARRAY[0..15] OF CHAR;
- tempString1,
- tempString2,
- tempString3 : String1;
- xPos, yPos : CARDINAL;
- BEGIN
- tempString := "";
- (* tempString3[0] := "f"; *)
- Concat(tempString,cursorposStr, tempString);
- xPos := x + 31;
- yPos := y + 31;
- tempString1[0] := CHR(yPos);
- tempString2[0] := CHR(xPos);
- Concat(tempString,tempString1, tempString);
- Concat(tempString,tempString2, tempString);
- (* Concat(tempString,tempString3, tempString); *)
- WriteString(tempString);
- END cursorpos;
- PROCEDURE revindex; (* Generate a reverse line-feed ^[I *)
- BEGIN
- WriteString(revindexStr)
- END revindex;
- PROCEDURE cleareol; (* Erase to end of current line ^[K *)
- BEGIN
- WriteString(cleareolStr)
- END cleareol;
- PROCEDURE cleareos; (* Erase to end of screen ^[J *)
- BEGIN
- WriteString(cleareosStr)
- END cleareos;
- PROCEDURE ident; (* Identify what the terminal is ^[Z *)
- BEGIN
- WriteString(identStr)
- END ident;
- PROCEDURE identresp; (* Correct response to ident ^[/Z *)
- BEGIN
- WriteString(identrespStr)
- END identresp;
- PROCEDURE cls;
- BEGIN
- WriteString(clsStr)
- END cls;
- BEGIN
- (**** VT52 *****)
- Concat(esc,"[<",vt52Str);
- (**** altkeypad *****)
- Concat(esc,"[=", altkeypadStr);
- (**** numkeypad *****)
- Concat(esc,"[=>",numkeypadStr);
- (**** setgr *****)
- Concat(esc,"[F",setgrStr);
- (**** resetgr *****)
- Concat(esc,"[G",resetgrStr);
- (**** cursorup *****)
- Concat(esc,"[A",cursorupStr);
- (**** cursordn *****)
- Concat(esc,"[B",cursordnStr);
- (**** cursorrt *****)
- Concat(esc,"[C",cursorrtStr);
- (**** cursorlf *****)
- Concat(esc,"[D",cursorlfStr);
- (**** cursorhome *****)
- Concat(esc,"[H",cursorhomeStr);
- (**** cursorpos *****)
- Concat(esc,"[Y",cursorposStr);
- (**** revindex *****)
- Concat(esc,"[I",revindexStr);
- (**** cleareol *****)
- Concat(esc,"[K",cleareolStr);
- (**** cleareos *****)
- Concat(esc,"[J",cleareosStr);
- (**** ident *****)
- Concat(esc,"[Z",identStr);
- (**** identresp *****)
- Concat(esc,"[/Z",identrespStr);
-
- (**** cls *****)
- clsStr := "";
- Concat(esc,"[H",clsStr);
- Concat(clsStr,esc,clsStr);
- Concat(clsStr,"[J",clsStr);
- (****)
- END VT52.
|