*DECK     SAD 
          IDENT  SAD,/CTI/TRAN
          PERIPH
*CALL,VERS
          TITLE  SAD         CTI SELECT ALT. DEADSTART DEVICE - "VERS"
          COMMENT CTI SELECT ALT. DEADSTART DEVICE - "VERS" 
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
 SAD      SPACE  4,10 
*****     SAD - SELECT ALTERNATE DEADSTART DEVICE. CTI. 
* 
*         R. A. TURGEON                06/26/78.
* 
*         SAD PROVIDES AN INTERFACE WHEREBY THE OPERATOR
*         MAY PROVIDE A CONNECT CODE FOR A DEVICE FROM WHICH
*         A DEADSTART IS TO OCCUR.
          SPACE  4,10 
***       SAD - SELECT ALTERNATE DEADSTART DEVICE. CTI. 
* 
*         SAD IS THE CTI MODULE WHICH ALLOWS THE OPERATOR TO
*         DEADSTART FROM SOME OTHER DEVICE WITHOUT HAVING TO
*         MODIFY THE DEADSTART PANEL SWITCHES.  THE OPERATOR
*         SPECIFIES THE TYPE, CHANNEL, EQUIPMENT AND UNIT OF
*         THE ALTERNATE DEADSTART DEVICE.  SAD WILL THEN
*         RECONSTRUCT THE DEADSTART PANEL IN THE PP CELLS 1-20B 
*         WITH THE NEW DEVICE DATA, INSURE THAT ALL PP-S AND
*         CHANNELS ARE IN THE APPROPRIATE STATE, AND THEN JUMP
*         TO ADDRESS 1, THEREBY DEADSTARTING FROM THE 
*         ALTERNATE DEVICE. 
          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 
* 
* 
  
 SC       EQU    16B                                                     DIMA243
 REPADDR  EQU    D5 
 CC       EQU    REPADDR
 D77      EQU    77B
 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  MAIN ROUTTNE 
          ORG    /CTI/TRAN
          SPACE  4,10 
*         SAD - SELECT ALTERNATE DEADSTART DEVICE. CTI. 
* 
* 
  
 SAD      EQU    *                 ENTRY POINT
          SPACE  4,10 
*         FREE DISPLAY CHANNEL
  
 FDC      ACN    12B               HANG PP 10 ON CHANNEL 12B
          LDN    FDCZ-FDCA
          OAM    FDCA,CHD 
          FJM    *,CHD
          DCN    CHD
          UJN    FDCZ 
  
 FDCA     CON    DEBUG
          BSSZ   DEBUG
          LDN    0
          IAM    0,12B
          IFGT   DEBUG,0,3
          STM    DEBUG+20B
          LDC    *
          UJN    *
 FDCZ     EQU    *
          SPACE  4,10 
*         DETERMINE CURRENT DEVICE TYPE AND PLUG IN HEADER
  
          LDC    2R 3              ASSUME DISK
          STM    HDRM 
          LDM    /CPA/DSPNLZ+5     GET ORIGINAL D5
          NJN    SAD2              IF DISK
  
          LDM    /CPA/DSPNLZ+6     GET ORIGINAL D6
          SHN    -6                BIT 6 = 0 IF 66X 
          LPN    1
          ADC    2R 1 
          STM    HDRM 
          LDN    17B         CHANGE BITS SAVED FOR TAPE UNIT
          STM    SAD7.1 
  
 SAD2     FNC    F.SEL+F.SLS+F.CHR+F.CHM,CHD  DISPLAY HEADER
          ACN    CHD
          LDN    HDRL 
          OAM    HDR,CHD
          FJM    *,CHD
          SBN    40B         DISPLAY REFRESH DELAY
          MJN    *-1
          DCN    CHD
  
          FNC    F.SEL+F.KEY,CHD   GET OPERATOR INPUT 
          ACN    CHD
          IAN    CHD
          DCN    CHD
          ZJN    SAD2              IF NO INPUT
  
          SBN    60B
          ZJN    SAD7              IF (CR) ENTERED
  
          ADN    60B-1R1
          MJN    SAD2              IF .LT. 1
          SBN    3
          PJN    SAD2              IF .GT. 3
  
          ADC    3+2R 1 
          STM    HDRM              UPDATE M FIELD IN HEADER 
          UJN    SAD2              LOOP UNTIL (CR) ENTERED
          SPACE  4,10 
