*DECK     AEI 
          IDENT  AEI,IOQB 
          PERIPH
*CALL,VERS
          TITLE  AEI         CTI UTILITIES EXECUTIVE - "VERS" 
          COMMENT CTI UTILITIES EXECUTIVE - "VERS"
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
 IOQ      SPACE  4,10 
*****     AEI - UTILITIES EXECUTIVE -CTI-.
* 
*         R. A. MATTHEWS.          01/29/78.
*         R. A. TURGEON            6/19/78. 
* 
*         AEI PROVIDES THE OPERATOR INTERFACE TO THE CTI
*         UTILITIES.  A DISPLAY OF THE ALTERNATIVES IS PRESENTED. 
*         WHEN THE OPERATOR RESPONDS, A CTI MODULE IS LOADED. 
          SPACE  4,10 
***       AEI - UTILITIES EXECUTIVE -CTI-.
* 
*         AEI PRESENTS THE *U* DISPLAY AND DEPENDING ON THE OPERATOR
*         RESPONSE, WILL LOAD ONE OF THE FOLLOWING CTI MODULES... 
*         IOQ, SAD, EDD, ICD. 
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         AEI PRESENTS THE FOLLOWING DISPLAY: 
* 
* 
*                        *U*
* 
*         (BS) - RETURN TO *A* DISPLAY
* 
*           A  - ALTERNATE DEADSTART
* 
*           E  - EXPRESS DEADSTART DUMP 
* 
*           I  - INSTALL CTI ON RMS 
* 
* 
*         ANY ERROR MESSAGE MAY BE CLEARED BY ENTERING A LEFT BLANK 
*         FROM THE DISPLAY CONSOLE. 
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
*         AEI ASSUMES THAT IOQ PRECEDES IT ON THE CTI FILE AND THAT 
*         SAD, EDD, ICD FOLLOW IT ON THE CTI FILE.
* 
*         CTI INTERNAL STATE IS IN EFFECT.
          SPACE  4,10 
***       EXIT CONDITIONS.
* 
*         CTI INTERNAL STATE IS IN EFFECT.
          TITLE  DEFINITIONS. 
**        DEADSTART PANEL WORDS.
* 
*         WORDS 5 - 20B OF THE DEADSTART PANEL MUST REMAIN INTACT 
*         DURING CTI EXECUTION. WORDS 0 - 4 MAY BE USED AS SCRATCH
*         DIRECT CELLS. 
  
  
 D0       EQU    0                 SCRATCH
 D1       EQU    1                 SCRATCH
 D2       EQU    2                 SCRATCH
 D3       EQU    3                 SCRATCH
 D4       EQU    4                 SCRATCH
 D5       EQU    5                 ZERO IF TAPE DEADSTART 
 D6       EQU    6                 FUNCTION WORD
*         (D6) = WARMSTART FUNCTION, IF MTS/ATS.
*              = DEADSTART FUNCTION, IF 844/885 DISK
 D7       EQU    7                 RESERVED 
*         (D7) = 1400B IF 3000 TYPE TAPE. 
 D10      EQU    10B               RESERVED 
 D11      EQU    11B               RESERVED 
 D12      EQU    12B               MSL PARAMETERS 
 D13      EQU    13B               OS PARAMETERS
 D14      EQU    14B               OS PARAMETERS
 D15      EQU    15B               UNUSED 
 D16      EQU    16B               C80/A170 RESERVED
 D17      EQU    17B               RESERVED 
 D20      EQU    20B               RESERVED 
 INS      SPACE  4,10 
**        INSTRUCTION EQUATES.
* 
  
  
 PSNC     EQU    0000B             PASS 
 UJNC     EQU    0300B             UNCONDITIONAL JUMP 
 ZJNC     EQU    0400B             ZERO JUMP
 SHNC     EQU    1000B             SHIFT
 LCNC     EQU    1500B             LOAD COMPLEMENT
 SBNC     EQU    1700B             SUBTRACT NO-ADDRESS
 LDCC     EQU    2000B             LOAD CONSTANT
 ADCC     EQU    2100B             ADD CONSTANT 
 LMCC     EQU    2300B             LOGICAL MINUS CONSTANT 
 LDDC     EQU    3000B             LOAD DIRECT
 AJMC     EQU    6400B             ACTIVE JUMP
 IAMC     EQU    7100B             INPUT MEMORY 
 OAMC     EQU    7300B             OUTPUT MEMORY
 ACNC     EQU    7400B             ACTIVATE CHANNEL 
 DCNC     EQU    7500B             DISCONNECT CHANNEL 
          SPACE  4,10 
