C -+-+-+-+-+  H A E T R I . F T  -+-+-+-+-+ C C * OR 27-AUG-85 H.A. C * UP 2-SEP-85 H.A. INTEGER FUNCTION TRITIM (INDEX,BITPOS) C C LIEFERT DIE DIFFERENZ DER BITPOSITIONEN ZU DEM VORHERGEHEND C GESETZTEN BIT IM TRIGGER ZEIT WORT. C EINGABE: INDEX INDEX FUER ESAM FUNKTION ( ZU GRIFF AUF DAS TRIGGER ZEIT WORT) C BITPOS (1..12) DIE BITSTELLE VON RECHTS NACH LINKS VON DER AN C IM ZEITWORT GESUCHT WERDEN SOLL (INCL.). C C AUSGABE: TRITIM (1..12) ANZAHL DER STELLEN VON LINKS NACH RECHTS WANN C DAS ERSTE BIT GEFUNDEN WURDE. C BITPOS ENTAEHLT DIE NAECHSTE STELLE VON DER AN BEIM NAECHSTEN C AUFRUF GESUCHT WERDEN SOLL. C BITPOS=0: FALLS IN DEM WORT KEIN BIT MEHR GEFUNDEN. C TRITIM IST DANN 0. C BITPOS=2..12 FALLS BIT IN IN 11 BIS 1 GEFUNDEN. C INCLUDE HAEBUF.FI EXTERNAL FLD,IATX,ESAM INTEGER FLD,IATX REAL ESAM INTEGER T,CH,I CH=CHANEL @ SAVE ACTUAL CHANNEL NUMBER FOR ESAM CHANEL=CHNLS @ WE INVESTIGATE THE FIRST TRIGG CHANEL T=IATX(ESAM(INDEX)) CHANEL=CH C IF (BITPOS.LT.0) GOTO 30 @ SEARCH LEFT TO RIGHT DO 10 J=BITPOS,12 @ WE INVESTIGATE THE RIGHTMOST WORD I=36-J @ REVERSE COUNTER IF (FLD(I,1,T).NE.0) GOTO 20 @ BIT IS SET 10 CONTINUE TRITIM=0 @ NO BIT FOUND ON SCAN, RETURN WITH ZERO BITPOS=1 RETURN C 20 TRITIM=J-BITPOS @ WE FOUND A BIT SET BITPOS=J+1 @ INSERT THE NEXT POSITION FOR FURTHER REFERENCES RETURN C C 30 DO 31 I=23-BITPOS,35 IF(FLD(I,1,T).NE.0) GOTO 32 31 CONTINUE TRITIM=0 @ NOTHING FOUND, RETURN BITPOS=1 RETURN C 32 TRITIM=I+BITPOS-22 @ COMPUTE THE DIFFERENCE BETWEEN THE BITS BITPOS=I-22 @ COMPUTE POSITION OF NEXT BIT RETURN END