|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 1101 (0x44d) Types: TextFile Names: »set.f«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Empire/set.f«
FUNCTION SET(XPOS,YPOS,AREA,LS,LIM) IMPLICIT INTEGER(A-Z) include 'common.h' PARAMETER (WIDTH=100,HEIGHT=60) character area integer xx, yy integer*2 XSTACK(12000) integer*2 YSTACK(12000) integer*2 CSTACK(12000) character LS character MAP(width, height) character owned(width, height) INTEGER XADDS(8),YADDS(8) EQUIVALENCE (MAP(1,1),OMAP(1)),(OWNED(1,1),RMAP(1)) DATA XADDS/-1,0,1,-1,1,-1,0,1/ DATA YADDS/-1,-1,-1,0,0,1,1,1/ OWNED(XPOS,YPOS)=AREA LEVEL=1 XX=XPOS YY=YPOS 100 K=1 200 IF ((XX+XADDS(K).LT.2).OR.(XX+XADDS(K).GT.99)) GOTO 300 IF ((YY+YADDS(K).LT.2).OR.(YY+YADDS(K).GT.59)) GOTO 300 IF (MAP(XX+XADDS(K),YY+YADDS(K)).NE.LS) GOTO 300 IF (OWNED(XX+XADDS(K),YY+YADDS(K)).NE.'\0') GOTO 300 OWNED(XX+XADDS(K),YY+YADDS(K))=AREA XSTACK(LEVEL)=XX YSTACK(LEVEL)=YY CSTACK(LEVEL)=K LEVEL=LEVEL+1 IF (LEVEL.GT.LIM) THEN SET=0 RETURN ENDIF XX=XX+XADDS(K) YY=YY+YADDS(K) GOTO 100 300 K=K+1 IF (K.LE.8) GOTO 200 LEVEL=LEVEL-1 IF (LEVEL.EQ.0) THEN SET=1 RETURN ENDIF XX=XSTACK(LEVEL) YY=YSTACK(LEVEL) K=CSTACK(LEVEL) GOTO 300 END