
#define BLACK 		0
#define RED		1
#define GREEN		2
#define YELLOW		3
#define BLUE		4
#define MAGENTA		5
#define CYAN		6
#define	WHITE		7


#define  ac_cursor_on() printf( "\x1b[>5l" ) 
#define  ac_cursor_off() printf( "\x1b[>5h" ) 

#define  ac_func_disp( sw ) ( sw ? printf("\x1b[>1l") : printf("\x1b[>1h") ) 

#define  ac_func_on() printf( "\x1b[>1l" ) // 
#define  ac_func_off() printf( "\x1b[>1h" ) // 

#define  ac_line25() printf( "\x1b[>3l" ) // Text 25line mode DOS ??
#define  ac_line20() printf( "\x1b[>3h" ) // Text 20line mode DOS ??

#define  ac_cursor_save() printf( "\x1b[s" ) //  Save Cursor Position
#define  ac_cursor_load() printf( "\x1b[u" ) //  Restore Cursor Position


#define  ac_attr1( attr )        printf( "\x1b[%dm", attr ) // 
#define  ac_attr2( attr1, attr2 )   printf( "\x1b[%d;%dm", attr1, attr2 ) 
#define  ac_attr3( attr1,attr2, attr3 )     printf( "\x1b[%d;%d;%dm", attr1, attr2, attr3 ) 
#define  ac_attr4( attr1, attr2, attr3, attr4 ) printf( "\x1b[%d;%d;%d;%dm", attr1, attr2, attr3, attr4 ) 
#define  ac_attr_color( c )   printf( "\x1b[%dm", c<0 ? 40-c%8 : 30+c%8 ) 

#define  ac_fgcolor(fc)       printf("\x1B[%dm",(int)(fc)+30)
#define  ac_bgcolor(bc)       printf("\x1B[%dm",(int)(bc)+40)



#define  ac_attr_off()        printf( "\x1b[m")  //   Turn off character attributes
#define  ac_attr_off0()        printf( "\x1b[0m")//   Turn off character attributes
#define  ac_attr_bold()       printf( "\x1b[1m") //   Turn Bold or increased intensity on
#define  ac_attr_low()        printf( "\x1b[2m") //   Turn low intensity mode on
#define  ac_attr_underline()  printf( "\x1b[4m") //   Turn underline mode on
#define  ac_attr_blink()      printf( "\x1b[5m") //   Turn blinking mode on
#define  ac_attr_reverse()    printf( "\x1b[7m") //   Turn reverse video on
#define  ac_attr_invisible()  printf( "\x1b[8m") //   Turn invisible text mode on


// 
#define  ac_cursor_under_()   printf( "\x1b[H" )  //    Move cursor to upper left corner
#define  ac_cursor_under()    printf( "\x1b[;H" ) //    Move cursor to upper left corner

#define  ac_cursor_under()    printf( "\x1bD" ) // 
#define  ac_cursor_return()   printf( "\x1bE" ) // 
#define  ac_cursor_over()     printf( "\x1bM" ) // 
#define  ac_gotoxy( r, l )    printf( "\x1b[%d;%dH", l, r ) //
#define  ac_gotox( r )    printf( "\x1b[;%dH", r )
#define  ac_gotoy( l )    printf( "\x1b[%dH", l )
 

#define  ac_cursor_up( l )    printf( "\x1b[%dA", l ) // Move cursor up   l lines
#define  ac_cursor_down( l )  printf( "\x1b[%dB", l ) // Move cursor down l lines 
#define  ac_cursor_right( r ) printf( "\x1b[%dC", r ) // Move cursor right r rows
#define  ac_cursor_left( r )  printf( "\x1b[%dD", r ) // Move cursor left  r rows
#define  ac_cursor_moverel( l, r ) {\
( l < 0 ? printf("\x1b[%dA",l) : printf("\x1b[%dB",l) );\
( r < 0 ? printf("\x1b[%dD",r) : printf("\x1b[%dC",r) ); } //

#define  ac_cuu()  printf("\x1b[A")  // Move cursor up   1 lines
#define  ac_cud()  printf("\x1b[B")  // Move cursor down 1 lines 
#define  ac_cuf()  printf("\x1b[C")  // Move cursor right 1 rows
#define  ac_cub()  printf("\x1b[D")  // Move cursor left  1 rows


#define  ac_scroll_up()       printf( "\x1bD" )   //    Move/scroll window up one line
//#define  ac_scroll_down()     printf( "\x1bM" )   //    Move/scroll window down one line
#define  ac_scroll_down()     printf( "\x1bT" )   //    Move/scroll window down one line

#define  ac_clrscr()          printf( "\x1b[2J" ) //  Erase Display
#define  ac_erase_tolast()    printf( "\x1b[0J" ) //  Clear screen from cursor down
#define  ac_erase_fromfirst() printf( "\x1b[1J" ) //  Clear screen from cursor up 


#define  ac_erase_toright()   printf( "\x1b[K" )  //  Clear line from cursor right 
#define  ac_erase_toright0()   printf("\x1b[0K" ) //  Clear line from cursor right 
#define  ac_erase_fromleft()  printf( "\x1b[1K" ) //  Erase from the start of the screen to the active position, inclusive
#define  ac_erase_line()      printf( "\x1b[2K" ) //  Clear entire line 
#define  ac_dellines( l )          printf( "\x1b[%dM", l ) // 
#define  ac_inslines( l )          printf( "\x1b[%dL", l ) //

// =====================================================================

//#define ac_backspace    printf( "\x1B[1D\x1B[K")
//#define ac_deleteline   printf( "\x1B[K" )