          CTEXT  CTP$SCI MDD DFT CMDS COMMON
          SPACE  4,10
          BASE   MIXED
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
 FDP      SPACE  4,10
**        FDP - FIND DFT POINTER.
*
*         EXIT   (A) = 0, IF NO *DFT* BLOCK.
*                SEE ALSO *TDH* EXIT CONDITIONS.
*
*         USES   DP - DP+1, W0 - W3.
*
*         CALLS  IIB, PIB, TDH.


 FDP20    LDN    0           INDICATE NO DFT BLOCK YET

 FDP      SUBR               ENTRY/EXIT
          LDM    DFTO        TEST IF DFT POINTER SET UP
          ADDL   DP
          ADDL   DP+1
          NJN    FDP10       IF DFT POINTER ALREADY SET
          RJM    PIB         PRESET EICB POINTER
          LDDL   W2          CHECK FOR VALID POINTER
          NJN    FDP20       IF POINTER INVALID (PROBABLY FFFF..FFFF)
          LDDL   W3
          ZJN    FDPX        IF POINTER INVALID (ZERO)
          LDK    DSCM+3      GET POINTER TO THE DFT BLOCK
          RJM    IIB
          CRDL   W0          READ IN THE R-REGISTER POINTER
          LDDL   W0          RETRIEVE DIRECT CELL CONTENTS
          LPC    7777        LEFT 4 BITS MAY BE SET ON A C180-994
          STML   DFTO
          LRD    W1          SAVE R-REGISTER
          SRD    DP
 FDP10    LRD    DP          POINT TO DFT HEADER
          LDML   DFTO
          RJM    TDH         TEST DFT HEADER
          UJN    FDPX        RETURN
 LRR      SPACE  4,10
**        LRR - LOAD R-REGISTER.
*
*         ENTRY  (MDMT+RRUP.) = UPPER R-REGISTER.
*                (MDMT+RRLW.) = LOWER R-REGISTER.
*
*         EXIT   (R-REGISTER) LOADED.
*
*         USES   T1, T2.


 LRR      SUBR               ENTRY/EXIT
          LDM    MDMT+RRUP.
          STD    T1
          LDM    MDMT+RRLW.
          STD    T2
          LRD    T1
          UJN    LRRX        RETURN
 SMA      SPACE  4,10
**        SMA - SET MEMORY ADDRESS.
*
*         ENTRY  (A, R) = ADDRESS OF BUFFER.
*
*         EXIT   (VAL1+1 - VAL1+3) = ADDRESS OF BUFFER.
*
*         USES   T0 - T2.


 SMA      SUBR               ENTRY/EXIT
          STDL   T0          SAVE OFFSET
          SRD    T1          SAVE R-REGISTER
          LDD    T1
          STM    MDMT+RRUP.  RESTORE R-REGISTER
          LDD    T2          LOW ORDER R-REGISTER
          STM    MDMT+RRLW.
          SHN    6
          ADDL   T0          ADD IN A REGISTER
          STM    VAL1+3      SAVE VALUE
          SHN    -14         SHIFT OF BITS STORED
          STD    T0
          LDD    T1          HIGH ORDER R-REGISTER
          SHN    6
          ADD    T0
          STM    VAL1+2
          SHN    -14         SHIFT OFF BITS STORED
          STM    VAL1+1
          UJN    SMAX        RETURN
 TDH      SPACE  4,15
**        TDH - TEST DFT HEADER.
*
*         ENTRY  (R-REGISTER) SET UP FOR DFT CONTROL WORD.
*
*         EXIT   (A) = 0, IF NO DFT YET.
*                    = 1, IF DFT REJECTED.
*                    = 2, IF DFT VERIFIED.
*                (W0 - W3) = *DFT* HEADER.
*
*         USES   M2, W0 - W3.
*
*         CALLS  SMA.


 TDH10    AOD    M2          SET THAT DFT VERIFIED
 TDH20    AOD    M2          SET THAT DFT REJECTED

 TDH      SUBR               ENTRY/EXIT
          RJM    SMA         SET MEMORY ADDRESS
          LDN    0           INITIALIZE FLAG
          STD    M2
          LDM    DFTO        SET UP A FOR READ
          LMC    RR          ACTIVATE R-REGISTER
          CRDL   W0
          LDD    W0+DHFLG    TEST VERIFIED BIT
          LPC    300B        VERIFIED OR REJECTED BITS
          ZJN    TDHX        IF NEITHER SET
          LPC    200B
          ZJN    TDH20       IF NOT VERIFIED
          UJN    TDH10       EVERYTHING CHECKS


          BASE   *
          ENDX
