          EJECT
*         CTEXT CTP$DFT MAIN LOOP.
          TITLE  MAIN LOOP.
 DFT      SPACE  4,10
***       MAIN LOOP.
*
*         NOTE   THROUGHOUT DFT, OS BOUNDS FAULT PROTECTION IS PROVIDED.
*                THIS PROTECTION ASSUMES THAT ALL DFT DATA STRUCTURES
*                (I.E. CONTROL BLOCK, REGISTER BUFFERS, MODEL-DEPENDENT
*                BUFFER, ETC.) EXIST ON THE SAME SIDE OF THE OS BOUNDS
*                VALUE.  OS BOUNDS IS NOT USED IN STANDALONE NOS/VE.


 DFT      LJM    /PRESET/PRS PRESET PROGRAM
 DFT5     CALL   HOE         SET HALT ON ERROR

*         CHECK FOR HARDWARE ERRORS.

 DFT10    RJM    TIM
          LDM    DFTD        (MONITOR TIMEOUT MESSAGE NEEDED)
          ZJN    DFT15       IF NOT TIMED OUT
          CALL   IMM         ISSUE MONITOR TIMEOUT MESSAGE
 DFT15    BSS    0
 DFTE     LDN    0           SEE IF TIME TO HANDSHAKE
*         LDN    1           (SET NONZERO BY *IHS* EVERY FIVE SECONDS)
          ZJN    DFT20       IF NOT TIME
          CALL   CPH         PROCESS CPU/PP HANDSHAKE
 DFT20    BSS    0
 DFTF     LDN    0           SEE IF TIME TO HANDSHAKE
*         LDN    1           (SET NONZERO BY *DPD* EVERY THIRTY SECONDS)
          ZJN    DFT21       IF NOT TIME
          CALL   SRD         PROCESS DUMP PP REGISTER DATA
 DFT21    LDM    TSIT        SEE IF TIME TO CHECK *SIT*
          ZJN    DFT25       IF NOT TIME
          CALL   CNS         CHECK FOR NEGATIVE *SIT*
 DFT25    CALL   MHE         MONITOR HARDWARE ENVIRONMENT
          LDM    DTEW        DONE TIMING ENVIRONMENT WARNING FLAG
          NJP    DFT10       IF NOT DONE

*         CHECK FOR OPERATING SYSTEM REQUESTS.

 DFT30    CALL   WDR         PROCESS OS REQUESTS
          LDM    IOUN        IOU NUMBER IN WHICH DFT IS RUNNING (12-BIT LOAD)
          NJP    DFT10       IF RUNNING AS DFT-S

*         CHECK FREEZE FLAG.

 DFT35    LDN    HDRP        DFT HEADER OFFSET
          RJM    IDA
          CRDL   CM          GET HEADER
          LDDL   CM+DHFLG
          SHN    21-DH.MO
          MJN    DFT30       IF MANUAL OVERRIDE SET BY *MDD*

*         CHECK FOR TOP-OF-HOUR SECDED LOGGING.

 DFT40    LDDL   CM+DHFLG    CHECK TOP-OF-HOUR FLAG
          SHN    21-DH.FZ
          PJN    DFT45       IF NOT TOP OF HOUR
          CALL   LGC         LOG COUNTERS

*         PERFORM MISCELLANEOUS FUNCTIONS.

 DFT45    RJM    UTE         UPDATE TIME IN EICB
          RJM    CST         CHECK STATE TRANSITION
          RJM    CRN         CHECK IF RELOCATION IS NECESSARY
          RJM    CPC         CHECK PACKET COMMUNICATION
          RJM    CNM         CHECK FOR NON-DEDICATED MODE CASE
          LJM    DFT10       LOOP

*         END CTP$DFT MAIN LOOP
