From 934a89bfa51b8b84315e4a5c187f89b267dffc31 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Sun, 1 May 2011 16:41:32 -0300 Subject: [PATCH] ubb-vga: added quick and dirty run-until-keypress mode - ubb-vga.c (KEY_MASK): KEYINx lines on port D - ubb-vga.c (session): run until keypress if the number of frames is zero - ubb-vga.c (main): set frames to zero if omitted --- ubb-vga/ubb-vga.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ubb-vga/ubb-vga.c b/ubb-vga/ubb-vga.c index 3b69149..7fe2b05 100644 --- a/ubb-vga/ubb-vga.c +++ b/ubb-vga/ubb-vga.c @@ -109,6 +109,7 @@ const struct mode *mode = mode_db; #define TIMER 7 #define DMA 0 +#define KEY_MASK 0x5f70000 static uint32_t old_icmr; @@ -378,13 +379,15 @@ static void session(void (*gen)(void **fb, int xres, int yres), int frames) setup_noirq(); - for (i = 0; i != frames; i++) { + for (i = 0; !frames || i != frames; i++) { frame(f_phys); if (DTC(DMA)) { fprintf(stderr, "DMA locked up. Need hardware reset.\n"); break; } + if (!frames && (PDPIN & KEY_MASK) != KEY_MASK) + break; } cleanup_noirq(); @@ -409,7 +412,7 @@ static void usage(const char *name) int main(int argc, char *const *argv) { void (*gen)(void **fb, int xres, int yres) = grabfb; - int frames; + int frames = 0; int c; while ((c = getopt(argc, argv, "m:t")) != EOF) @@ -438,6 +441,8 @@ int main(int argc, char *const *argv) case 1: frames = atoi(argv[optind]); break; + case 0: + break; default: usage(*argv); }