#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
+#include <ctype.h>
#include <modload.h>
#include <tgi.h>
+#define COLOR_BACK COLOR_BLACK
+#define COLOR_FORE COLOR_WHITE
/*****************************************************************************/
0x22,0x20,0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18,
0x17,0x16,0x15,0x14,0x13,0x12,0x12,0x11,0x10,0x10,
0x0F,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,
- 0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,0x0B,0x0B,0x0B,0x0B,
+ 0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,
0x0B,0x0B,0x0B,0x0C,0x0C,0x0C,0x0D,0x0D,0x0E,0x0E,
0x0F,0x10,0x10,0x11,0x12,0x12,0x13,0x14,0x15,0x16,
0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,
0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,
0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB6,0xB7,0xB8,0xB8,
0xB9,0xBA,0xBA,0xBB,0xBB,0xBC,0xBC,0xBC,0xBD,0xBD,
- 0xBD,0xBD,0xBD,0xBD,0xBD,0xBE,0xBD,0xBD,0xBD,0xBD,
+ 0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,
0xBD,0xBD,0xBD,0xBC,0xBC,0xBC,0xBB,0xBB,0xBA,0xBA,
0xB9,0xB8,0xB8,0xB7,0xB6,0xB6,0xB5,0xB4,0xB3,0xB2,
0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,
/* Driver stuff */
-static unsigned XRes;
-static unsigned YRes;
+static unsigned MaxX;
+static unsigned MaxY;
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
}
+
static void DoWarning (void)
/* Warn the user that the TGI driver is needed for this program */
{
printf ("Warning: This program needs the TGI\n"
"driver on disk! Press 'y' if you have\n"
"it - any other key exits.\n");
- if (cgetc () != 'y') {
+ if (tolower (cgetc ()) != 'y') {
exit (EXIT_SUCCESS);
}
printf ("Ok. Please wait patiently...\n");
static void DoCircles (void)
{
- static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_LIGHTRED };
+ static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_ORANGE };
unsigned char I;
- unsigned char Color = 1;
+ unsigned char Color = COLOR_FORE;
+ unsigned X = MaxX / 2;
+ unsigned Y = MaxY / 2;
tgi_setpalette (Palette);
while (!kbhit ()) {
- tgi_setcolor (1);
- tgi_line (0, 0, 319, 199);
- tgi_line (0, 199, 319, 0);
+ tgi_setcolor (COLOR_FORE);
+ tgi_line (0, 0, MaxX, MaxY);
+ tgi_line (0, MaxY, MaxX, 0);
tgi_setcolor (Color);
for (I = 10; I < 240; I += 10) {
- tgi_circle (160, 100, I);
+ tgi_circle (X, Y, I);
}
- Color ^= 0x01;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
cgetc ();
unsigned char Color;
tgi_setpalette (Palette);
- Color = 0;
+ Color = COLOR_BACK;
while (1) {
- for (Y = 0; Y < YRes; Y += 10) {
- for (X = 0; X < XRes; X += 10) {
+ for (Y = 0; Y <= MaxY; Y += 10) {
+ for (X = 0; X <= MaxX; X += 10) {
tgi_setcolor (Color);
tgi_bar (X, Y, X+9, Y+9);
- Color ^= 0x01;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
if (kbhit ()) {
cgetc ();
tgi_clear ();
return;
}
}
- Color ^= 0x01;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
- Color ^= 0x01;
+ Color = Color == COLOR_FORE ? COLOR_BACK : COLOR_FORE;
}
}
static void DoDiagram (void)
{
static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
- unsigned X;
+ unsigned X, I;
tgi_setpalette (Palette);
- tgi_setcolor (1);
- tgi_line (10, 10, 10, 190);
- tgi_lineto (310, 190);
+ tgi_setcolor (COLOR_FORE);
+ tgi_line (10, 10, 10, MaxY-10);
+ tgi_lineto (MaxX-10, MaxY-10);
tgi_line (8, 12, 10, 10);
tgi_lineto (12, 12);
- tgi_line (308, 188, 310, 190);
- tgi_lineto (308, 192);
- for (X = 0; X < sizeof (SinusTable); ++X) {
- tgi_setpixel (X+10, SinusTable[X]);
+ tgi_line (MaxX-12, MaxY-12, MaxX-10, MaxY-10);
+ tgi_lineto (MaxX-12, MaxY-8);
+ for (I = 0, X = 10; X < MaxX-10; ++X) {
+ tgi_setpixel (X, SinusTable[I]);
+ if (++I >= sizeof (SinusTable)) {
+ I = 0;
+ }
}
cgetc ();
}
+
static void DoLines (void)
{
static const unsigned char Palette[2] = { COLOR_WHITE, COLOR_BLACK };
unsigned X;
tgi_setpalette (Palette);
- tgi_setcolor (1);
-
- for (X = 0; X < 200; X+=10) {
- tgi_line(0, 0, 200, X);
- tgi_line(0, 0, X, 200);
- tgi_line(200, 200, 0, 200-X);
- tgi_line(200, 200, 200-X, 0);
+ tgi_setcolor (COLOR_FORE);
+
+ for (X = 0; X <= MaxY; X += 10) {
+ tgi_line (0, 0, MaxY, X);
+ tgi_line (0, 0, X, MaxY);
+ tgi_line (MaxY, MaxY, 0, MaxY-X);
+ tgi_line (MaxY, MaxY, MaxY-X, 0);
}
-
+
cgetc ();
tgi_clear ();
}
+
+
int main (void)
{
unsigned char Border;
DoWarning ();
/* Load and initialize the driver */
- tgi_load (TGI_MODE_320_200_2);
+ tgi_load_driver (tgi_stddrv);
CheckError ("tgi_load");
- tgi_init (TGI_MODE_320_200_2);
+ tgi_init ();
CheckError ("tgi_init");
/* Get stuff from the driver */
- XRes = tgi_getxres ();
- YRes = tgi_getyres ();
+ MaxX = tgi_getmaxx ();
+ MaxY = tgi_getmaxy ();
/* Set the palette, set the border color */
Border = bordercolor (COLOR_BLACK);
tgi_unload ();
/* Reset the border */
- bordercolor (Border);
+ (void) bordercolor (Border);
/* Done */
printf ("Done\n");