*DECK     IOQ 
          IDENT  IOQ,IOQB 
          PERIPH
*CALL,VERS
          TITLE  IOQ         CTI INITIAL OPERATOR QUERIES - "VERS"
          COMMENT CTI INITIAL OPERATOR QUERIES - "VERS" 
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
 IOQ      SPACE  4,10 
*****     IOQ - INITIAL OPERATOR QUERIES -CTI-. 
* 
*         R. A. MATTHEWS.          01/29/78.
*         R. A. TURGEON            6/19/78. 
* 
*         IOQ PROVIDES THE INITIAL OPERATOR INTERFACE FOR THE COMMON
*         TEST/INITIALIZATION PACKAGE AND IS RESPONSIBLE FOR LOADING
*         THE APPROPRIATE BOOTSTRAP ROUTINES. 
          SPACE  4,10 
***       IOQ - INITIAL OPERATOR QUERIES -CTI-. 
* 
*         IOQ PRESENTS THE INITIAL OPERATOR DISPLAY FOR THE COMMON TEST 
*         AND INITIALIZATION PACKAGE (CTI), AND ALLOWS OPERATOR INPUT 
*         TO SELECT THE VARIOUS LOAD OPTIONS. IOQ ALSO HANDLES LOADING
*         OF THE SELECTED MODULE BY CALLING THE COMMON DRIVER.
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         IOQ PRESENTS THE FOLLOWING INITIAL DISPLAY: 
* 
* 
*                        *A*
* 
*         (CR) - OS LOAD AUTOMATIC
* 
*           I -  DEADSTART W/OPERATOR 
*                INTERVENTION 
* 
*           U -  UTILITIES
* 
*           M -  OFFLINE MAINTENANCE
* 
*         CTI  A00
* 
*         THE M OPTION IS NOT ALLOWED NOR IS IT DISPLAYED 
*         IF (BITS 5-0 OF MSRP+4) = 0 OR 1. 
* 
*         ANY ERROR MESSAGE MAY BE CLEARED BY ENTERING A LEFT BLANK 
*         FROM THE DISPLAY CONSOLE. 
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
*         IOQ ASSUMES THAT THE IOQ RECORD ON THE CTI FILE 
*         IS PRIOR TO ANY MODULE THAT IT WILL LOAD.  FOR THIS 
*         REASON, REQUESTS TO THE COMMON DRIVER ARE WITH NO REWIND. 
* 
*         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 
 MPPUN    EQU    15B               MAX PPU NUMBER 
 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 
 SCR      SPACE  4,10 
**        STATUS AND CONTROL REGISTER CHANNEL DEFINITION. 
* 
  
  
 SCANCH   EQU    0                 SCANNER CHANNEL
 CHSCR    EQU    16B
 SCRCLR   EQU    2000B             SCR CLEAR FUNCTION 
 SCRSET   EQU    4000B             SCR SET FUNCTION 
 SCRTE    EQU    7000B             SCR TEST ERRORS FUNCTION 
 DSPPU    EQU    72B               SCR DEADSTART PPU BIT NUMBER 
 SCANSB   EQU    110B              SCR SCANNER SELECT BIT NUMBER
 ENSCNR   EQU    122B              SCR ENABLE SCANNER INTERFACE 
          TITLE  DEFINITION COMMON DECKS. 
          SPACE  4,10 
**        DEFINITION COMMON DECKS.
* 
**        ALL SYMBOL AND MACRO DEFINITION COMMON DECKS ARE CALLED HERE. 
  
  
*CALL     COMPCTI 
*CALL     COMSSCR 
*CALL     COMSCPA 
*CALL     COMSCTI 
          TITLE  IOQ - MAIN ROUTINE.
          ORG    IOQB 
 IOQ      SPACE  4,10 