**        MISCELLANEOUS DEFINITIONS 
* 
* 
  
 QUAL$    EQU    0                 DON-T QUALIFY COMMON DECKS 
 DEBUG    EQU    0
 DSP      SPACE  4,10 
**        DISPLAY CONTROLLER DEFINITIONS. 
* 
* 
  
  
 CHD      EQU    10B               DISPLAY CHANNEL
  
*         DISPLAY FUNCTION CODES. 
  
 F.SEL    EQU    7000B             SELECT CONSOLE DISPLAY 
  
 F.SLS    EQU    0000B             SELECT CONSOLE LEFT SCREEN 
 F.SRS    EQU    0100B             SELECT CONSOLE RIGHT SCREEN
 F.SBS    EQU    0200B             SELECT CONSOLE BOTH SCREEN 
  
 F.CHR    EQU    0000B             SELECT DOT MODE
 F.DOT    EQU    0010B             SELECT DOT MODE
 F.KEY    EQU    0020B             SELECT KEYBOARD INPUT
  
 F.CHS    EQU    0000B             SET CHARACTER SIZE SMALL 
 F.CHM    EQU    0001B             SET CHARACTER SIZE MEDIUM
 F.CHL    EQU    0002B             SET CHARACTER SIZE LARGE 
  
*         COORDINATE DESIGNATION. 
  
 XSET     EQU    6000B             SET X COORDINATE 
 YSET     EQU    7000B             SET Y COORDINATE 
          TITLE  DEFINITION COMMON DECKS. 
          SPACE  4,10 
**        DEFINITION COMMON DECKS.
* 
**        ALL SYMBOL AND MACRO DEFINITION COMMON DECKS ARE CALLED HERE. 
  
  
*CALL     COMPCTI 
*CALL     COMSCPA 
*CALL     COMSCTI 
          TITLE  AEI - MAIN ROUTINE.
          ORG    IOQB 
 AEI      SPACE  4,10 
***       AEI - UTILITIES EXECUTIVE FOR CTI.
* 
*         AEI PRESENTS THE *U* DISPLAY AND WAITS FOR A VALID
*         OPERATOR RESPONSE.  WHEN IT COMES, A RELATED CTI
*         MODULE IS LOADED AS FOLLOWS...
* 
*         (BS) - IOQ  (ALTERNATE ENTRY POINT) 
*         S  -  SAD 
*           E  - EDD
*           I  - ICD
* 
          SPACE  4,10 
 AEI      EQU    *                 ENTRY POINT
  
 AEI1     RJM    FDC               FREE DISPLAY CHANNEL 
  
 AEI2     RJM    DOP               DISPLAY OPTIONS
          RJM    PKI               PROCESS KEYBOARD INPUT 
          ZJN    AEI2              IF NO ENTRY OR ERROR 
          LDM    ORTX,D3           GET ROUTINE ADDRESS
          STM    AEIA 
          LJM    **                GO TO APPROPRIATE ROUTINE
 AEIA     EQU    *-1
          SPACE  4,10 
*         OPERATOR ENTERED (BS) 
  
 XXB      EQU    *
          LJM    LCM               GO LOAD IOQ
          SPACE  4,10 
*         OPERATOR ENTERED S
  
 XXA      EQU    *
          LJM    LCM               GO LOAD SAD
          SPACE  4,10 
*         OPERATOR ENTERED E
  
 XXE      EQU    *
          LJM    LCM               GO LOAD EDD
          SPACE  4,10 
*         OPERATOR ENTERED I
  
 XXI      EQU    *
          LJM    LCM               GO LOAD ICD
          TITLE  INITIAL DISPLAY BUFFER *A* 
