|
|
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