COL
d->row += COL; /* prev column */
d->cp += COL;
if (d->row >= COL)
if (d->cp >= base + COL)
d->cp -= COL;
d->cp += COL;
d->row += COL; /* prev column ??? */
fillw(d->color|(' '<<8), d->cp, base + COL * ROW - d->cp);
fillw(d->color|(' '<<8), d->cp, COL - (d->cp - base) % COL);
if (d->cy > COL)
d->cy = COL;
d->cp = base + (d->cx - 1) * COL + d->cy - 1;
i = (d->cp - base) / COL;
pp = base + COL * (ROW-2);
for (j = ROW - 1 - i; j--; pp -= COL)
memmove(pp + COL, pp, COL * CHR);
fillw(d->color|(' '<<8), base + i * COL, COL);
i = (d->cp - base) / COL;
pp = base + i * COL;
memmove(pp, pp + COL, (ROW-1 - i)*COL*CHR);
fillw(d->color|(' '<<8), base + COL * (ROW - 1), COL);
fillw(d->color|(' '<<8), base, COL * ROW);
if (d->cp >= base + (COL * ROW)) { /* scroll check */
memmove(base, base + COL, COL * (ROW - 1) * CHR);
fillw(d->color|(' '<<8), base + COL * (ROW - 1), COL);
d->cp -= COL;
fillw(pccolor|(' '<<8), d->cp, COL * ROW);
if (d->col >= COL) { /* scroll check */
d->col = COL - 1;
d->row += COL; /* prev column */
d->cp += COL;
if (d->row >= COL)
if (d->cp >= base + COL)
d->cp -= COL;
d->cp += COL;
d->row += COL; /* prev column ??? */
fillw(d->color|(' '<<8), d->cp, base + COL * ROW - d->cp);
fillw(d->color|(' '<<8), d->cp, COL - (d->cp - base) % COL);
if (d->cy > COL)
d->cy = COL;
d->cp = base + (d->cx - 1) * COL + d->cy - 1;
i = (d->cp - base) / COL;
pp = base + COL * (ROW-2);
for (j = ROW - 1 - i; j--; pp -= COL)
memmove(pp + COL, pp, COL * CHR);
fillw(d->color|(' '<<8), base + i * COL, COL);
i = (d->cp - base) / COL;
pp = base + i * COL;
memmove(pp, pp + COL, (ROW-1 - i)*COL*CHR);
fillw(d->color|(' '<<8), base + COL * (ROW - 1), COL);
fillw(d->color|(' '<<8), base, COL * ROW);
if (d->cp >= base + (COL * ROW)) { /* scroll check */
memmove(base, base + COL, COL * (ROW - 1) * CHR);
fillw(d->color|(' '<<8), base + COL * (ROW - 1), COL);
d->cp -= COL;
fillw(pccolor|(' '<<8), d->cp, COL * ROW);