FTN,L C C C CC************************************************************ C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * CC************************************************************ C C C C NAME: LIMIT C SOURCE: 92840 - 18002 C RELOC: 92840 - 16001 C C C CC*********************************************************** C SUBROUTINE XLMIT(IND,IGCB,P1,P2,P3, 1P4), 92840-16001 REV. 1819 780515 INTEGER GICB,DIGTZ,GRIFX DIMENSION VAR(8),IBUFR(5),VAR1(4),CLPTS(4) EQUIVALENCE (VAR,XMM),(VAR(2),YMM),(VAR(3),V3),(VAR(4),V4) EQUIVALENCE (VAR(5),V5),(VAR(6),V6),(VAR(7),V7),(VAR(8),V8) EQUIVALENCE (VAR1,G1X),(VAR1(2),G1Y),(VAR1(3),G2X),(VAR1(4),G2Y) EQUIVALENCE (IBUFR(2),IB2),(IBUFR(4),IB4) EQUIVALENCE (IBUFR(3),IB3),(IBUFR(5),IB5) C C THIS IS THE MODULE FOR PROCESSING THE LIMIT COMMAND C DATA MMSIZ/25010B/ DATA MMU/6/ DATA GICB/16/ DATA IBUFR/26404B/ DATA DIGTZ/6003B/ DATA IG12/8/ DATA IHCLP/32001B/ C CCCC C THIS CALL ESTABLISHES AN ADDRESS LINK BETWEEN THE GRAPGHICS C PACKAGE AND THE CURRENT GCB AND ALSO CHECKS FOR A SUSPENDED GCB. C ISUSP= 0 CALL GCBIM(99,1,IGCB,ISUSP) IF(ISUSP.NE.0)RETURN IFLG = 0 GO TO(60,70),IND C 60 IF(P1.GE.P2.OR.P3.GE.P4)GO TO 800 C COMPUTE NEW HARD CLIP LIMITS H1,H2 C 65 CALL GCBIM(MMU,1,XMM,0,1) G1X = P1 G1Y = P3 G2X = P2 G2Y = P4 C C GET DISPLAY SURFACE SIZE C CALL OUTPT(1,MMSIZ,1) CALL GCBIM(16,1,V3,8,1) C C C SEE IF POINTS ARE OUTSIDE MECHANICAL LIMITS C IFLG = -1 CALL CLPNG(G1X,CLPTS,V3,IFLG) IF(IFLG.EQ.1)GO TO 820 C C C C NOW MAKE SURE ENDPOINTS ARE INSIDE MECHANICAL LIMITS C IF(G1X.LT.V3)G1X = V3 IF(G1Y.LT.V4)G1Y = V4 IF(G2X.GT.V5)G2X = V5 IF(G2Y.GT.V6)G2Y = V6 C C CONVERT FROM MM TO MUS C G1X = G1X * XMM G1Y = G1Y * YMM G2X = G2X * XMM G2Y = G2Y * YMM CALL GCBIM(IG12,1,G1X,0,2) GO TO 66 C C INTERACTIVE CALL TO LIMIT C 70 CALL OUTPT(1,DIGTZ,1) CALL GCBIM(GICB,1,IB2,2,1) CALL OUTPT(1,DIGTZ,1) CALL GCBIM(GICB,1,IB4,2,1) IF(IB2.GE.IB4.OR.IB3.GE.IB5)GO TO 800 DO 75 K = 1,4 75 VAR(K) = IBUFR(K+1) C C C SET H1 AND H2 INTO DEVICE C 130 CALL GCBIM(IG12,1,VAR,0,WRITE) 66 CALL GPON(IGCB,3) C C SEE IF USER REALLY BLEW IT C IF(G1X.EQ.V3.AND.G1Y.EQ.V4.AND.V5.EQ.G2X.AND.V6.EQ.G2Y)RETURN C C NOW CHECK ON HARD CLIPPING CAPABILITY OF DEVICE C IF IT CANNOT CLIP REDEFINED HARD CLIP LIMITS SET BIT 3 FOR CLIPPING C ALGORITHM. C C CALL OUTPT(1,IHCLP,1) CALL GCBIM(16,1,IBUFR,1,1) IF(IBUFR.EQ.0)CALL GRSTS(2,77767B,10B) RETURN 800 CALL PLTER(10) 810 RETURN 820 CALL PLTER(34) RETURN END END$