***       IOQ - INITIAL OPERATOR QUERIES
* 
*         IOQ INITIALIZES THE HDT, SAVES THE DEADSTART PANEL
*         IMAGE AND THEN PRESENTS THE *A* DISPLAY.
*         DEPENDING ON THE OPERATOR RESPONSE, AND THE STATE OF
*         THE SCR (IF PRESENT) IOQ USES THE COMMON DRIVER TO
*         LOAD AND EXECUTE THE APPROPRIATE CTI MODULE.
* 
*         IOQ HAS TWO ENTRY POINTS. 
*         *IOQTRAN* IS THE LOCATION ENTERED WHEN IOQ IS FIRST 
*         LOADED BY THE COMMON DRIVER.
*         *IOQALT* IS THE ENTRY POINT WHEN LOADED BY ANY OTHER
*         CTI MODULE. 
* 
          SPACE  4,10 
 IOQ      RJM    INI               DO INITIALIZATION
  
          ERRNZ  *-IOQALT 
  
*         IF (BITS 5-0 OF MSRP+4) = 0 OR 1
*         THEN M OPTION NOT ALLOWED ON *A* DISPLAY. 
  
          LDM    MSRP+4 
          LPN    76B
          NJN    IOQ1              IF M OPTION ALLOWED
  
          STM    ORTM              DROP M FROM O.R.T. 
          LDN    DOOML
          STD    D4 
 IOQ05    LDC    2R                BLANK OUT M LINE 
          STM    DOOM-1,D4
          SOD    D4 
          NJN    IOQ05
  
 IOQ1     RJM    FDC               FREE DISPLAY CHANNEL 
  
 IOQ2     RJM    DOP               DISPLAY OPTIONS
          RJM    PKI               PROCESS KEYBOARD INPUT 
          ZJN    IOQ2              IF NO ENTRY OR ERROR 
          LDM    ORTX,D3           GET ROUTINE ADDRESS
          STM    IOQA 
          LJM    **                GO TO APPROPRIATE ROUTINE
 IOQA     EQU    *-1
          SPACE  4,10 
*         OPERATOR ENTERED (CR) 
  
 XXC      BSS    0                                                       IOQR5A0
          LDN    0
 XXC2     STM    DHEP              SET DHEP VALUE 
          LDN    0
          STM    EBLP              SET EBLP = 0 
  
          IJM    XXC9,CHSCR        IF NO SCR
  
          AJM    XXC3,20B    IF 20 PPS
          LDC    1777B
          STM    PPP1        INDICATE PP 20-31 UNAVAILABLE
 XXC3     BSS    0
          LDC    FCTE              TEST FOR SCR ERRORS
          OAN    CHSCR
          IAN    CHSCR
          ZJN    XXC8              IF NO ERRORS RECORDED IN SCR 
  
          LDC    DHE               SET TO LOAD DHE
          STD    D3 
          UJN    XXC9              IF SCR ERRORS
  
 XXC8     LDC    FCCA              CLEAR ALL SCR1 CONTROL BITS
          OAN    CHSCR+40B+20B
          IAN    CHSCR+40B+20B
          LDC    FCCA              CLEAR ALL SCR0 CONTROL BITS
          OAN    CHSCR+40B
          IAN    CHSCR+40B
          LDC    FCSB+PPCT         SET 2X PP SPEED BIT
          OAN    CHSCR+40B
          IAN    CHSCR+40B
 XXC9     LJM    LCM               GO TO LOAD CTI MODULE
          SPACE  4,10 
*         OPERATOR ENTERED O
  
 XXI      BSS    0                                                       IOQR5A0
          LDN    1                 DHEP VALUE 
          LJM    XXC2              JOIN COMMON CODE 
          SPACE  4,10 
*         OPERATOR ENTERED U
  
 XXU      BSS    0                                                       IOQR5A0
          LJM    LCM               LOAD CTI MODULE AEI
          SPACE  4,10 
*         OPERATOR ENTERED M
  
 XXM      LDN    2
          STM    EBLP              SET EBLP = 2 
          LJM    LCM               LOAD CTI MODULE EBL
          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;             *A*;
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H*(CR) - OS LOAD AUTOMATIC*
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
        DATA  H*  O  - DEADSTART WITH OPERATOR* 
  
 LINE     SET    LINE+1 
          CON    YSET+762B-LINE*DOPLS-4 
          CON    XSET+0 
          DATA   H*       INTERVENTION* 
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H*  U  - UTILITIES*
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
 DOOM     DATA   H*  M  - OFFLINE MAINTENANCE*
 DOOML    EQU    *-DOOM 
  
