SUBROUTINE ANSTR(CHAR,IADE) COMMON /TKTRNX/ TMINVX,TMINVY,TMAXVX,TMAXVY,TREALX,TREALY, 1 TIMAGX,TIMAGY,TRCOSF,TRSINF,TRSCAL,TRFACX,TRFACY, 2 TRPAR1,TRPAR2,TRPAR3,TRPAR4,TRPAR5,TRPAR6,KMOFLG(8),KPAD2, 3 KBAUDR,KGNFLG,KGRAFL,KHOMEY,KKMODE,KHORSZ,KVERSZ,KTBLSZ, 4 KSIZEF,KLMRGN,KRMRGN,KFACTR,KTERM,KLINE,KZAXIS,KBEAMX,KBEAMY, 5 KMOVEF,KPCHAR(5),KDASHT,KMINSX,KMINSY,KMAXSX,KMAXSY,KEYCON, 6 KINLFT,KOTLFT,KUNIT DIMENSION IADE(1) DATA MAXLEN/60/ IPT=1 C * PLACE THE TERMINAL IN A/N MODE, IF NEEDED IF(KKMODE .NE. 0)CALL ALFMOD C * GET A NEWLINE WHEN THE BEAM POSITION IS OUTSIDE MARGINS IF(KBEAMX .LT. KLMRGN)GO TO 10 IF(KBEAMX .LT. KRMRGN)GO TO 20 10 CALL NEWLIN C * CALCULATE NUMBER OF CHARACTERS POSSIBLE TO PUT ON LINE 20 ISEND=((KRMRGN-KBEAMX)*KFACTR+KHORSZ-1)/KHORSZ C * PUT OUT AT LEAST ONE CHARACTER IF(ISEND .LT. 1)ISEND=1 C * DON'T SEND ENOUGH CHARACTERS TO CAUSE BUFFER TRUNCATION IF(ISEND .GT. MAXLEN)ISEND=MAXLEN IEND=IPT+ISEND-1 C * SEND ONLY NUMBER OF CHARACTERS RECEIVED IF(IEND .GT. NCHAR)ISEND=NCHAR-IPT+1 CALL TOUTST(ISEND,IADE(IPT)) C * UPDATE THE BEAM KBEAMX=KBEAMX+(ISEND*KHORSZ+KFACTR/2)/KFACTR IPT=IPT+ISEND C * REPEAT ON NEWLINE UNTIL ALL CHARACTERS SENT IF(IEND .LT. NCHAR)GO TO 10 RETURN END