- vgoto(p, 0), vputp(AL, WECHO + 1 - p);
- for (i = cnt - 1; i > 0; i--) {
- vgoto(outline+1, 0), vputp(AL, WECHO + 1 - outline);
- if ((hold & HOLDAT) == 0)
- putchar('@');
+ vgoto(p, 0);
+ if (AL_PARM && (cnt>1 || *AL==0)) {
+ /* insert cnt lines. Should do @'s too. */
+ vputp(tgoto(AL_PARM, p, cnt), WECHO+1-p);
+ }
+ else if (CS && *AL==0) {
+ /* vt100 change scrolling region to fake AL */
+ vputp(SC, 1);
+ vputp(tgoto(CS, LINES-1,p), 1);
+ vputp(RC, 1); /* CS homes stupid cursor */
+ for (i=cnt; i>0; i--)
+ vputp(SR, 1); /* should do @'s */
+ vputp(tgoto(CS, LINES-1,0), 1);
+ vputp(RC, 1); /* Once again put it back */
+ }
+ else {
+ vputp(AL, WECHO + 1 - p);
+ for (i = cnt - 1; i > 0; i--) {
+ vgoto(outline+1, 0);
+ vputp(AL, WECHO + 1 - outline);
+ if ((hold & HOLDAT) == 0)
+ putchar('@');
+ }