PROGRAM TEK125 c c conversion program from TEKTRONIX-PLOT10 to VT125 c output to TEKTRONIX must be written to a file c the PLOT-10 library is changed for routines INITT, ADEOUT and FINITT c use in the plot program routine AOUTST for all text c BYTE IF(21),OF(21),BROOM(7),STRING(11),YES BYTE FYL,GS,US,ESC,QUOTE DATA GS,US,ESC,QUOTE/29,31,155,39/ c BYTE BUF,FERASE,TEXT,FTEXT COMMON// BUF(50),IBUF,IR,ITEXT,FERASE,TEXT(80),FTEXT c c open input file c WRITE(5,800) 800 FORMAT('0inputfile : ',$) READ(5,700)IQ,(IF(I),I=1,20) 700 FORMAT(Q,20A1) IF(IQ+1)=0 OPEN (UNIT=20,NAME=IF,TYPE='OLD',ACCESS='DIRECT',RECORDSIZE=128, * ASSOCIATEVARIABLE=IR) IR=1 c c initialize plot c WRITE(5,100)ESC,ESC 100 FORMAT(1H+,A1,'[2J',A1,'PpS(E)') FERASE=10 c c alphanumerical c FTEXT=.FALSE. IGD=-1 1 CALL GETDAT(IGD) IF (IGD .NE. 0) GOTO 12 IF (FTEXT) CALL PCARS(TEXT(1),ITEXT-1) FTEXT=.FALSE. GOTO 999 12 IF (BUF(IBUF) .NE. GS) GOTO 13 IF (FTEXT) CALL PCARS(TEXT(1),ITEXT-1) FTEXT=.FALSE. GOTO 2 13 CALL SPEC(IGD) IF (IGD .NE. 0) GOTO 1 IF (BUF(IBUF) .LT. 32 .OR. BUF(IBUF) .GT. 126) GOTO 11 IF (BUF(IBUF) .GT. 95) BUF(IBUF)=BUF(IBUF)-32 IF (FTEXT) GOTO 14 ITEXT=1 FTEXT=.TRUE. 14 TEXT(ITEXT)=BUF(IBUF) ITEXT=ITEXT+1 IF (ITEXT .GT. 80) ITEXT=80 11 IGD=1 GOTO 1 c c graphical c 2 IGD=1 IPEN=0 21 CALL GETDAT(IGD) IF (IGD .EQ. 0) RETURN IF (BUF(IBUF) .NE. US) GOTO 22 IGD=1 GOTO 1 22 IF (BUF(IBUF) .EQ. GS) GOTO 2 c c determine coordinates c CALL SPEC(IGD) IF (IGD .NE. 0) GOTO 21 IGD=0 FYL=.FALSE. 3 IGD=IGD+1 I=BUF(MOD(IBUF+IGD-2,50)+1) IF (I .LT. "40) GOTO 3 I1=I .AND. "140 I2=I .AND. "37 IF (I1 .NE. "40) GOTO 33 IF (FYL) GOTO 31 IYH=I2*32 GOTO 3 31 IXH=I2*32 GOTO 3 33 IF (I1 .NE. "140) GOTO 34 IYL=I2 FYL=.TRUE. GOTO 3 34 IXL=I2 IX=IXH+IXL IY=IYH+IYL c c draw line c CALL TRAS(INT(IX*767./1023.),INT(479-IY*479./780.),IPEN) IPEN=1 FERASE=FERASE+1 IF (FERASE .GT. 10) FERASE=10 GOTO 21 c 999 WRITE(5,9992)ESC 9992 FORMAT(1H+,A1,'\','clear?',$) READ(5,701)I 701 FORMAT(A1) WRITE(5,100)ESC,ESC WRITE(5,9991)ESC 9991 FORMAT(1H+,A1,'\') END c c c ********************************** c SUBROUTINE SPEC(N) c c handles all special characters c returns N = number of characters processed c BYTE BUF,FERASE,TEXT,FTEXT,YES COMMON// BUF(50),IBUF,IR,ITEXT,FERASE,TEXT(80),FTEXT BYTE BS,HT,LF,VT,FF,CR,ESC DATA BS,HT,LF,VT,FF,CR,ESC /8,9,10,11,12,13,155/ c N=0 GOTO (1,1,1,1,1,1) BUF(IBUF)-7 RETURN 1 IF (FTEXT) CALL PCARS(TEXT(1),ITEXT-1) FTEXT=.FALSE. GOTO (10,20,30,40,50,60) BUF(IBUF)-7 RETURN 10 WRITE(5,901) !BS 901 FORMAT('+P[-9,]',$) GOTO 90 20 WRITE(5,902) !HT 902 FORMAT('+P[+9,]',$) GOTO 90 30 WRITE(5,903) !LF 903 FORMAT('+P[,+15]',$) GOTO 90 40 WRITE(5,904) !VT 904 FORMAT('+P[,-15]',$) GOTO 90 50 IF (BUF(MOD(IBUF+48,50)+1) .EQ. 0) GOTO 90 !FF IF (FERASE .LT. 10) GOTO 90 WRITE(5,9992)ESC 9992 FORMAT(1H+,A1,'\','clear?',$) READ(5,701)I 701 FORMAT(A1) WRITE(5,9993)ESC,ESC 9993 FORMAT(1H+,A1,'[2J',A1,'PpS(E)') FERASE=0 GOTO 90 60 WRITE(5,906) !CR 906 FORMAT('+P[0,+15]',$) !CR GOTO 90 90 N=1 RETURN END c c ********************************* c SUBROUTINE GETDAT(N) c c get N characters from file and put it in BUF c N=-1 for first time c return number of characters left in BUF c BYTE BUFFER(512),FF,SYN,ESC DATA FF,SYN,ESC/12,150,155/ BYTE BUF,FERASE,TEXT,FTEXT COMMON// BUF(50),IBUF,IR,ITEXT,FERASE,TEXT(80),FTEXT c IF (N .NE. -1) GOTO 10 IPOINT=512 IBUF=2 N=49 NLEFT=1 BUF(1)=FF GOTO 30 10 NLEFT=NLEFT-N 30 DO 50 I=1,N 31 IPOINT=IPOINT+1 IF (IPOINT .LT. 513) GOTO 40 READ (20'IR,END=45,ERR=45) BUFFER IPOINT=1 40 IF (BUFFER(IPOINT) .EQ. SYN .OR. BUFFER(IPOINT) .EQ. ESC) GOTO 31 NLEFT=NLEFT+1 BUF(IBUF)=BUFFER(IPOINT) .AND. "177 GOTO 49 45 BUF(IBUF)=0 49 IBUF=MOD(IBUF,50)+1 50 CONTINUE N=NLEFT RETURN END c c c *********************************** c SUBROUTINE PCARS(TEXT,L) c c write text on VT125 c BYTE TEXT(1),HS(82),QUOTE DATA QUOTE/39/ c J=1 DO 10 I=1,L HS(J)=TEXT(I) J=J+1 IF (TEXT(I) .NE. QUOTE) GOTO 10 HS(J)=QUOTE J=J+1 10 CONTINUE WRITE(5,901) 901 FORMAT('+P[,-15]T''',$) WRITE(5,902) (HS(I),I=1,J-1) 902 FORMAT('+',A1,$) WRITE(5,903) 903 FORMAT('+''',$) RETURN END c c c ************************************** c SUBROUTINE TRAS(IX,IY,IPEN) c c draw or position on VT125 c BYTE MODE,V,P DATA V,P/86,80/ C MODE=V IF (IPEN .EQ. 0) MODE=P WRITE(5,100)MODE,IX,IY 100 FORMAT('+',A1,'[',I3,',',I3,']') RETURN END