C PCHECK.FTN C C A SUBROUTINE TO SEE IF THE POSITION OF THE CURSOR IS ALL RIGHT AND C IF NOT, MOVE IT TO A POINT WHERE IT IS ALL RIGHT C SUBROUTINE POSCK(OLDX,OLDY,X,Y) INTEGER BLKNO ! BLOCK NO. OR DAY FROM 1 TO 10 INTEGER BLKPOS ! POSITION IN THE BLOCK INTEGER X,Y,OLDX,OLDY INTEGER LTYPE ! LINE TYPE (1ST 4 LINES, TYPE 1) INTEGER ADVAN ! WHICH WAY WE ARE MOVING CURSOR INTEGER OK(7,2) ! IF OK(I)=1, THIS IS ACCEPTABLE POSITION INTEGER MINX(2) ! MINIMUM X FOR EACH OF TWO LINE TYPES INTEGER MAXX(2) ! MAXIMUM X DATA OK/1,1,0,1,1,0,0,0,0,1,0,0,0,0/ DATA MINX,MAXX/1,3,68,66/ IF(Y.LT.1)Y=1 IF(Y.GT.9)Y=9 LTYPE=1 ! DEFAULT LINE TYPE IF(Y.EQ.5)LTYPE=2 ! FOR LINE 5, TYPE = 2 IF(Y.EQ.8)LTYPE=2 IF(Y.EQ.9)GO TO 110 ! DISPLAYS CURRENT STATUS (1 CHARACTER) ADVAN=1 ! DEFAULT IS TO GO RIGHT IF(X.LT.OLDX)ADVAN=-1 ! GO LEFT IF X < OLDX 100 IF(X.GT.MAXX(LTYPE))X=MAXX(LTYPE) ! TOO FAR TO RIGHT IF(X.LT.MINX(LTYPE))X=MINX(LTYPE) ! MINIMUM X BLKNO=X/7+1 ! GET BLOCK NUMBER BLKPOS=MOD(X,7) IF(BLKPOS.EQ.0)BLKPOS=7 I=OK(BLKPOS,LTYPE) IF(I.EQ.1)GO TO 120 ! THIS POSITION IS O.K. X=X+ADVAN GO TO 100 110 X=30 ! POSITION FOR CURRENT STATUS 120 CALL DELX(X-OLDX) CALL DELY(Y-OLDY) RETURN END