**        DOO - DISPLAY OPERATOR OPTIONS BUFFER.
* 
*         THE DISPLAY OPERATOR OPTIONS BUFFER CONTAINS THE ENTIRE 
*         INITIAL OPERATOR DISPLAY WITH THE POSSIBLE INCLUSION OF AN
*         ERROR MESSAGE.
  
 DOPLS    EQU    22B               LINE (Y COOR) INCREMENT
  
 DOO      EQU    *                 START OF BUFFER
  
 LINE     SET    5                 FIRST LINE 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H/             *U*/
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H/(BS) - RETURN TO *A* DISPLAY/
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H/  S - ALTERNATE DEADSTART/ 
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H/  E  - EXPRESS DEADSTART DUMP/ 
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H/  I  - INSTALL CTI ON RMS/ 
  
 DOOL     EQU    *-DOO             BUFFER LENGTH IF NO ERROR MSG
  
 LINE     SET    LINE+6 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H*INVALID OPTION*
  
 DOOLE    EQU    *-DOO             BUFFER LENGTH IF ERROR MSG 
          TITLE  OPERATOR RESPONSE TABLE
**        TABLE OF VALID OPERATOR RESPONSES 
* 
*         THIS TABLE HAS ONE ENTRY FOR EACH VALID OPERATOR RESPONSE 
*         IT INCLUDES THE CORRESPONDING PARAMETER BLOCKS PASSED TO
*         THE COMMON DRIVER TO LOAD THE APPROPRIATE MODULE. 
* 
  
 ORT      EQU    *                 START OF TABLE 
 ORTX     EQU    1                 OFFSET OF ADDRESS OF ASSOC. ROUTINE
 ORTP     EQU    2                 OFFSET OF PARAMETER BLOCK
 ORTS     EQU    7                 SIZE OF EACH TABLE ENTRY 
  
*         RETURN TO *A* DISPLAY 
  
          CON    61B               (BS) 
          CON    XXB
          CON    IOQB              IOQB ADDRESS FOR IOQ 
          CON    IOQALT            TRANSFER ADDRESS FOR IOQ 
          CON    1                 REWIND FIRST 
          VFD    18/3LIOQ,6/0 
  
*         ALTERNATE DEADSTART 
  
          CON    1RS         S
          CON    XXA
          CON    TRAN 
          CON    TRAN 
          CON    0
          VFD    18/3LSAD,6/0 
  
*         EXPRESS DEADSTART DUMP
  
          CON    1RE               E
          CON    XXE
          CON    IPLB 
          CON    IPLB 
          CON    0
          VFD    18/3LEDD,6/0 
  
*         INSTALL CTI ON RMS
  
          CON    1RI               I
          CON    XXI
          CON    ICDLOAD
          CON    ICDLOAD
          CON    0
          VFD    18/3LICD,6/0 
  
  
 EOT      CON    0                  END OF TABLE MARKER 
          TITLE  SUBROUTINES. 
 DOP      SPACE  4,10 
**        DOP - DISPLAY OPTIONS.
* 
*         DOP DISPLAYS THE OPERATOR OPTIONS AND 
*         POSSIBLY AN ERROR MESSAGE.
* 
*         ENTRY  (DOPL) = LENGTH TO DISPLAY.
* 
  
 DOP      ENM    X                 ENTRY/EXIT 
  
*         FUNCTION DISPLAY CONSOLE AND OUTPUT INITIAL OPTIONS.
  
          FNC    F.SEL+F.SLS+F.CHR+F.CHM,CHD
          ACN    CHD
          LDC    DOOL              LENGTH OF DISPLAY BUFFER 
 DOPL     EQU    *-1
          OAM    DOO,CHD           DISPLAY INITIAL OPTIONS
          FJM    *,CHD
          DCN    CHD
          SBN    40B         DISPLAY REFRESH DELAY
          MJN    *-1
          UJN    DOPX              RETURN 
          SPACE  4,10 
**        FDC - FREE DISPLAY CHANNEL
* 
*         FDC HANGS PP 10 ON CHANNEL 12B. 
* 
  
 FDC      ENM    X                 ENTRY/EXIT 
          ACN    12B
          LDN    FDCL              LENGTH OF IDLE PROGRAM 
          OAM    FDCA,CHD          SEND IDLE PROGRAM
          FJM    *,CHD
          DCN    CHD
          UJN    FDCX              RETURN 
  
 FDCA     CON    DEBUG             PP 10 PROGRAM
          BSSZ   DEBUG
          LDN    0
 FDCB     IAM    0,12B             READ NEW PROGRAM 
          IFGT   DEBUG,0,3
          STM    DEBUG+20B
          LDC    *
          UJN    *
 FDCL     EQU    *-FDCA            LENGTH OF IDLE PROGRAM 
          SPACE  4,10 
