Ansi.def 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. DEFINITION MODULE Ansi;
  2. (*
  3. ANSI escape sequences per docs/VT100-3.txt, docs/VT100.txt.
  4. Modern terminal superset: CSI cursor/erase/SGR/colors,
  5. DOS screen modes ESC[=, private modes ESC[?, print.
  6. Pure emitter, same pattern as VT100/VT52, plus
  7. Unbuffered/Buffered input-mode helpers (termios).
  8. *)
  9. TYPE
  10. Attr = (ResetA, BoldA, DimA, ItalicA, UnderlineA, BlinkA,
  11. InverseA, HiddenA, StrikeA);
  12. Color = (Black, Red, Green, Yellow, Blue, Magenta, Cyan, White,
  13. Default,
  14. BrightBlack, BrightRed, BrightGreen, BrightYellow,
  15. BrightBlue, BrightMagenta, BrightCyan, BrightWhite);
  16. (* Cursor *)
  17. PROCEDURE Home; (* ESC[H *)
  18. PROCEDURE Position(line, col : CARDINAL); (* ESC[line;colH *)
  19. PROCEDURE HVPosition(line, col : CARDINAL); (* ESC[line;colf *)
  20. PROCEDURE Up(n : CARDINAL); (* ESC[nA *)
  21. PROCEDURE Down(n : CARDINAL); (* ESC[nB *)
  22. PROCEDURE Right(n : CARDINAL); (* ESC[nC *)
  23. PROCEDURE Left(n : CARDINAL); (* ESC[nD *)
  24. PROCEDURE NextLine(n : CARDINAL); (* ESC[nE *)
  25. PROCEDURE PrevLine(n : CARDINAL); (* ESC[nF *)
  26. PROCEDURE ToColumn(n : CARDINAL); (* ESC[nG *)
  27. PROCEDURE CursorUpScroll; (* ESC M *)
  28. PROCEDURE SaveDEC; (* ESC 7 *)
  29. PROCEDURE RestoreDEC; (* ESC 8 *)
  30. PROCEDURE SaveSCO; (* ESC[s *)
  31. PROCEDURE RestoreSCO; (* ESC[u *)
  32. PROCEDURE RequestPosition; (* ESC[6n *)
  33. (* Erase *)
  34. PROCEDURE EraseDown; (* ESC[J / ESC[0J *)
  35. PROCEDURE EraseUp; (* ESC[1J *)
  36. PROCEDURE EraseScreen; (* ESC[2J *)
  37. PROCEDURE EraseSavedLines; (* ESC[3J *)
  38. PROCEDURE EraseLineRight; (* ESC[K / ESC[0K *)
  39. PROCEDURE EraseLineLeft; (* ESC[1K *)
  40. PROCEDURE EraseLine; (* ESC[2K *)
  41. (* SGR attributes *)
  42. PROCEDURE SGR(a : Attr);
  43. PROCEDURE SGRReset; (* ESC[0m *)
  44. PROCEDURE SGRResetBoldDim; (* ESC[22m *)
  45. PROCEDURE SGRResetItalic; (* ESC[23m *)
  46. PROCEDURE SGRResetUnderline;(* ESC[24m *)
  47. PROCEDURE SGRResetBlink; (* ESC[25m *)
  48. PROCEDURE SGRResetInverse; (* ESC[27m *)
  49. PROCEDURE SGRResetHidden; (* ESC[28m *)
  50. PROCEDURE SGRResetStrike; (* ESC[29m *)
  51. PROCEDURE SetAttr(a : Attr; fg, bg : Color); (* ESC[a;fg;bgm *)
  52. (* Colors *)
  53. PROCEDURE FG(c : Color); (* ESC[30..37/90..97/39m *)
  54. PROCEDURE BG(c : Color); (* ESC[40..47/100..107/49m *)
  55. PROCEDURE FG256(id : CARDINAL); (* ESC[38;5;IDm *)
  56. PROCEDURE BG256(id : CARDINAL); (* ESC[48;5;IDm *)
  57. PROCEDURE FGRGB(r, g, b : CARDINAL); (* ESC[38;2;r;g;bm *)
  58. PROCEDURE BGRGB(r, g, b : CARDINAL); (* ESC[48;2;r;g;bm *)
  59. (* DOS screen modes ESC[= *)
  60. PROCEDURE DosMode(v : CARDINAL); (* ESC[=vh, 0..7,13..19 *)
  61. PROCEDURE DosModeReset(v : CARDINAL); (* ESC[=vl *)
  62. PROCEDURE WrapOn; (* ESC[=7h *)
  63. PROCEDURE WrapOff; (* ESC[=7l, spec exception *)
  64. (* Private modes ESC[? *)
  65. PROCEDURE CursorInvisible; (* ESC[?25l *)
  66. PROCEDURE CursorVisible; (* ESC[?25h *)
  67. PROCEDURE ScreenSave; (* ESC[?47h *)
  68. PROCEDURE ScreenRestore; (* ESC[?47l *)
  69. PROCEDURE AltBufferOn; (* ESC[?1049h *)
  70. PROCEDURE AltBufferOff; (* ESC[?1049l *)
  71. (* Print *)
  72. PROCEDURE PrintScreen; (* ESC[i *)
  73. PROCEDURE PrintLine; (* ESC[1i *)
  74. PROCEDURE StopLog; (* ESC[4i *)
  75. PROCEDURE StartLog; (* ESC[5i *)
  76. (* Control chars *)
  77. PROCEDURE Bell; (* BEL 07 *)
  78. PROCEDURE Backspace; (* BS 08 *)
  79. PROCEDURE HTab; (* HT 09 *)
  80. PROCEDURE LineFeed; (* LF 10 *)
  81. PROCEDURE VTab; (* VT 11 *)
  82. PROCEDURE FormFeed; (* FF 12 *)
  83. PROCEDURE CarriageReturn; (* CR 13 *)
  84. (* Terminal input mode: call Unbuffered before reading device
  85. replies (e.g. CPR) so no RETURN key is needed; call
  86. Buffered afterwards to restore the saved state. *)
  87. PROCEDURE Unbuffered;
  88. PROCEDURE Buffered;
  89. END Ansi.