Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / haetri.ft
1 C -+-+-+-+-+ \ e H A E T R I . F T \ f -+-+-+-+-+
2 C
3 C * OR 27-AUG-85 H.A.
4 C * UP 2-SEP-85 H.A.
5 INTEGER FUNCTION TRITIM (INDEX,BITPOS)
6 C
7 C LIEFERT DIE DIFFERENZ DER BITPOSITIONEN ZU DEM VORHERGEHEND
8 C GESETZTEN BIT IM TRIGGER ZEIT WORT.
9 C EINGABE: INDEX INDEX FUER ESAM FUNKTION ( ZU GRIFF AUF DAS TRIGGER ZEIT WORT)
10 C BITPOS (1..12) DIE BITSTELLE VON RECHTS NACH LINKS VON DER AN
11 C IM ZEITWORT GESUCHT WERDEN SOLL (INCL.).
12 C
13 C AUSGABE: TRITIM (1..12) ANZAHL DER STELLEN VON LINKS NACH RECHTS WANN
14 C DAS ERSTE BIT GEFUNDEN WURDE.
15 C BITPOS ENTAEHLT DIE NAECHSTE STELLE VON DER AN BEIM NAECHSTEN
16 C AUFRUF GESUCHT WERDEN SOLL.
17 C BITPOS=0: FALLS IN DEM WORT KEIN BIT MEHR GEFUNDEN.
18 C TRITIM IST DANN 0.
19 C BITPOS=2..12 FALLS BIT IN IN 11 BIS 1 GEFUNDEN.
20 C
21 INCLUDE HAEBUF.FI
22 EXTERNAL FLD,IATX,ESAM
23 INTEGER FLD,IATX
24 REAL ESAM
25 INTEGER T,CH,I
26 \f CH=CHANEL @ SAVE ACTUAL CHANNEL NUMBER FOR ESAM
27 CHANEL=CHNLS @ WE INVESTIGATE THE FIRST TRIGG CHANEL
28 T=IATX(ESAM(INDEX))
29 CHANEL=CH
30 C
31 IF (BITPOS.LT.0) GOTO 30 @ SEARCH LEFT TO RIGHT
32 DO 10 J=BITPOS,12 @ WE INVESTIGATE THE RIGHTMOST WORD
33 I=36-J @ REVERSE COUNTER
34 IF (FLD(I,1,T).NE.0) GOTO 20 @ BIT IS SET
35 10 CONTINUE
36 TRITIM=0 @ NO BIT FOUND ON SCAN, RETURN WITH ZERO
37 BITPOS=1
38 RETURN
39 C
40 20 TRITIM=J-BITPOS @ WE FOUND A BIT SET
41 BITPOS=J+1 @ INSERT THE NEXT POSITION FOR FURTHER REFERENCES
42 RETURN
43 C
44 C
45 30 DO 31 I=23-BITPOS,35
46 IF(FLD(I,1,T).NE.0) GOTO 32
47 31 CONTINUE
48 TRITIM=0 @ NOTHING FOUND, RETURN
49 BITPOS=1
50 RETURN
51 C
52 32 TRITIM=I+BITPOS-22 @ COMPUTE THE DIFFERENCE BETWEEN THE BITS
53 BITPOS=I-22 @ COMPUTE POSITION OF NEXT BIT
54 RETURN
55 END
56 \1a