/* -------------------------------------------------------- v003_colpos.c ermoeglicht farbige Ausgaben und Cursorsteuerung in einem Terminal 10.04..2025 R. Seelig -------------------------------------------------------- */ #include "v003_colpos.h" /* Farbnummern der ESC-Sequenzen sw bl gn cy rt mg br gr 30, 34, 32, 36, 31, 35, 33, 37 Vordergrund 40, 44, 42, 46, 41, 45, 41, 47 Hintergrund */ uint8_t ega_colors [] = { 30, 34, 32, 36, 31, 35, 33, 37 }; uint8_t textattr = 0x07; /* ------------------------------------------------- clrscr loescht den Bildschirminhalt des seriellen Terminals ------------------------------------------------- */ void clrscr(void) { printf("\033[2J\033[H"); } /* ------------------------------------------------- gotoxy loescht den Bildschirminhalt des seriellen Terminals Uebergabe: x,y : Textkoordinate auf die der Cursor positioniert wird. Die Koordinate 1,1 repraesentiert hierbei die linke obere Ecke. ------------------------------------------------- */ void gotoxy(uint8_t x, uint8_t y) { printf("\033[%d;%dH",y,x); } /* ------------------------------------------------- settextattr setzt die Farben fuer Hintergrund und Text. Hier- bei repraesentieren die oberen 4 Bit die Hintergrund-, die unteren 4 Bit die Textfarbe. Die Farbnummerierung erfolgt nach dem EGA-Farbschema Argumente: attr : Farbattribut fuer Hinter- und Vordergrundfarbe ------------------------------------------------- */ void settextattr(uint8_t attr) { uint8_t bk, vg, bright; textattr= attr; bright= 0; bk= attr >> 4; if (bk > 7) { bk= bk & 0x07; } vg= attr & 0x0f; if (vg > 7) { vg= vg & 0x07; bright= 1; } printf("\033[49;%d;%d;%dm", bright,ega_colors[vg], ega_colors[bk]+10); }