*         SET UP CALL TO QOD
  
 SAD7     LDM    /CPA/DSPNLZ+D10        BUILD REPLY AREA
          LPN    37B
          STM    REPLY             STORE CHANNEL
  
          LDM    /CPA/DSPNLZ+D6 
          SHN    -3 
          LPC    0700B
          STM    REPLY+1           STORE EE00 
  
          LDM    /CPA/DSPNLZ+D6 
          LPC    77B         THIS VARIABLE CHANGED TO 17B FOR TAPE
 SAD7.1   EQU    *-1
          RAM    REPLY+1           ADD 00UU GIVING EEUU 
  
          LDC    REPLY
          STD    REPADDR           REPADDR = ADDR(REPLY)
  
          LDC    HDRL*1S12+HDR
          RJM    /QOD/QOD          CALL QOD 
          SPACE  4,10 
*         RETURN PP 10 TO THE DEADSTART STATE 
  
 RPP      FNC    0,CHD             GET DISPLAY OFF CHAN 10
          LDN    77B
          SBN    1                 WAIT A WHILE 
          NJN    *-1
          IJM    RPP3,CHD 
          DCN    CHD
  
 RPP3     ACN    CHD
          LDN    RPPZ-RPPA
          OAM    RPPA,12B 
          FJM    *,12B
          DCN    12B
          UJN    RPPZ 
  
 RPPA     CON    DEBUG
          BSSZ   DEBUG
          LDN    0
          IAM    0,CHD
          IFGT   DEBUG,0,3
          STM    DEBUG+20B
          LDC    *
          UJN    *
 RPPZ     EQU    *
          SPACE  4,10 
*         CONSTRUCT PANEL FOR INACTIVE PP 
  
          SPACE  4,10 
          LDM    HDRM 
          LMC    5535B
          NJN    CDP1        DEADSTART DEVICE IS NOT ATS
          RJM    RBM         RETURN ATS TO 6 BIT MODE 
 CDP1     LDI    CC          GET CHANNEL
          RAM    DSPZ+2 
          LDI    CC 
          SBN    12B
          ZJN    CDP2              IF CC = 12B
          SBN    13B-12B
          ZJN    CDP2              IF CC 13B
          SBN    32B-13B
          ZJN    CDP2              IF CC 32B
          SBN    33B-32B
          ZJN    CDP2              IF CC 33B
          LDN    0
          STM    DSPZ+2 
  
 CDP2     LDI    CC 
          RAM    DSPZ+5 
  
          LDM    HDRM              GET DEVICE TYPE
          ADC    0-2R 1 
          STD    D1                STORE INDEX TO D.S. FUNCTIONS
          LDM    1,REPADDR         GET EEUU 
          LPN    77B
          STD    D2                SAVE UNIT
          LDM    1,REPADDR
          SCN    77B
          SHN    3                 A = E000 
          ADM    F66X,D1
          ADD    D2 
          STM    DSPZ+6 
  
          LDI    CC 
          RAM    DSPZ+7 
          LDI    CC 
          RAM    DSPZ+10B 
          LDM    /CPA/DSPNLZ+12B
          STM    DSPZ+12B 
          LDM    /CPA/DSPNLZ+13B
          STM    DSPZ+13B 
          LDM    /CPA/DSPNLZ+14B
          STM    DSPZ+14B 
          LDM    /CPA/DSPNLZ+16B
          STM    DSPZ+16B 
          SPACE  4,10 
*         TEST IF D.S. CHANNEL ACTIVE 
  
          LDI    CC 
          RAM    CDPA 
 CDPA     IJM    CDP7,**           IF INACTIVE,SKIP 
          SPACE  4,10 
*         MAKE CHANGES NEEDED FOR ACTIVE PP CHANNEL 
  
          LDC    1402B
          STM    DSPZ+1 
          LDI    CC 
          ADC    7300B
          STM    DSPZ+2 
          LDN    17B
          STM    DSPZ+3 
          LDI    CC 
          ADC    7500B
          STM    DSPZ+4 
          LDC    7112B
          STM    DSPZ+20B 
          AJM    CDP7,SC     IF CY17X                                    DIMA243
          LDN    1                                                       DIMA243
          STM    DSPZ+15B    FLAG FOR IOQ, INHIBIT D12 TO D13 COPY       DIMA243
  
 CDP7     EQU    *
          LDN    20B               LENGTH TO MOVE 
          STD    D77
 CDP8     LDM    DSPZ,D77          MOVE TO 1-20B
          STI    D77
          SOD    D77
          NJN    CDP8 
          SPACE  4,10 
