/* `draw' by shudder */ #include #include #include int vga_init (void); int vga_setmode (int mode); int vga_getdefaultmode (void); int vga_setcolor (int color); int vga_drawpixel (int x, int y); int vga_getch (); int vga_hasmode (int mode); int main () { int x = 0; int y = 0; int mychar; int mode; int color = 9; printf ("Control keys: \033[1mE\033[0m - erase screen; \033[1mQ\033[0m - quit\n"); printf (" \033[1mI\033[0m - up\n"); printf (" left - \033[1mJ K\033[0m - right\n"); printf (" down - \033[1mM\033[0m\n"); printf ("Color keys: "); printf ("\033[1;34m1 \033[1;32m2 \033[1;36m3 \033[1;31m4 "); printf ("\033[1;35m5 \033[1;33m6 \033[1;39m7\033[0m\n"); printf ("Modes:\n"); printf ("1 - \033[1m320\033[0mx\033[1m200\033[0mx\033[1m16\033[0m\n"); printf ("2 - \033[1m640\033[0mx\033[1m200\033[0mx\033[1m16\033[0m\n"); printf ("3 - \033[1m640\033[0mx\033[1m350\033[0mx\033[1m16\033[0m\n"); printf ("4 - \033[1m640\033[0mx\033[1m480\033[0mx\033[1m16\033[0m\n"); printf ("5 - \033[1m320\033[0mx\033[1m200\033[0mx\033[1m256\033[0m\n"); printf ("6 - \033[1m320\033[0mx\033[1m240\033[0mx\033[1m256\033[0m\n"); printf ("7 - \033[1m320\033[0mx\033[1m400\033[0mx\033[1m256\033[0m\n"); printf ("8 - \033[1m360\033[0mx\033[1m480\033[0mx\033[1m256\033[0m\n"); printf ("9 - \033[1m640\033[0mx\033[1m480\033[0mx\033[1m2\033[0m\n"); printf ("10 - \033[1m640\033[0mx\033[1m480\033[0mx\033[1m256\033[0m\n"); printf ("11 - \033[1m800\033[0mx\033[1m600\033[0mx\033[1m256\033[0m\n"); printf ("12 - \033[1m1024\033[0mx\033[1m768\033[0mx\033[1m256\033[0m\n"); printf ("13 - \033[1m1280\033[0mx\033[1m1024\033[0mx\033[1m256\033[0m\n"); printf ("Enter mode number: "); scanf ("%d", &mode); printf ("Probing mode...\n"); if (mode < 1 || mode > 13) { printf ("Invalid mode!\n"); exit (1); } if (!vga_hasmode (mode)) { printf ("\033[1;31mThe selected mode is not supported\n"); printf ("BURNING VIDEO ADAPTER AFTER 5 SECONDS...\033[0m\n"); sleep (5); exit (1); } vga_init (); vga_setmode (mode); vga_setcolor (color); for (;;) { mychar = vga_getch (); /* 105 - I 106 - J 107 - K 109 - M 113 - Q 101 - E 99 - C */ if (mychar == 105) y--; if (mychar == 106) x--; if (mychar == 107) x++; if (mychar == 109) y++; if (mychar == 113) return 0; if (mychar == 101) vga_clear (); if (mychar == 48) vga_setcolor (0); if (mychar > 48 && mychar < 56) vga_setcolor (mychar - 40); vga_drawpixel (x, y); } } /* Making: gcc -o draw draw.c -lvga */