;{- Code Header ; ==- Basic Info -================================ ; Name: AinsiEscapeCode.pbi ; Version: N/A ; Author: Herwin Bozet ; ; ==- Compatibility -============================= ; Compiler version: PureBasic 5.70 (x86/x64) ; Operating system: Windows 10 21H1 (Previous versions untested) ; ; ==- Links & License -=========================== ; License: Unlicense ;} ;- Module Declaration DeclareModule AinsiEscapeCode ;-> Documentation ; * https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences ; * https://invisible-island.net/xterm/ctlseqs/ctlseqs.html ; * https://en.wikipedia.org/wiki/ANSI_escape_code ;-> Constants ;-> > Control characters #BEL$ = #BEL$ #BS$ = #BS$ #HT$ = #TAB$ #LF$ = #LF$ #FF$ = #FF$ #CR$ = #CR$ #ESC$ = #ESC$ ;-> > Operators #CSI$ = "[" #OSC$ = "]" ;-> > Cursor #CUU$ = "A" ; Cursor Up by n #CUD$ = "B" ; Cursor Down by n #CUF$ = "C" ; Cursor Forward (Right) by n #CUB$ = "D" ; Cursor Backward (Left) by n #CNL$ = "E" ; Cursor Next Line by n #CPL$ = "F" ; Cursor Previous Line by n ;-> Buffer ? #ED$ = "J" ; Erase in Display #ED_0 = 0 ; 0 from cursor to end of screen #ED_1 = 1 ; 1 from cursor to beginning of the screen #ED_2 = 2 ; 2 clear entire screen (May move to 0:0) #ED_3 = 3 ; 3 clear entire screen and lines saved in the scrollback buffer. (Does not work on Windows as of 21H1 in Windows Terminal) ;-> Queries #DECXCPR$ = "6n" ; Emit the cursor position as: ESC [ ; R Where = cursor row and = cursor column #DECSC$ = "7" ; Save Cursor Position in Memory** #DECSR$ = "8" ; Restore Cursor Position from Memory** #RI$ = "M" ; Reverse Index – Performs the reverse operation of \n, moves cursor up one line, maintains horizontal position, scrolls buffer if necessary* ; https://invisible-island.net/xterm/ctlseqs/ctlseqs.html ; https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#cursor-positioning #CHA$ = "G" ; Cursor Horizontal Absolute Cursor moves to th position horizontally in the current line #VPA$ = "d" ; Vertical Line Position Absolute Cursor moves to the th position vertically in the current column #CUP$ = "H" ; Cursor Position *Cursor moves to ; coordinate within the viewport, where is the column of the line #HVP$ = "f" ; Horizontal Vertical Position *Cursor moves to ; coordinate within the viewport, where is the column of the line #ANSISYSSC_DECSC$ = "s" ; Save Cursor – Ansi.sys emulation **With no parameters, performs a save cursor operation like DECSC #ANSISYSSC_DECRC$ = "u" ; Restore Cursor – Ansi.sys emulation **With no parameters, performs a restore cursor operation like DECRC EndDeclareModule ;- Module Definition Module AinsiEscapeCode ; Nothing... EndModule