*         RETURN CHANNELS TO DEADSTART STATE
  
          ACN    12B+40B
          ACN    13B+40B
          ACN    32B+40B
          ACN    33B+40B
          SPACE  4,10 
*         JUMP TO ADDRESS 1 TO FAKE A DEADSTART 
  
          LJM    1,0
          SPACE  4,10 
**        RBM - RETURN TO 6 BIT MODE
* 
*         RBM RETURNS ATS CONTROLLER TO 6 BIT MODE
* 
*         CALLS - ICN,FAC,RAP 
* 
*         EXIT  - (D1) = CHANNEL NUMBER 
* 
 RBM      ENM    X           ENTRY/EXIT 
          LDI    CC          GET CHANNEL
          STD    D1 
          LDM    1,REPADDR
          SCN    77B
          SHN    3
          RAM    RBM6+1      ADD EQUIP NUMBER 
          LDM    1,REPADDR
          LPN    17B
          RAM    RBM14       ADD UNIT NUMBER
          LDC    RBM15
          RJM    ICN         INSERT CHANNEL NUMBER
          RJM    FAC         MOVE PP TO CH12
 RBM6     FNC    0004,0      * EQUIP NUMBER MUST BE ADDED IN *
          LDC    0560B       TIMEOUT COUNT
 RBM7     IJM    RBM7.1,0 
          SBN    1
          NJN    RBM7 
          RJM    HPP         HANG PP 10 ON CHANNEL 0
          RJM    ERD         DISPLAY ERROR MESSAGE AND STOP 
 RBM7.1   LDN    3
 RBM8     ACN    40B
 RBM9     OAM    RBM14,0
 RBM10    FJM    *,0
 RBM11    DCN    40B
 RBM12    RJM    RAP         RETURN PP TO DEADSTART STATE 
          LJM    RBMX 
  
*  ADDRESS TABLE OF MODIFIED INSTRUCTIONS FOLLOWS 
 RBM15    CON    RBM6,RBM7,RBM8,RBM9,RBM10,FAC4 
          CON    FAC5,FAC6,FAC1,FAC2,RBM11
          CON    FAC3,RAPA.2,RAPA.1,0 
  
  
 RBM14    CON    4220B       ** UNIT NUMBER MUST BE ADDED IN ** 
          CON    2440B
          CON    4000B
          SPACE  4,10 
**        FAC  -  FREE ATS CHANNEL
* 
*         USES   NONE.
* 
*         CALLS  NONE.
* 
  
 FAC      ENM    X           ENTRY/EXIT 
 FAC1     IJM    FACX,0      IF INACTIVE,RETURN 
          LDN    0
 FAC2     OAN    0           CHECK FOR PP 
          LDI    D1          DELAY FOR PP TO TAKE WORD
 FAC3     FJM    FAC6,0      THERE IS NOT A PP
          LDN    FACZ-FACA
 FAC4     OAM    FACA,0 
 FAC5     FJM    *,0
 FAC6     DCN    0
          UJN    FACX 
  
 FACA     LDN    0
          ACN    52B
          IAM    0,12B
 FACZ     EQU    *
          SPACE  4,10 
**        RAP  - RETURN ATS PP TO THE DEADSTART STATE 
* 
*         USES   NONE.
* 
*         CALLS  NONE.
* 
  
 RAP      ENM    X           ENTRY/EXIT 
          IJM    RAPX,12B 
          LDN    RAPZ-RAPA
          OAM    RAPA,12B 
          FJM    *,12B
          DCN    12B
          UJN    RAPX 
  
 RAPA     BSSZ   1
          LDN    0
 RAPA.1   ACN    0
 RAPA.2   IAM    0,0
 RAPZ     EQU    *
          SPACE  4,10 
**        ICN - INSERT CHANNEL NUMBER 
* 
*         ICN INSERTS CHANNEL NO.S IN INSTRUCTIONS GIVEN
*         IN A LIST TERMINATED WITH A ZERO. 
* 
*         ENTRY  (A)  = FWA OF CHANNEL LIST.
*                (D1) = CHANNEL NUMBER
* 
*         USES   D2,D3
  
 ICN      ENM    X           ENTRY/EXIT 
          STD    D2 
 ICN1     LDI    D2 
          ZJN    ICNX        IF LIST COMPLETE 
          STD    D3 
          LDI    D3 
          SCN    37B
          ADD    D1          ADD IN NEW CHANNEL NUMBER
          STI    D3 
          AOD    D2 
          UJN    ICN1        CONTINUE PROCESSING
          SPACE  4,10 
