C FILE: SCREEN C C PURPOSE: CONTAINS ROUTINES FOR THE MICRO PROGRAM WHICH USE SCREEN C EDITING. C C THE ROUTINE IN THIS FILE MUST BE SUPPORTED BY INSTALLATION PROVIDED C SCREEN EDITING ROUTINES. SEE THE MICROSCOPE MANUAL FOR DETAILS. C C WRITTEN BY: BILL HARRIS C DATE: 7/27/83 C SUBROUTINE SGRAPH(GRAPHD,NCALLS,LGO) C C*********************************************************************** C C ROUTINE: SGRAPH C PURPOSE: TO PLOT THE FUNCTIONS ON A DEVICE WHICH ALLOWS SCREEN C EDITING. THE ROUTINE ONLY UPDATES THE PORTION OF THE C SCREEN WHICH NEEDS ALTERING. C INTEGER GRAPHD, NCALLS, CHARS(135) INTEGER OUTPTD, LINES, WIDTH, ILP, IDSPLA, IPRMPT LOGICAL LSCRN, LGO COMMON /SCREEN/ OUTPTD, LINES, WIDTH, ILP, IDSPLA, X IPRMPT, LSCRN REAL SCALE INTEGER IPLOT, ISCRN1, ISCRN2 COMMON /PLTCOM/ SCALE(7), IPLOT(135,7), ISCRN1(135,57), X ISCRN2(135,57) C C IF LSCRN = .FALSE. THEN THE ENTIRE SCREEN MUST BE REGENERATED C IF ( LSCRN ) GO TO 300 K = 1 CALL BLSCRN(GRAPHD) DO 200 I = 1,ILP II = I DO 100 J = 1,WIDTH CHARS(J) = ISCRN2(J,I) ISCRN1(J,I) = CHARS(J) 100 CONTINUE CALL PLCHRS(GRAPHD,K,II,WIDTH,CHARS) 200 CONTINUE GO TO 1200 C C USING SCREEN EDITING, UPDATE ONLY THE PARTS THAT NEED UPDATING C 300 DO 1100 I = 1,ILP II = I N = 0 JBEG = 1 JEND = 1 400 IF ( JBEG.GT.WIDTH ) GO TO 1100 JJBEG = JBEG DO 500 J = JJBEG,WIDTH IF ( ISCRN1(J,I).EQ.ISCRN2(J,I) ) GO TO 500 JBEG = J GO TO 600 500 CONTINUE GO TO 1100 600 IF ( JBEG.LT.WIDTH ) GO TO 700 JBEG = WIDTH JEND = WIDTH GO TO 900 700 JP = JBEG+1 DO 800 J = JP,WIDTH IF ( ISCRN1(J,I).NE.ISCRN2(J,I) ) GO TO 800 JEND = J-1 GO TO 900 800 CONTINUE JEND = WIDTH 900 N = JEND-JBEG+1 DO 1000 J = 1,N JJ = JBEG+J-1 CHARS(J) = ISCRN2(JJ,I) ISCRN1(JJ,I) = ISCRN2(JJ,I) 1000 CONTINUE CALL PLCHRS(GRAPHD,JBEG,II,N,CHARS) JBEG = JEND+2 GO TO 400 1100 CONTINUE C C DISPLAY THE NUMERICAL DATA CORRESPONDING TO THE PLOT C 1200 MODE = 2 CALL SDDATA(GRAPHD,MODE,NCALLS,LGO) LSCRN= .TRUE. RETURN END