X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hacks%2Fm6502.c;h=7814912264ca4871c23d457592b54b4e48d0ac0e;hb=8afc01a67be4fbf3f1cc0fce9adf01b5289a21c6;hp=705af37c2304b9ec9815ded71bec6d0f1e6f2c62;hpb=6b1c86cf395f59389e4ece4ea8f4bea2c332745b;p=xscreensaver diff --git a/hacks/m6502.c b/hacks/m6502.c index 705af37c..78149122 100644 --- a/hacks/m6502.c +++ b/hacks/m6502.c @@ -23,11 +23,16 @@ ISO C89 compilers are required to support" when includng the following data file... */ # endif -const char * const demo_files[] = { +static const char * const demo_files[] = { # include "m6502.h" }; +#ifndef USE_IPHONE +# define READ_FILES +#endif + + /* We want to paint on a 32 by 32 grid of pixels. We will needed to divided the screen up into chuncks */ enum { @@ -74,7 +79,7 @@ start_rand_bin_prog(machine_6502 *machine, struct state *st){ while(n == st->which) n = random() % st->demos; st->which = n; - start_eval_string(machine, demo_files[st->which], plot6502, st); + m6502_start_eval_string(machine, demo_files[st->which], plot6502, st); } @@ -114,7 +119,6 @@ m6502_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); unsigned int x, y; - char *s = get_string_resource (dpy, "file", "File"); int n = get_integer_resource(dpy, "displaytime", "Displaytime"); int dh; st->demos = countof(demo_files); @@ -125,7 +129,7 @@ m6502_init (Display *dpy, Window window) st->tv=analogtv_allocate(st->dpy, st->window); analogtv_set_defaults(st->tv, ""); - st->machine = build6502(); + st->machine = m6502_build(); st->inp=analogtv_input_allocate(); analogtv_setup_sync(st->inp, 1, 0); @@ -141,10 +145,15 @@ m6502_init (Display *dpy, Window window) init_time(st); - if (strlen(s) > 0) - start_eval_file(st->machine,s, plot6502, st); + { +#ifdef READ_FILES + char *s = get_string_resource (dpy, "file", "File"); + if (strlen(s) > 0) + m6502_start_eval_file(st->machine,s, plot6502, st); else +#endif start_rand_bin_prog(st->machine,st); + } analogtv_lcp_to_ntsc(ANALOGTV_BLACK_LEVEL, 0.0, 0.0, st->field_ntsc); @@ -213,17 +222,16 @@ m6502_draw (Display *dpy, Window window, void *closure) struct state *st = (struct state *) closure; unsigned int x = 0, y = 0; double te; + const analogtv_reception *reception = &st->reception; - next_eval(st->machine,500); + m6502_next_eval(st->machine,500); for (x = 0; x < 32; x++) for (y = 0; y < 32; y++) paint_pixel(st,x,y,st->pixels[x][y]); - analogtv_init_signal(st->tv, 0.04); analogtv_reception_update(&st->reception); - analogtv_add_signal(st->tv, &st->reception); - analogtv_draw(st->tv); + analogtv_draw(st->tv, 0.04, &reception, 1); te = get_time(st); if (te > st->dt){ /* do something more interesting here XXX */ @@ -234,7 +242,11 @@ m6502_draw (Display *dpy, Window window, void *closure) start_rand_bin_prog(st->machine,st); } - return 10000; +#ifdef USE_IPHONE + return 0; +#else + return 5000; +#endif } @@ -246,7 +258,6 @@ static const char *m6502_defaults [] = { "*file:", "*displaytime: 20", ANALOGTV_DEFAULTS - "*TVContrast: 150", 0 };