IMPLICIT INTEGER (A-P) IMPLICIT INTEGER (Q-Z) COMMON MEM(32000) DO 1 I=1,32000 MEM(I)=I 1 CONTINUE DO 2 I = 1,32000 IF (MEM(I) .NE. I) THEN PRINT *,' ERROR IN MEM INIT. I= ',I, . ' , MEM(I)= ',MEM(I) ENDIF 2 CONTINUE CALL SIMF STOP END SUBROUTINE SIMF IMPLICIT INTEGER (A-Z) COMMON MEM(32000) COMMON /TQ/ TQ(256) DATA UPDATE/100000/ DATA MEMSIZ/32000/ EVAL=0 EVENT=0 PROP=0 SCHED=0 PT=0 CVSTR=MEMSIZ/5 CV2STR=MEMSIZ/3 SLOP=MEMSIZ/12 SLOP2=MEMSIZ/16 PTSTR=MEMSIZ/4 PRINT *, ' NOW LOADING UP THE TQ. ' C LOAD TQ. DO 1 I=1,256 IDUM=I/3 IF (IDUM*3 .EQ. I) THEN TQ(I)=0 ELSE TQ(I)=1 ENDIF 1 CONTINUE PRINT * , ' NOW STARTING THE BIG LOOP. ' DO 2 I=1, UPDATE PT=PT+1 IF (PT .GT. 256) PT=1 IF (TQ(PT) .EQ. 1) GO TO 2 C FOUND AN EVENT EVENT=EVENT+1 MEMPT=I/7+1 D1=MEM(MEMPT) D2=MEM(MEMPT+1) D3=MEM(MEMPT+2) D4=MEM(MEMPT+3) C UPDATE MEM(CVSTR+MEMPT)=D1 MEM(CV2STR+MEMPT)=D2 C PROPAGATE PROP=PROP+1 IF (PROP .GT. 4) PROP=1 DO 3 IEL=1,PROP EVAL=EVAL+1 C GET FIPTR FIPTR=MEM(MEMPT+SLOP) SUM=0 DO 4 IFIS=1,3 C GET CVS OF FIS CV1=MEM(CVSTR+SLOP2+IFIS) CV2=MEM(CV2STR+SLOP2+IFIS) C CALC VALUE SUM=SUM+CV1-CV2 4 CONTINUE C SCHED IT C PENDING? PTIME=MEM(PTSTR+SLOP2+IEL) SCHED=SCHED+1 IF (SCHED .GT. 5) SCHED=1 IF (SCHED .LT. 3) THEN C LETS DO A SCHED MEM(MEMPT+SLOP2+SCHED) = 1 MEM(MEMPT+SLOP2+SCHED+1) = 4 MEM(MEMPT+SLOP2+SCHED+2) = 5 MEM(MEMPT+SLOP2+SCHED+3) = D1 ENDIF 3 CONTINUE 2 CONTINUE PRINT *,' EVENTS = ',EVENT PRINT *,' EVALS = ',EVAL RETURN END