ANSI Escape codes have no effect unless ANSI.SYS has been installed via a
DEVICE= command in CONFIG.SYS.  Use INT 2fH 1a00H to see if it is
installed.  Just output the codes to the CON device (see Character I/O).
Several examples are included at the end of this topic.

Note: Since you can't be certain that all computers have ANSI.SYS
installed, most programmers do not rely on using these codes in
commercial applications.

In the following list, items in this color are parameters (usually numeric
values in decimal) and the   character is an ESC (ASCII 27 or 1bH).

Sequence (  is ESC) Function
                                                                         
  Cursor Motion  
 [row;clmH         positions the cursor. Default is 1;1 (top left corner)

 [row;clmf         (same as above)

 [rowsA            moves the cursor up.  Default: 1.  Won't go above top.

 [rowsB            moves cursor down.  Default: 1. Won't go below bottom.

 [clmsC            moves the cursor forward (to the right) Default: 1

 [clmsD            moves the cursor backward (to the left) Default: 1

  Erase Operations  
 [2J               erases the screen and homes the cursor

 [K                erases to the end of the current line

  Miscellaneous  
 [6n               outputs the current line and column in the form:
 [row;clmR

 [s                saves the current cursor position (see  [u)

 [u                restores cursor to last position saved by  [s

  Screen Control  
 [attr;...;attrm   sets display attributes. attr values are:
0  normal     (white on black)
1  bold       (character colors are high-intensity)
4  underline  (IBM Monochrome monitor only)
5  blink      (foreground blinks)
7  reverse    (black on white)
8  no display (foreground = background)
30  BLACK foreground     40  BLACK background
31  RED foreground       41  RED background
32  GREEN foreground     42  GREEN background
33  YELLOW foreground    43  YELLOW background
34  BLUE foreground      44  BLUE background
35  MAGENTA foreground   45  MAGENTA background
36  CYAN foreground      46  CYAN background
37  WHITE foreground     47  WHITE background

 [=modeh           sets screen width and mode where mode values are:
0  40x25 text mode black and white
1  40x25 text mode color
2  80x25 text mode black and white
3  80x25 text mode color
4  320x200 graphics mode color
5  320x200 graphics mode black and white
6  640x200 graphics mode black and white
7  Causes cursor to wrap to new line at end of line.

 [=7l              stops cursor from wrapping at end of line

  Keyboard Redefinition  
 [num;num...nump   redefines a keystroke so it yields different values.
or               The first num (or first character of string) is
 ["string"p        the key being redefined.  The following values are the
or               new value for the key.
 [num;"string"p    The following redefines Ctrl-D key to be: DIR C:[Enter]
or                   [4;"DIR C:";13p
various
combinations       Certain keystrokes must be defined with two nums.
For example, [F1] is:  0;59; and [Home] is:  0;71;
The following redefines the F10 key to be: DIR [Enter]
 [0;68;"DIR";13p

See Extended ASCII Keystrokes for a full listing.

Note: To reset a key to its original value, use its
num code(s) twice. The following resets [F10].
 [0;68;0;68p
                                                                           

One way to find if ANSI.SYS is installed, is to display the  [6n function
and immediately read standard input.  It should yield a value in the form:
 [row;clmR.

Another way is to use INT 2fH 1a00H (get ANSI.SYS state) DOS 3.0+

                                                                            
Here are some examples usages in two programming languages:

;============================= ASM example =========================
data_seg  segment
ColorMode db  1bH,'=3h','$'
SetF10    db  1bH,'0;68;"F10 was pressed"p','$'
data_seg  ends

code_seg segment
mov  dx,offset ColorMode  ;set screen to 80x25 color mode
mov  ah,9                 ;DOS display string function
int  21H
mov  dx,offset SetF10     ;redefine F10 key to a string of text
mov  ah,9
int  21H
code_seg ends

/* ====================== C function example ======================= */
set_cursor(row,clm)
int row,clm;
{
printf("%c[%d;%dH",27,row,clm)
}
                                                                            
It is difficult to experiment with ANSI sequences from the DOS command
line since DOS does not allow direct keyboard input of the ESC character.
Here are three ways to experiment:

  Use DOS's Edit command (DOS 5.0+) to create a batch file:
                                        (BLUEIT.BAT)
 @ECHO OFF
 REM -- clears screen to yellow on blue
 ECHO  [0;33;44m [2J
                                                    
Note: To make the   character in Edit, press Ctrl+P then press Esc.

  Use the PROMPT command to output an ESC to the console. For instance:
                     (SETANSI.BAT)
 ECHO ON
 PROMPT $e[7m                     sets up to display in reverse video
 PROMPT $e[0;68;"DIR";13p         redefines the F10 key
 PROMPT $p$g                      sets the prompt back to normal
                                 

  Create a disk file with BASIC and then TYPE it from DOS:
OPEN "ansitest.txt" FOR OUTPUT AS #1
PRINT #1,CHR$(27);"[7m"             '** display reverse video
PRINT #1,CHR$(27);"[0;68;'DIR';13p" '** define F10 key as DIR
SYSTEM
TYPE ansitest.txt

- -

ANSI Console Escape Sequences