-/* xscreensaver, Copyright (c) 1998-2003 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2004 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
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 */
{
if (st->cursy==23)
{
- a2_scroll(st);
+ if (scroll_p)
+ a2_scroll(st);
}
else
{
st->cursx++;
if (st->cursx==40) {
if (st->cursy==23) {
- a2_scroll(st);
+ if (scroll_p)
+ a2_scroll(st);
} else {
st->cursy++;
}
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)
{
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;