**        LCM - LOAD CTI MODULE 
* 
*         LCM RETURNS PP 10 TO THE DEADSTART STATE AND CALLS THE
*         COMMON DRIVER TO LOAD A CTI MODULE. 
* 
*         ENTRY  (D3) = ADDRESS OF ORT ENTRY
* 
*         NO EXIT. CONTROL GOES TO MODULE LOADED. 
* 
  
 LCM      EQU    *
          FNC    0,CHD             GET DISPLAY OFF CHAN 10
          LDN    77B
          SBN    1                 WAIT A WHILE 
          NJN    *-1
          IJM    LCM3,CHD 
          DCN    CHD
  
 LCM3     ACN    CHD               PREPARE CHANNEL
          LDN    LCML              PP 10 IS ON CHANNEL 12B
          OAM    LCMA,12B 
          FJM    *,12B
          DCN    12B
  
*         GO TO CTI MODULE
  
          LDD    D3 
          ADN    ORTP              (A) = ADDRESS OF PARAMETERS
          LJM    CDEP              GO TO COMMON DRIVER
          SPACE  2
 LCMA     CON    DEBUG             PP 10 PROGRAM
          BSSZ   DEBUG
          LDN    0
          IAM    0,CHD
          IFGT   DEBUG,0,3
          STM    DEBUG+20B
          LDC    *
          UJN    *
 LCML     EQU    *-LCMA            LENGTH OF PROGRAM
 PKI      SPACE  4,10 
**        PKI - PROCESS KEYBOARD INPUT. 
* 
*         PKI FUNCTIONS THE DISPLAY CONSOLE FOR KEYBOARD INPUT, AND 
*         CHECKS THE INPUT AGAINST THE VALID OPERATOR 
*         RESPONSES. IF NO INPUT HAS BEEN ENTERED, PKI RETURNS WITH 
*         (A) ZERO. IF THE INPUT DOES NOT MATCH A VALID OPTION, (A) 
*         IS ZERO AND AN ERROR MESSAGE HAS BEEN ACTIVATED. IF A 
*         VALID OPTION IS FOUND, (A) IS THE FIRST WORD ADDRESS OF THE 
*         ORT ENTRY.
* 
*         EXIT   (A) = 0, NO INPUT OR INPUT IN ERROR. 
*                (A) .NE. 0, FWA OF ORT ENTRY SELECTED. 
*                (D3) = FWA OF ORT ENTRY IF VALID ENTRY 
* 
  
 PKI1     LDD    D3                VALID OPTION ADDRESS 
  
  
 PKI      ENM    X                 ENTRY/EXIT 
          FNC    F.SEL+F.KEY,CHD   GET INPUT
          ACN    CHD
          IAN    CHD               READ KEYBOARD
          DCN    CHD
          ZJN    PKIX              IF NO INPUT, RETURN
          STD    D2                SAVE ENTRY 
          LDC    ORT               ADDRESS OF OPERATOR RESP TBL 
          STD    D3 
 PKI2     LDI    D3                LOAD TABLE VALUE 
          ZJN    PKI4              IF END OF TABLE REACHED
          SBD    D2 
          ZJN    PKI1              IF VALID OPTION FOUND
          LDN    ORTS 
          RAD    D3                ADVANCE TABLE POINTER
          UJN    PKI2 
 PKI4     LDD    D2 
          SBN    53B
          ZJN    PKI6              IF LEFT BLANK
          LDC    DOOLE             SET MSG LENGTH FOR ERROR 
 PKI5     STM    DOPL 
          LDN    0
          UJN    PKIX              RETURN 
  
*         LEFT BLANK 53B DETECTED. CLEAR ERROR MESSAGE. 
  
 PKI6     LDC    DOOL              SET MSG LENGTH FOR NO ERROR
          UJN    PKI5 
          SPACE  4,10 
*         OVERFLOW CHECK. 
  
          ERRNG  CTIFWA-*          TOO BIG
  
  
          END 
