SUBROUTINE CIPHER(INW,OUTW) LOGICAL*1 INW(3),OUTW(3) DO 200 I=1,3 OUTW(I)=.NOT.INW(I) 200 CONTINUE RETURN END SUBROUTINE INISCR BYTE IT1(3),IT2(3),IT3(3),IT4(3),INIT1(3),INIT2(3),INIT3(3),INIT4(3) BYTE TIME1(9),TIME2(9),TIME3(9),TIME4(9) INTEGER*4 SCORE1,SCORE2,SCORE3,SCORE4 DATA INIT1,INIT2,INIT3,INIT4/12*' '/ C C VT100 DISPLAY CONTROL PARAMETER DEFINITIONS C PARAMETER CUP = 1, ED = 11 C CALL ERRSET(39,.TRUE.,.FALSE.,.TRUE.,.FALSE.) ! SUPPRESS EOF CALL ERRSET(43,.TRUE.,.TRUE.,.FALSE.,.FALSE.) ! SUPPRESS FILE ERROR OPEN(UNIT=1,NAME='SY:[304,300]AC.TSK',ACCESS='DIRECT', 1 SHARED,STATUS='UNKNOWN',FORM='FORMATTED',RECORDSIZE=74) CALL ERRTST(43,I) IF(I .EQ. 2) GOTO 100 ! BRANCH IF NO ERROR CALL EXIT 100 READ(1'2,20,ERR=200) SCORE1,IT1,TIME1,SCORE2,IT2,TIME2, 1 SCORE3,IT3,TIME3,SCORE4,IT4,TIME4 20 FORMAT(1X,4(I6,3A1,9A1)) CALL CIPHER(IT1,INIT1) ! GET SCORE1 SCORE INITIALS CALL CIPHER(IT2,INIT2) ! GET SCORE2 SCORE INITIALS CALL CIPHER(IT3,INIT3) ! GET SCORE3 SCORE INITIALS CALL CIPHER(IT4,INIT4) ! GET SCORE4 SCORE INITIALS 200 CONTINUE CLOSE(UNIT=1) C C CALL UVT100(ED,2) ! ERASE SCREEN CALL UVT100(CUP, 5, 18) WRITE(2,3121) 3121 FORMAT(' HIGH SCORES') CALL UVT100(CUP, 8,10) WRITE(2,3122) SCORE1,INIT1,TIME1 3122 FORMAT(' ',I6,3X,3A1,5X,9A1) CALL UVT100(CUP, 10,10) WRITE(2,3122) SCORE2,INIT2,TIME2 CALL UVT100(CUP, 12,10) WRITE(2,3122) SCORE3,INIT3,TIME3 CALL UVT100(CUP, 14,10) WRITE(2,3122) SCORE4,INIT4,TIME4 CHOME CURSOR CALL UVT100(CUP, 1, 1) CALL WAIT(3,2) RETURN END SUBROUTINE NEWSCR(SCORE) PARAMETER CUP = 1, DECSWL = 10 BYTE ITEMP(3),INIT1(3),INIT2(3),INIT3(3),INIT4(3) BYTE ITIME(9),TIME1(9),TIME2(9),TIME3(9),TIME4(9) INTEGER*4 SCORE1,SCORE2,SCORE3,SCORE4,SCORE OPEN(UNIT=1,NAME='SY:[304,300]AC.TSK',ACCESS='DIRECT',SHARED, 1 STATUS='UNKNOWN',FORM='FORMATTED',RECORDSIZE=74) READ(1'2,10,ERR=75) SCORE1,INIT1,TIME1,SCORE2,INIT2,TIME2, 1 SCORE3,INIT3,TIME3,SCORE4,INIT4,TIME4 10 FORMAT(1X,4(I6,3A1,9A1)) 75 CONTINUE CALL UVT100(CUP, 20, 32) CALL DATE(ITIME) ! GET CURRENT DATE IF(SCORE .LE. SCORE1) GOTO 100 CALL SWITCH(INIT3,INIT4,3) ! MAKE SCORE3 THE NEW SCORE4 CALL SWITCH(TIME3,TIME4,9) ! TIME3 DATE THE TIME4 DATE SCORE4=SCORE3 ! DITTO CALL SWITCH(INIT2,INIT3,3) ! MAKE SCORE2 THE NEW SCORE3 CALL SWITCH(TIME2,TIME3,9) ! TIME2 DATE THE TIME3 DATE SCORE3=SCORE2 ! DITTO CALL SWITCH(INIT1,INIT2,3) ! MAKE SCORE1 THE NEW SCORE2I CALL SWITCH(TIME1,TIME2,9) ! SCORE1 DATE THE SCORE2 DATE SCORE2=SCORE1 ! DITTO SCORE1=SCORE WRITE(2,20) CALL UVT100(CUP, 21, 32) WRITE(2,21) CALL UVT100(CUP, 22, 33) WRITE(2,22) READ(2,30) ITEMP ! GET NEW SCORE1 INITIALS CALL CIPHER(ITEMP,INIT1) CALL SWITCH(ITIME,TIME1,9) ! GET NEW TIME1 DATE GOTO 500 100 IF(SCORE .LE. SCORE2) GOTO 200 CALL SWITCH(INIT3,INIT4,3) ! MAKE SCORE3 THE NEW SCORE4 CALL SWITCH(TIME3,TIME4,9) ! TIME3 DATE THE TIME4 DATE SCORE4=SCORE3 ! DITTO CALL SWITCH(INIT2,INIT3,3) ! MAKE SCORE2 THE NEW SCORE3 CALL SWITCH(TIME2,TIME3,9) ! TIME2 DATE THE TIME3 DATE SCORE3=SCORE2 ! DITTO SCORE2=SCORE WRITE(2,20) CALL UVT100(CUP, 21, 32) WRITE(2,21) CALL UVT100(CUP, 22, 33) WRITE(2,22) READ(2,30) ITEMP ! GET NEW SCORE2 INITIALS CALL CIPHER(ITEMP,INIT2) CALL SWITCH(ITIME,TIME2,9) ! GET NEW TIME2 DATE GOTO 500 200 IF(SCORE .LE. SCORE3) GOTO 300 CALL SWITCH(INIT3,INIT4,3) ! MAKE SCORE3 THE NEW SCORE4 CALL SWITCH(TIME3,TIME4,9) ! TIME3 DATE THE TIME4 DATE SCORE4=SCORE3 ! DITTO SCORE3=SCORE WRITE(2,20) CALL UVT100(CUP, 21, 32) WRITE(2,21) CALL UVT100(CUP, 22, 33) WRITE(2,22) READ(2,30) ITEMP ! GET NEW SCORE3 INITIALS CALL CIPHER(ITEMP,INIT3) CALL SWITCH(ITIME,TIME3,9) ! GET NEW TIME3 DATE GOTO 500 300 IF(SCORE .LE. SCORE4) GOTO 600 SCORE4=SCORE WRITE(2,20) CALL UVT100(CUP, 21, 32) WRITE(2,21) CALL UVT100(CUP, 22, 33) WRITE(2,22) READ(2,30) ITEMP ! GET NEW SCORE4 INITIALS CALL CIPHER(ITEMP,INIT4) CALL SWITCH(ITIME,TIME4,9) ! GET NEW TIME4 DATE 20 FORMAT(' ENTER 3') 21 FORMAT(' ','INITIALS') 22 FORMAT(': ') 30 FORMAT(3A1) 500 CONTINUE WRITE(1'2,50,ERR=300) SCORE1,INIT1,TIME1,SCORE2,INIT2,TIME2, 1 SCORE3,INIT3,TIME3,SCORE4,INIT4,TIME4 50 FORMAT(1X,4(I6,3A1,9A1)) 600 CLOSE(UNIT=1) CALL UVT100(CUP, 23, 1) RETURN END SUBROUTINE SWITCH(IN,OUT,ICNT) BYTE IN(9),OUT(9) DO 100 I=1,ICNT OUT(I)=IN(I) 100 IN(I)=' ' RETURN END