#include #include int vga_init (void); int vga_setmode (int mode); int vga_setcolor (int color); int vga_hasmode (int mode); int vga_getch (void); int vga_drawpixel (int x, int y); int vga_drawline (int x1, int y1, int x2, int y2); int c, mychar, mode, color; int x = 0; int y = 0; main () { printf ("1. 320x200x16\n"); printf ("2. 640x200x16\n"); printf ("3. 640x350x16\n"); printf ("4. 640x480x16\n"); printf ("5. 320x200x256\n"); printf ("6. 320x240x256\n"); printf ("7. 320x400x256\n"); printf ("8. 360x480x256\n"); printf ("9. 640x480x2\n"); printf ("10. 640x480x256\n"); printf ("11. 800x600x256\n"); printf ("12. 1024x768x256\n"); printf ("13. 1280x1024x256\n\n"); printf ("Select mode: "); scanf ("%d", &mode); if (mode < 1 || mode > 13) { printf ("Invalid mode\n"); exit (1); } if (!vga_hasmode (mode)) { printf ("The mode is not supported.\n"); exit (127); } printf ("1. \033[0;34mblue\033[0m\n"); printf ("2. \033[0;32mgreen\033[0m\n"); printf ("3. \033[0;36mcyan\033[0m\n"); printf ("4. \033[0;31mred\033[0m\n"); printf ("5. \033[0;35mpurple\033[0m\n"); printf ("6. \033[0;33morange\033[0m\n"); printf ("7. gray\n"); printf ("8. \033[1;30mdarkgray\033[0m\n"); printf ("9. \033[1;34mblue\033[0m\n"); printf ("10. \033[1;32mgreen\033[0m\n"); printf ("11. \033[1;36mcyan\033[0m\n"); printf ("12. \033[1;31mred\033[0m\n"); printf ("13. \033[1;35mpink\033[0m\n"); printf ("14. \033[1;33myellow\033[0m\n"); printf ("15. \033[1mwhite\033[0m\n"); printf ("Select color: "); scanf ("%d", &color); if (color < 1 || color > 15) { printf ("Invalid color\n"); exit (1); } vga_init (); vga_setmode (mode); vga_setcolor (color); for (;;) { mychar = vga_getch (); if (mychar == 32) x = x + 6; if (mychar == 10) { y = y + 8; x = 0; } if (mychar == 127) { if (x != 0) { vga_setcolor (0); x = x - 6; for (c = 0; c < 6; c++) vga_drawline (x, y + c, x + 4, y + c); vga_setcolor (color); } } if (mychar == 27) { color = color + 1; if (color > 15) color = 1; vga_setcolor (color); } if (x > 315) { x = 0; y = y + 7; } if (mychar == 97 || mychar == 65) { vga_drawline (x + 1, y, x + 3, y); vga_drawline (x, y + 1, x, y + 4); vga_drawline (x + 4, y + 1, x + 4, y + 4); vga_drawline (x + 1, y + 2, x + 3, y + 2); x = x + 6; } if (mychar == 98 || mychar == 66) { vga_drawline (x, y, x + 3, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawpixel (x + 3, y + 1); vga_drawpixel (x + 4, y + 3); x = x + 6; } if (mychar == 99 || mychar == 67) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 100 || mychar == 68) { vga_drawline (x, y, x + 3, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 4, x + 3, y + 4); vga_drawline (x + 4, y + 1, x + 4, y + 3); x = x + 6; } if (mychar == 101 || mychar == 69) { vga_drawline (x, y, x, y + 4); vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 3, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 102 || mychar == 70) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 3, y + 2); vga_drawline (x, y, x, y + 4); x = x + 6; } if (mychar == 103 || mychar == 71) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawline (x + 4, y + 2, x + 4, y + 4); vga_drawpixel (x + 3, y + 2); x = x + 6; } if (mychar == 104 || mychar == 72) { vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); x = x + 6; } if (mychar == 105 || mychar == 73) { vga_drawline (x, y, x + 4, y); vga_drawline (x + 2, y, x + 2, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 106 || mychar == 74) { vga_drawline (x + 1, y, x + 4, y); vga_drawline (x + 3, y, x + 3, y + 3); vga_drawline (x + 1, y + 4, x + 2, y + 4); vga_drawpixel (x, y + 3); x = x + 6; } if (mychar == 107 || mychar == 75) { vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 4, x + 4, y); vga_drawline (x + 2, y + 2, x + 4, y + 4); x = x + 6; } if (mychar == 108 || mychar == 76) { vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 109 || mychar == 77) { vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y, x + 2, y + 2); vga_drawline (x + 2, y + 2, x + 4, y); x = x + 6; } if (mychar == 110 || mychar == 78) { vga_drawline (x, y, x + 4, y + 4); vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); x = x + 6; } if (mychar == 111 || mychar == 79) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 112 || mychar == 80) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawpixel (x + 4, y + 1); x = x + 6; } if (mychar == 113 || mychar == 81) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 4, x + 2, y + 4); vga_drawpixel (x + 3, y + 3); x = x + 6; } if (mychar == 114 || mychar == 82) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x + 2, y + 2, x + 4, y + 4); vga_drawpixel (x + 4, y + 1); x = x + 6; } if (mychar == 115 || mychar == 83 || mychar == 53) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawpixel (x, y + 1); vga_drawpixel (x + 4, y + 3); x = x + 6; } if (mychar == 116 || mychar == 84) { vga_drawline (x, y, x + 4, y); vga_drawline (x + 2, y, x + 2, y + 4); x = x + 6; } if (mychar == 117 || mychar == 85) { vga_drawline (x, y, x, y + 3); vga_drawline (x + 4, y, x + 4, y + 3); vga_drawline (x + 1, y + 4, x + 3, y + 4); x = x + 6; } if (mychar == 118 || mychar == 86) { vga_drawline (x, y, x, y + 2); vga_drawline (x + 4, y, x + 4, y + 2); vga_drawline (x, y + 2, x + 2, y + 4); vga_drawline (x + 4, y + 2, x + 2, y + 4); x = x + 6; } if (mychar == 119 || mychar == 87) { vga_drawline (x, y, x, y + 3); vga_drawline (x + 4, y, x + 4, y + 3); vga_drawline (x + 2, y + 2, x + 2, y + 3); vga_drawpixel (x + 1, y + 4); vga_drawpixel (x + 3, y + 4); x = x + 6; } if (mychar == 120 || mychar == 88) { vga_drawline (x, y, x + 4, y + 4); vga_drawline (x + 4, y, x, y + 4); x = x + 6; } if (mychar == 121 || mychar == 89) { vga_drawline (x, y, x + 2, y + 2); vga_drawline (x + 4, y, x + 2, y + 2); vga_drawline (x + 2, y + 2, x + 2, y + 4); x = x + 6; } if (mychar == 122 || mychar == 90) { vga_drawline (x, y, x + 4, y); vga_drawline (x + 4, y, x, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); x = x + 6; } if (mychar == 44) { vga_drawline (x + 2, y + 4, x + 1, y + 5); x = x + 6; } if (mychar == 46) { vga_drawpixel (x + 2, y + 4); x = x + 6; } if (mychar == 47) { vga_drawline (x + 4, y, x, y + 4); x = x + 6; } if (mychar == 33) { vga_drawline (x + 2, y, x + 2, y + 2); vga_drawpixel (x + 2, y + 4); x = x + 6; } if (mychar == 58) { vga_drawpixel (x + 2, y + 1); vga_drawpixel (x + 2, y + 3); x = x + 6; } if (mychar == 48) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawpixel (x + 2, y + 2); x = x + 6; } if (mychar == 49) { vga_drawline (x + 2, y + 2, x + 4, y); vga_drawline (x + 4, y, x + 4, y + 4); x = x + 6; } if (mychar == 50) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawpixel (x + 4, y + 1); vga_drawpixel (x, y + 3); x = x + 6; } if (mychar == 51) { vga_drawline (x, y, x + 4, y); vga_drawline (x + 1, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawline (x + 4, y + 4, x + 4, y); x = x + 6; } if (mychar == 52) { vga_drawline (x, y, x, y + 2); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); x = x + 6; } if (mychar == 54) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawline (x, y, x, y + 4); vga_drawpixel (x + 4, y + 3); x = x + 6; } if (mychar == 55) { vga_drawline (x, y, x + 4, y); vga_drawline (x + 4, y + 1, x + 1, y + 4); x = x + 6; } if (mychar == 56) { vga_drawline (x, y, x + 4, y); vga_drawline (x, y, x, y + 4); vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); x = x + 6; } if (mychar == 57) { vga_drawline (x + 4, y, x + 4, y + 4); vga_drawline (x, y, x + 4, y); vga_drawline (x, y + 2, x + 4, y + 2); vga_drawline (x, y + 4, x + 4, y + 4); vga_drawpixel (x, y + 1); x = x + 6; } if (mychar == 61) { vga_drawline (x, y + 1, x + 4, y + 1); vga_drawline (x, y + 3, x + 4, y + 3); x = x + 6; } if (mychar == 43) { vga_drawline (x + 2, y, x + 2, y + 4); vga_drawline (x, y + 2, x + 4, y + 2); x = x + 6; } if (mychar == 45) { vga_drawline (x, y + 2, x + 4, y + 2); x = x + 6; } if (mychar == 39) { vga_drawline (x + 3, y, x + 3, y + 1); x = x + 6; } if (mychar == 124) { vga_drawline (x + 2, y, x + 2, y + 4); x = x + 6; } if (mychar == 63) { vga_drawline (x + 1, y, x + 3, y); vga_drawline (x + 4, y + 1, x + 3, y + 2); vga_drawpixel (x + 2, y + 4); vga_drawpixel (x, y + 1); x = x + 6; } } }