# ifndef RB_CONSOLE
# define RB_CONSOLE
//console.h
// 0x00 Memory access row. Used to set which line of characters appears in the display memory window.
// 0x01 cursor x
// 0x02 cursor y
// 0x03 cursor mode (0: hidden, 1: solid, 2: blink)
// 0x04 key buffer start (16 byte buffer)
// 0x05 key buffer position
// 0x06 key value at buffer start
// 0x07 blit mode (1: fill, 2: invert; 3: shift)
// 0x08 blit x start / fill value
// 0x09 blit y start / fill color
// 0x0A blit x offset
// 0x0B blit y offset
// 0x0C blit width
// 0x0D blit height
// 0x10 -> 0x60 display memory window
typedef struct Console {
char line ;
char cursor_x ;
char cursor_y ;
char cursor_mode ;
char kb_start ;
char kb_pos ;
char kb_key ;
char blit_mode ;
char blit_start_x ;
char blit_start_y ;
char blit_offset_x ;
char blit_offset_y ;
char blit_width ;
char blit_height ;
unsigned int padding ;
char display [ 0x50 ] ;
char colors [ 0x50 ] ;
} Console ;
//character with inverted colors
# define inv(c) ((c) | 0x80)
//Originally commented out? Not sure why, there is a working blit in the test programs. Ive copied that over to conio.h so, this will stay commented out.
//void blit(char command, char x, char y, char xo, char yo, char w, char h);
# define fill(b, x, y, w, h) blit(1, b, 0, x, y, w, h)
# define invert(x, y, w, h) blit(2, 0, 0, x, y, w, h)
# define scroll(x, y, ox, oy, w, h) blit(3, x, y, ox, oy, w, h)
# endif