SUBROUTINE DIGIT COMMON /DATA/ DATA(2,600), NDATA, IFLAG, NDIMAX BYTE BUF(38), FILNAM(32) DATA FILNAM/32*0/ C C......SUBROUTINE TO DIGITIZE DATA INPUT FROM HP7220 PLOTTER C......CALLABLE FROM 'GRAF' C DO 10 I=1, 600 DATA (1,I)=0.0 DATA (2,I)=0.0 10 CONTINUE C C TYPE*,'WELCOME TO DIGIT. TO DIGITIZE POINTS ON THE' TYPE*,'HP7220 PLOTTER MOVE PEN OR DIGITIZING SIGHT TO' TYPE*,'DESIRED POSITION AND PRESS RETURN. TO EXIT' TYPE*,'INPUT LOOP PUSH "PEN UP" BUTTON ON PLOTTER' TYPE*,'AND PRESS RETURN. YOU MAY BEGIN.' READ (5,110) !WAIT FOR USER RESPONSE (CR) CALL XMT('PD;*') CALL REC ('OA;*',BUF,L) DECODE (L,20,BUF) IX,IY,IPSTAT 20 FORMAT (2I9,I1) DATA(1,1)=IX DATA(2,1)=IY NDATA=1 C C DO 50 I=2, 1000 TYPE*,'NEXT POINT:' READ (5,110) !WAIT FOR USER RESPONSE (CR) CALL REC('OA;*',BUF,L) DECODE (L,20,BUF) IX,IY,IPSTAT DATA (1,I)=IX DATA (2,I)=IY IF (IPSTAT.EQ.0) GOTO 80 !PEN UP; EXIT LOOP NDATA=NDATA+1 50 CONTINUE C C 80 CONTINUE WRITE (5,100) 100 FORMAT (1X,'PLOT DATA ABSOLUTE: Y OR N ',$) READ (5,110) REPLY 110 FORMAT (A1) IF (REPLY.EQ.'Y') GOTO 130 IF (REPLY.EQ.'N') GOTO 200 GOTO 80 C C 130 TYPE*,'INSERT PEN; PRESS RETURN IF TRUE.' READ (5,110) !WAIT FOR USER RESPONSE CALL XMT('PU;*') IX=DATA(1,1) IY=DATA(2,1) ENCODE (22,140,BUF) IX,IY CALL XMT(BUF) CALL XMT('PD;*') DO 160 I=2,NDATA IX=INT(DATA(1,I)) IY=INT(DATA(2,I)) ENCODE (22,140,BUF) IX,IY 140 FORMAT ('PA',I9,I9,';*') CALL XMT(BUF) 160 CONTINUE C C 200 WRITE (5,210) 210 FORMAT (1X,'SAVE INPUT DATA: Y OR N ',$) READ (5,110) REPLY IF (REPLY.EQ.'Y') GOTO 250 IF (REPLY.EQ.'N') GOTO 290 GOTO 200 C C 250 WRITE (5,260) 260 FORMAT (1X,'ENTER FILE NAME TO RECIEVE DATA: '$) READ (5,265) (FILNAM(I), I=1, 31) 265 FORMAT (32A1) OPEN (UNIT=2, TYPE='NEW', NAME=FILNAM, ERR=300) WRITE (2,267) 267 FORMAT (1X,'DATA BEGINS NEXT LINE') DO 275 I=1, NDATA WRITE (2,273) DATA(1,I), DATA(2,I) 273 FORMAT (2(1X,F12.3)) 275 CONTINUE CALL CLOSE(2) 290 TYPE*,'EXITING DIGIT' RETURN 300 TYPE*,'OPEN ERROR; TRY AGAIN' END