Listing of file='SUBS.FOR;09' on disk='vmedia/fortrek-sector.ccvf'
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE DSINFO(K) INTEGER D,GALAXY(8,8) BYTE K BYTE QUDRNT(8,8) BYTE U,V,X,Y BYTE STATUS,NBASES,NTORPS,NKLING BYTE BLK,RED,GRN,YEL,BLU,MGN,CYN,WHT BYTE CUR,CX,CY,SLASH,STATE(5,4) BYTE TOP(5) COMMON /MAP/GALAXY,U,V,QUDRNT,X,Y COMMON /INFO/STATUS,DATE,FINDAT,ENERGY,SHIELD, * NBASES,NTORPS COMMON /KLING/NKLING COMMON /COLORS/BLK,RED,GRN,YEL,BLU,MGN,CYN,WHT DATA CUR,SLASH/3,'/'/ DATA STATE/18,'G','R','N',X'EF', * 19,'Y','E','L',X'EF', * 17,'R','E','D',X'EF', * 22,'D','C','K',X'EF'/ DATA TOP/8,18,14,25,X'EF'/ CX = 3 GOTO (100,200,300,400,500,600,700),K 100 CALL OSTR(TOP) CALL CO(U+48) CALL CO(25) CALL CO(V+48) CALL CO(25) CALL CO(25) CALL CO(X+48) CALL CO(25) CALL CO(Y+48) CALL CO(15) RETURN 200 CALL CURSOR(60,20) CALL OSTR(STATE(1,STATUS+1)) RETURN 300 CY = 3 D = INT(DATE) WRITE(3,350)CUR,CX,CY,YEL,D 350 FORMAT('+',4A1,I4) RETURN 400 CY = 6 D = INT(FINDAT-DATE) WRITE(3,350)CUR,CX,CY,YEL,D RETURN 500 CX = 0 CY = 9 D = INT(ENERGY) WRITE(3,350)CUR,CX,CY,GRN,D CALL CO(YEL) CALL CO(SLASH) D = INT(SHIELD) CX = 5 WRITE(3,350)CUR,CX,CY,CYN,D RETURN 600 CY = 12 WRITE(3,350)CUR,CX,CY,GRN,NTORPS RETURN 700 CY = 15 WRITE(3,350)CUR,CX,CY,RED,NKLING RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE DSPDEV(I) BYTE I,DEV(9),D BYTE BLK,RED,GRN,YEL,BLU,MGN,CYN,WHT COMMON /STAT/DEV COMMON /COLORS/BLK,RED,GRN,YEL,BLU,MGN,CYN,WHT CALL CURSOR(61,23+I) IF(DEV(I).LT.0) GOTO 100 CALL CO(GRN) CALL CO('U') CALL CO('P') RETURN 100 IF(DEV(6).GE.0) GOTO 200 CALL CO(RED) CALL CO('D') CALL CO('N') RETURN 200 IF(DEV(I).LT.-1) GOTO 300 CALL CO(YEL) CALL CO('D') CALL CO('N') RETURN 300 CALL CO(RED) CALL CO('D') CALL CO('N') D = IABS(DEV(I))+48 CALL CO(D) RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE INSERT(Z,P,Q) INTEGER GALAXY(8,8) BYTE QUDRNT(8,8) BYTE Z,P,Q,U,V,X,Y BYTE RAN COMMON /MAP/GALAXY,U,V,QUDRNT,X,Y 10 P = RAN(8.0) Q = RAN(8.0) IF(QUDRNT(P,Q).NE.0) GOTO 10 QUDRNT(P,Q) = Z RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE LRPLOT(P,Q) INTEGER GALAXY(8,8) BYTE P,Q,U,V BYTE NK,NB,NS BYTE DIGITS(10),C BYTE BLK,RED,GRN,YEL COMMON /MAP/GALAXY,U,V COMMON /COLORS/BLK,RED,GRN,YEL DATA DIGITS/' ','1','2','3','4','5','6','7','8','9'/ CALL CURSOR(37+Q+Q+Q,1+P+P) CALL SPLIT(GALAXY(P,Q),NK,NB,NS) IF(P.EQ.U.AND.Q.EQ.V) CALL CO(31) C = YEL+NB CALL CO(RED) CALL CO(DIGITS(NK+1)) CALL CO(C) CALL CO(DIGITS(NS+1)) IF(P.EQ.U.AND.Q.EQ.V) CALL CO(15) RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE LRSCAN INTEGER GALAXY(8,8) BYTE P,Q,U,V BYTE UM,UP,VM,VP BYTE DEV(9) COMMON /MAP/GALAXY,U,V COMMON /STAT/DEV IF(DEV(3).LT.0) RETURN UM = U-1 UP = U+1 VM = V-1 VP = V+1 DO 100 P=UM,UP DO 100 Q=VM,VP IF(OUTSID(P,Q)) GOTO 100 CALL LRPLOT(P,Q) 100 CONTINUE RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C SUBROUTINE NEWMAP REAL KLGEGY(9) INTEGER GALAXY(8,8) BYTE QUDRNT(8,8) BYTE I,J,P,Q,U,V,X,Y,Z BYTE NK,NB,NS BYTE NKLING,KX(9),KY(9) BYTE RAN COMMON /MAP/GALAXY,U,V,QUDRNT,X,Y COMMON /KLING/NKLING,KLGEGY,KX,KY DO 100 I=1,8 DO 100 J=1,8 100 QUDRNT(I,J) = 0 CALL SPLIT(GALAXY(U,V),NK,NB,NS) QUDRNT(X,Y) = 2 Z = 1 DO 200 I=1,NS 200 CALL INSERT(Z,P,Q) IF(NB.NE.0) CALL INSERT(4,P,Q) DO 300 I=1,9 KX(I) = 0 KY(I) = 0 300 KLGEGY(I) = 0.0 Z = 3 IF(NK.LT.1) RETURN DO 400 I=1,NK CALL INSERT(Z,P,Q) KX(I) = P KY(I) = Q 400 KLGEGY(I) = 100.0+RAN(200.0) CALL SRSCAN RETURN END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C LOGICAL FUNCTION OUTSID(X,Y) BYTE X,Y OUTSID = (X.LT.1).OR.(X.GT.8).OR.(Y.LT.1).OR.(Y.GT.8) RETURN END BYTE FUNCTION RAN(F) RAN = INT(F*RND(1.0)+1.0) END SUBROUTINE SPLIT(Z,NK,NB,NS) INTEGER Z BYTE NK,NB,NS NK = Z/100 NB = (Z-NK*100)/10 NS = Z-100*NK-10*NB RETURN END SUBROUTINE SCLCLR(LINE,MAX) BYTE LINE,MAX,SPACE BYTE X,Y,HEIGHT,WIDTH DATA SPACE/' '/ DATA X,Y,HEIGHT,WIDTH/0,21,11,40/ LINE = LINE+1 IF(LINE.LE.MAX) GOTO 10 LINE = MAX CALL SCROLL(X,Y,HEIGHT,WIDTH,.TRUE.) 10 CALL CURSOR(0,LINE) WRITE(3,20)(SPACE,I=1,40) 20 FORMAT('+',40A1) CALL CURSOR(0,LINE) RETURN END SUBROUTINE SRPLOT(K,P,Q) BYTE K,P,Q BYTE SYMBOL(4,7) DATA SYMBOL/18,' ',' ',X'EF', * 19,' ','*',X'EF', * 22,']','O',X'EF', * 17,'>','-',X'EF', * 20,'#','#',X'EF', * 17,'*','*',X'EF', * 23,'*','*',X'EF'/ CALL CURSOR(8+Q+Q+Q,1+P+P) CALL OSTR(SYMBOL(1,K+1)) RETURN END SUBROUTINE SRSCAN INTEGER GALAXY(8,8) BYTE QUDRNT(8,8) BYTE DEV(9) BYTE I,J,K,U,V,X,Y LOGICAL DOWN COMMON /MAP/GALAXY,U,V,QUDRNT,X,Y COMMON /STAT/DEV DATA DOWN/.FALSE./ IF(DOWN.AND.(DEV(2).LT.0)) GOTO 500 DOWN = .FALSE. DO 200 I=1,8 DO 100 J=1,8 K = QUDRNT(I,J) IF(DEV(2).GE.0) GOTO 50 DOWN = .TRUE. K = 7 50 CALL SRPLOT(K,I,J) 100 CONTINUE 200 CONTINUE RETURN 500 CALL SRPLOT(2,X,Y) RETURN END