*CALL,VERS
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H*CTI *
          DATA   H*"VERS"*
  
 DOOL     EQU    *-DOO             BUFFER LENGTH IF NO ERROR MSG
  
 LINE     SET    LINE+3 
          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 
  
*         OS LOAD AUTOMATIC 
  
          CON    60B               (CR) 
          CON    XXC
          CON    LOAD              LOAD ADDRESS FOR MAD 
          CON    TRAN              TRANSFER ADDRESS FOR MAD 
          CON    0                 NO REWIND FIRST
          VFD    18/3LMAD,6/0 
  
*         DEADSTART W/OPERATOR INTERVENTION 
  
          CON    1RO         O
          CON    XXI
          CON    LOAD 
          CON    TRAN 
          CON    0
          VFD    18/3LOIP,6/0 
  
*         UTILITIES 
  
          CON    1RU               U
          CON    XXU
          CON    IPLB 
          CON    IPLB 
          CON    0
          VFD    18/3LAEI,6/0 
  
*         OFFLINE MAINTENANCE 
  
 ORTM     CON    1RM               M
          CON    XXM
          CON    EBLLOAD
          CON    EBLLOAD
          CON    0
          VFD    18/3LEBL,6/0 
  
*         DISPLAY HARDWARE ERRORS   (DHE) 
*         THIS ENTRY DOES NOT CORRESPOND TO A VALID OPERATOR
*         RESPONSE BUT IS HERE TO END THE LIST OF VALID 
*         OPERATOR RESPONSES AND FOR THE PARAMETER BLOCK
*         WHICH IS NEEDED WHEN DHE IS TO BE LOADED. 
  
 DHE      CON    0
          CON    0
          CON    LOAD 
          CON    TRAN 
          CON    0
          VFD    18/3LDHE,6/0 
          TITLE  SUBROUTINES. 
 DOP      SPACE  4,10 
**        DOP - DISPLAY OPTIONS.
* 
*         DOP DISPLAYS THE INITIAL 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 DELAYB 
          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 
 INI      SPACE  4,10 
**        INI - INITIALIZATION
* 
*         INITIALIZE HDT TO ALL ZEROS.
*         IF DEADSTARTING FROM AN ACTIVE PP CHANNEL, ON A 
*         C70 OR 6000, THEN COPY WORD 12B OF THE DEADSTART
*         PANEL IMAGE TO WORD 13B OF THE IMAGE. 
*         SAVE DEADSTART PANEL LOCATIONS 5-20B. 
* 
*         ENTRY  (D10) = XXCC WHERE CC = D.S. CHANNEL NO. 
* 
  
 INI      ENM    X                 ENTRY/EXIT 
  
          LDN    13B               LENGTH OF HDT
          STD    D4 
 INI2     LDN    0
          STM    DEGR,D4           CLEAR UPPER 110 WORDS OF HDT 
          SOD    D4 
          NJN    INI2 
  
          AJM    INI4,CHSCR        IF NOT C70 OR 6000 
          LDN    0           CLEAR CM WRITE DISTRIBUTOR                  DIMA243
          CRD    0                                                       DIMA243
          CWD    0                                                       DIMA243
          CWD    0                                                       DIMA243
          LDD    D10
          LPN    37B               ISOLATE D.S. CHANNEL 
          RAM    INIB 
 INIB     IJM    INI4,**           IF NOT ACTIVE PP CHANNEL 
          LDD    D15         SAD FLAG WORD                               DIMA243
          NJN    INI4        WORD 13 HAS OS PARAMETER WORD               DIMA243
          LDD    D12
          STD    D13
 INI4     EQU    *
  
          LDN    20B-4             LENGTH OF D.S. PANEL TO SAVE 
          STD    D4 
 INI6     LDM    5-1,D4 
          STM    DSPNL-1,D4        SAVE D.S. PANEL
          SOD    D4 
          NJN    INI6 
 INI8     LJM    INIX        RETURN                                      DIMA243
                                                                         DIMA243
          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 
          SPACE  4,10 
*         OVERFLOW CHECK. 
  
          ERRNG  CTIFWA-*          TOO BIG
  
  
          END 
