/***************************************************************************** * mandelbrot sample program for cc65. * * * * (w)2002 by groepaz/hitmen, TGI support by Stefan Haubenthal * *****************************************************************************/ #include #include #include #include /* Graphics definitions */ #if defined(__APPLE2__) || defined(__APPLE2ENH__) # define GRAPHMODE TGI_MODE_280_192_6 #else # define GRAPHMODE TGI_MODE_320_200_2 #endif #define SCREEN_X (tgi_getmaxx()+1) #define SCREEN_Y (tgi_getmaxy()+1) #define MAXCOL (tgi_getmaxcolor()+1) #define maxiterations 32 #define fpshift (10) #define tofp(_x) ((_x)<>fpshift) #define fpabs(_x) (abs(_x)) #define mulfp(_a,_b) ((((signed long)_a)*(_b))>>fpshift) #define divfp(_a,_b) ((((signed long)_a)<> (fpshift - 1)) + yy; r = r1; } if (count == maxiterations) { tgi_setcolor (0); } else { if (MAXCOL == 2) tgi_setcolor (1); else tgi_setcolor (count % MAXCOL); } /* set pixel */ tgi_setpixel (x, y); } } } int main (void) { clock_t t; unsigned long sec; unsigned sec10; unsigned char err; clrscr (); /* Load the graphics driver */ cprintf ("initializing... mompls\r\n"); tgi_load (GRAPHMODE); err = tgi_geterror (); if (err != TGI_ERR_OK) { cprintf ("Error #%d initializing graphics.\r\n%s\r\n", err, tgi_geterrormsg (err)); exit (EXIT_FAILURE); }; cprintf ("ok.\n\r"); /* Initialize graphics */ tgi_init (); tgi_clear (); t = clock (); /* calc mandelbrot set */ mandelbrot (tofp (-2), tofp (-2), tofp (2), tofp (2)); t = clock () - t; /* Fetch the character from the keyboard buffer and discard it */ (void) cgetc (); /* shut down gfx mode and return to textmode */ tgi_done (); /* Calculate stats */ sec = (t * 10) / CLK_TCK; sec10 = sec % 10; sec /= 10; /* Output stats */ cprintf ("time : %lu.%us\n\r", sec, sec10); /* Wait for a key, then end */ cputs ("Press any key when done...\n\r"); (void) cgetc (); /* Done */ return EXIT_SUCCESS; }