DEFINITION MODULE VT100; (* Strict DEC VT100 escape sequences. No VT52 compat, no DOS screen modes, no xterm extensions, no colors. Pure CSI/ESC emitter, plus Unbuffered/Buffered input-mode helpers (termios) for reading device replies. Reference: DEC VT100 User Guide (EK-VT100-UG). *) (* SGR - character attributes (VT100: 0,1,4,5,7 only) *) PROCEDURE ResetAttributes; (* SGR0 ESC[0m *) PROCEDURE Bold; (* SGR1 ESC[1m *) PROCEDURE Underline; (* SGR4 ESC[4m *) PROCEDURE Blink; (* SGR5 ESC[5m *) PROCEDURE Reverse; (* SGR7 ESC[7m *) (* Cursor movement *) PROCEDURE CursorHome; (* ESC[H *) PROCEDURE CursorPosition(line, col : CARDINAL); (* CUP ESC[line;colH *) PROCEDURE HVPosition(line, col : CARDINAL); (* HVP ESC[line;colf *) PROCEDURE CursorUp(n : CARDINAL); (* CUU ESC[nA *) PROCEDURE CursorDown(n : CARDINAL); (* CUD ESC[nB *) PROCEDURE CursorRight(n : CARDINAL); (* CUF ESC[nC *) PROCEDURE CursorLeft(n : CARDINAL); (* CUB ESC[nD *) (* Scroll / line movement *) PROCEDURE Index; (* IND ESC D *) PROCEDURE ReverseIndex; (* RI ESC M *) PROCEDURE NextLine; (* NEL ESC E *) (* Cursor save / restore (DEC) *) PROCEDURE SaveCursor; (* DECSC ESC 7 *) PROCEDURE RestoreCursor; (* DECRC ESC 8 *) (* Erase in line / screen *) PROCEDURE ClearLineRight; (* EL0 ESC[K / ESC[0K *) PROCEDURE ClearLineLeft; (* EL1 ESC[1K *) PROCEDURE ClearLine; (* EL2 ESC[2K *) PROCEDURE ClearScreenDown; (* ED0 ESC[J / ESC[0J *) PROCEDURE ClearScreenUp; (* ED1 ESC[1J *) PROCEDURE ClearScreen; (* ED2 ESC[2J *) (* Scrolling region *) PROCEDURE SetScrollRegion(top, bottom : CARDINAL); (* DECSTBM ESC[top;bottomr *) (* Tabs *) PROCEDURE TabSet; (* HTS ESC H *) PROCEDURE TabClear; (* TBC ESC[g / ESC[0g *) PROCEDURE TabClearAll; (* TBC ESC[3g *) (* Double-size / alignment *) PROCEDURE DoubleHeightTop; (* DECDHL ESC#3 *) PROCEDURE DoubleHeightBottom; (* DECDHL ESC#4 *) PROCEDURE SingleWidth; (* DECSWL ESC#5 *) PROCEDURE DoubleWidth; (* DECDWL ESC#6 *) PROCEDURE ScreenAlign; (* DECALN ESC#8 *) (* LNM / DEC private modes *) PROCEDURE SetNewLine; (* LNM ESC[20h *) PROCEDURE ResetNewLine; (* LNM ESC[20l *) PROCEDURE SetAppCursorKeys; (* DECCKM ESC[?1h *) PROCEDURE SetCursorKeys; (* DECCKM ESC[?1l *) PROCEDURE SetANSI; (* DECANM ESC[?2h *) PROCEDURE SetVT52; (* DECANM ESC[?2l *) PROCEDURE Set132Columns; (* DECCOLM ESC[?3h *) PROCEDURE Set80Columns; (* DECCOLM ESC[?3l *) PROCEDURE SetSmoothScroll; (* DECSCLM ESC[?4h *) PROCEDURE SetJumpScroll; (* DECSCLM ESC[?4l *) PROCEDURE SetReverseScreen; (* DECSCNM ESC[?5h *) PROCEDURE SetNormalScreen; (* DECSCNM ESC[?5l *) PROCEDURE SetRelativeOrigin; (* DECOM ESC[?6h *) PROCEDURE SetAbsoluteOrigin; (* DECOM ESC[?6l *) PROCEDURE SetAutoWrap; (* DECAWM ESC[?7h *) PROCEDURE ResetAutoWrap; (* DECAWM ESC[?7l *) PROCEDURE SetAutoRepeat; (* DECARM ESC[?8h *) PROCEDURE ResetAutoRepeat; (* DECARM ESC[?8l *) PROCEDURE SetInterlace; (* DECINLM ESC[?9h *) PROCEDURE ResetInterlace; (* DECINLM ESC[?9l *) (* Keypad *) PROCEDURE SetAltKeypad; (* DECKPAM ESC= *) PROCEDURE SetNumKeypad; (* DECKPNM ESC> *) (* Character sets *) PROCEDURE SetUK_G0; (* ESC(A *) PROCEDURE SetUS_G0; (* ESC(B *) PROCEDURE SetGraphics_G0;(* ESC(0 *) PROCEDURE SetAlt_G0; (* ESC(1 *) PROCEDURE SetAltGraph_G0;(* ESC(2 *) PROCEDURE SetUK_G1; (* ESC)A *) PROCEDURE SetUS_G1; (* ESC)B *) PROCEDURE SetGraphics_G1;(* ESC)0 *) PROCEDURE SetAlt_G1; (* ESC)1 *) PROCEDURE SetAltGraph_G1;(* ESC)2 *) PROCEDURE Shift2; (* SS2 ESC N *) PROCEDURE Shift3; (* SS3 ESC O *) (* Reports / identification / reset *) PROCEDURE RequestDeviceStatus; (* DSR ESC[5n *) PROCEDURE RequestCursorPosition; (* DSR ESC[6n, response ESC[line;colR *) PROCEDURE Identify; (* DA ESC[c *) PROCEDURE Identify2; (* DA ESC[0c *) PROCEDURE ResetTerminal; (* RIS ESC c *) (* LEDs / confidence tests *) PROCEDURE LedsOff; (* DECLL ESC[0q *) PROCEDURE Led1; (* DECLL ESC[1q *) PROCEDURE Led2; (* DECLL ESC[2q *) PROCEDURE Led3; (* DECLL ESC[3q *) PROCEDURE Led4; (* DECLL ESC[4q *) PROCEDURE TestPowerUp; (* DECTST ESC[2;1y *) PROCEDURE TestLoopback; (* DECTST ESC[2;2y *) PROCEDURE TestPowerRepeat; (* DECTST ESC[2;9y *) PROCEDURE TestLoopRepeat; (* DECTST ESC[2;10y *) (* Terminal input mode: call Unbuffered before reading device replies (e.g. CPR) so no RETURN key is needed; call Buffered afterwards to restore the saved state. *) PROCEDURE Unbuffered; PROCEDURE Buffered; END VT100.