X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fdemo.c;h=45b889a73487fca335410817b1c7cb0f719b3b5a;hp=b2a03e00e43a5e276b0ad879f5ddb4b7db05158d;hb=a5c65ceb155188c8acee31a475f8db9f5b58f4b6;hpb=e5393153629cb39ea6af0ca4a35370442127c5c2 diff --git a/src/demo.c b/src/demo.c index b2a03e0..45b889a 100644 --- a/src/demo.c +++ b/src/demo.c @@ -24,6 +24,7 @@ unsigned int mouse_bmask; float sball_matrix[] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}; static unsigned long nframes; +static int console_active; int demo_init(int argc, char **argv) { @@ -126,23 +127,44 @@ void demo_keyboard(int key, int press) debug_break(); break; + case '`': + console_active = !console_active; + if(console_active) { + printf("> "); + fflush(stdout); + } else { + putchar('\n'); + } + break; + + case '\b': + if(console_active && wr != rd) { + printf("\b \b"); + fflush(stdout); + wr = (wr + CBUF_SIZE - 1) & CBUF_MASK; + } + break; + case '\n': case '\r': - dptr = inp; - while(rd != wr) { - *dptr++ = cbuf[rd]; - rd = (rd + 1) & CBUF_MASK; - } - *dptr = 0; - if(inp[0]) { - printf("trying to match: %s\n", inp); - nscr = scr_num_screens(); - for(i=0; iname, inp)) { - change_screen(i); - break; + if(console_active) { + dptr = inp; + while(rd != wr) { + *dptr++ = cbuf[rd]; + rd = (rd + 1) & CBUF_MASK; + } + *dptr = 0; + if(inp[0]) { + printf("\ntrying to match: %s\n", inp); + nscr = scr_num_screens(); + for(i=0; iname, inp)) { + change_screen(i); + break; + } } } + console_active = 0; } break; @@ -153,7 +175,10 @@ void demo_keyboard(int key, int press) change_screen(9); } - if(key < 256 && isprint(key)) { + if(console_active && key < 256 && isprint(key)) { + putchar(key); + fflush(stdout); + cbuf[wr] = key; wr = (wr + 1) & CBUF_MASK; if(wr == rd) { /* overflow */