X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fapple2.c;h=c2b3e652d3415d8f728ecfff62c72c036a707c0a;hp=184ff68fc184b4a4eb6e33ed5a6ea09d9f71f7a7;hb=e4fa2ac140f7bc56571373a7b7eb585fa4500e38;hpb=96a411663168b0ba5432b407a83be55f3df0c802 diff --git a/hacks/apple2.c b/hacks/apple2.c index 184ff68f..c2b3e652 100644 --- a/hacks/apple2.c +++ b/hacks/apple2.c @@ -71,14 +71,16 @@ void a2_scroll(apple2_state_t *st) { int i; + st->textlines[st->cursy][st->cursx] ^= 0xc0; /* turn off cursor */ for (i=0; i<23; i++) { memcpy(st->textlines[i],st->textlines[i+1],40); } memset(st->textlines[23],0xe0,40); + st->textlines[st->cursy][st->cursx] ^= 0xc0; /* turn cursor back on */ } -void -a2_printc(apple2_state_t *st, char c) +static void +a2_printc_1(apple2_state_t *st, char c, int scroll_p) { st->textlines[st->cursy][st->cursx] |= 0xc0; /* turn off blink */ @@ -86,7 +88,8 @@ a2_printc(apple2_state_t *st, char c) { if (st->cursy==23) { - a2_scroll(st); + if (scroll_p) + a2_scroll(st); } else { @@ -118,7 +121,8 @@ a2_printc(apple2_state_t *st, char c) st->cursx++; if (st->cursx==40) { if (st->cursy==23) { - a2_scroll(st); + if (scroll_p) + a2_scroll(st); } else { st->cursy++; } @@ -129,6 +133,19 @@ a2_printc(apple2_state_t *st, char c) st->textlines[st->cursy][st->cursx] &= 0x7f; /* turn on blink */ } +void +a2_printc(apple2_state_t *st, char c) +{ + a2_printc_1(st, c, 1); +} + +void +a2_printc_noscroll(apple2_state_t *st, char c) +{ + a2_printc_1(st, c, 0); +} + + void a2_prints(apple2_state_t *st, char *s) { @@ -138,6 +155,8 @@ a2_prints(apple2_state_t *st, char *s) void a2_goto(apple2_state_t *st, int r, int c) { + if (r > 23) r = 23; + if (c > 39) r = 39; st->textlines[st->cursy][st->cursx] |= 0xc0; /* turn off blink */ st->cursy=r; st->cursx=c;