**        HPP  - HANG PP 10 ON CHANNEL 0
* 
*         USES   NONE.
* 
*         CALLS  NONE.
* 
  
 HPP      ENM    X
          ACN    0
          LDN    HPPZ-HPPA   LOAD MESSAGE LENGTH
          OAM    HPPA,CHD 
          FJM    *,CHD
          DCN    CHD
          UJN    HPPX 
  
 HPPA     LDN    0
          IAM    0,0
 HPPZ     EQU    *
          SPACE  4,10 
**        ERD  - ERROR DISPLAY
* 
*         USES   NONE.
* 
*         CALLS  NONE.
* 
*         EXIT   NONE.
  
 ERD      ENM    X
          FNC    F.SEL+F.SLS+F.CHR+F.CHM,CHD  DISPLAY ERROR MESSAGE 
          ACN    CHD
 ERD1     LDN    MSGAL
          OAM    MSGA,CHD    OUTPUT MESSAGE 
          FJM    *,CHD       WAIT FOR OUTPUT TO COMPLETE
          SBN    40B         DISPLAY REFRESH DELAY
          MJN    *-1
          UJN    ERD1 
  
 MSGA     EQU    *
 LINE     SET    5
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H* FORMAT UNIT FUNCTION REJECTED * 
 MSGAL    EQU    *-MSGA 
          TITLE  DEADSTART PANEL SKELETON 
          SPACE  4
**        C170/C180 
* 
*         ACTIVE        INACTIVE
* 
*         1402     01   0000
*         73CC     02   75CC   NOTE A 
*         0017     03   0000
*         75CC     04   0000
*         77CC     05   77CC
*         EEEE     06   EEEE
*         74CC     07   74CC
*         71CC     10   71CC
*         7301     11   7301
*         WXYF     12   WXYF   NOTE B 
*         IPCC     13   IPCC   NOTE B 
*         FFFF     14   FFFF   NOTE B 
*         0000     15   0000
*         RSVD     16   RSVD   NOTE B 
*         0000     17   0000
*         7112     20   0000
* 
* 
*         NOTE A - 75CC IF CC = 12B,13B,32B,33B 
*                  0000 OTHERWISE.
* 
*         NOTE B - SAME AS CORRESPONDING WORD IN SAVED
*                  DEADSTART PANEL IMAGE. 
          SPACE  4,10 
 DSP      CON    0                 1  INACTIVE PP SKELETON
          CON    7500B             2
          CON    0                 3
          CON    0                 4
          CON    7700B             5
          CON    0                 6
          CON    7400B             7
          CON    7100B             10 
          CON    7301B             11 
          CON    0                 12 
          CON    0                 13 
          CON    0                 14 
          CON    0                 15 
          CON    0                 16 
          CON    0                 17 
          CON    0                 20 
 DSPZ     EQU    DSP-1             VIRTUAL ZERO 
  
*         DEADSTART FUNCTIONS TABLE 
  
 F66X     CON    0260B
 F67X     CON    0120B
 F844     CON    0300B
          TITLE  DISPLAY HEADER 
          SPACE  4,10 
**        HDR IS THE FOLLOWING DISPLAY. 
* 
*         DEADSTART DEVICE TYPE - M 
* 
*         (1=66X, 2=67X, 3=DISK)
* 
  
 DOPLS    EQU    22B               LINE Y COORDINATE INCREMENT
  
 HDR      EQU    *                 START OF BUFFER
  
 LINE     SET    5                 FIRST LINE 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H* DEADSTART DEVICE TYPE - M*
 HDRM     EQU    *-1
  
 LINE     SET    LINE+3 
          CON    YSET+762B-LINE*DOPLS 
          CON    XSET+0 
          DATA   H* (1=66X, 2=67X, 3=DISK)* 
  
 HDRL     EQU    *-HDR             LENGTH OF HEADER 
          SPACE  4,10 
*         REPLY AREA
* 
  
 REPLY    BSSZ   2
          SPACE  4,10 
**        CALL COMPQOD HERE.
  
          LIST   X
*CALL     COMPQOD 
  
          END 
