SUBROUTINE EXTRACT_TERMS(TRG_NUM, POSITION, LENGTH, WHICH, & MANY, ODD, & POLARITY) C---------------------------------------------------------------------- C- C- Purpose and Methods : Extract bits from a section of the common block, and C- store them in an array of logicals. NOTE that only either the even C- numbered bits or the odd numbered bits are used. C- C- Inputs : TRG_NUM The specific trigger number. C- POSITION The position to start at in the common block. C- LENGTH The number of terms to extract C- Outputs : WHICH An array indicating which terms are set. C- MANY The number of terms that are set. C- Controls: ODD Whether to use the even bits or the odd bits C- POLARITY Count .TRUE. or .FALSE. WHICH(x) will be .TRUE. if C- term x has value POLARITY. C- C- Created 16-OCT-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- Updated 14-NOV-1990 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_RAW.INC' C INTEGER TRG_NUM INTEGER POSITION, LENGTH LOGICAL WHICH(0:LENGTH-1) INTEGER MANY LOGICAL ODD LOGICAL POLARITY LOGICAL BTEST INTRINSIC BTEST C INTEGER COUNT, OFFSET C MANY = 0 IF (ODD) THEN OFFSET = 1 ELSE OFFSET = 0 ENDIF C DO COUNT = 0, LENGTH -1 IF (BTEST(SPTRGPROG(POSITION + COUNT / 16, TRG_NUM), & MOD(COUNT, 16) * 2 + OFFSET ) .EQV. POLARITY) THEN WHICH(COUNT) = .TRUE. MANY = MANY + 1 ELSE WHICH(COUNT) = .FALSE. ENDIF END DO C C---------------------------------------------------------------------- 999 RETURN END C C C FUNCTION STATE_AOTERM(TERMNUM) C---------------------------------------------------------------------- C- C- Purpose and Methods : Finds the state of the given AndOr term. C- C- Returned value : The state (.TRUE. or .FALSE.) C- Inputs : TERMNUM The hardware number of the AndOr term. C- Outputs : none C- Controls: none C- C- Created 3-MAY-1991 MICHIGAN STATE UNIVERSITY, TRIGGER CONTROL SOFTWARE C- C---------------------------------------------------------------------- IMPLICIT NONE C INCLUDE 'LEVEL1_LOOKUP.PARAMS' INCLUDE 'LEVEL1_CAL_TRIG.PARAMS' INCLUDE 'LEVEL1_FRAMEWORK.PARAMS' INCLUDE 'LEVEL1_TRIGGER_DATA_BLOCK.INC' C INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_RAW.INC' C INTEGER TERMNUM LOGICAL STATE_AOTERM C STATE_AOTERM = BTEST(DATABLOCK(ANDOR_17_TO_32+ TERMNUM / 8), & MOD(TERMNUM, 8)) C---------------------------------------------------------------------- 999 RETURN END