1LC 
          IDENT  1LC,LCW
          PERIPH
          BASE   MIXED
          SST 
          TITLE  1LC - LOAD BUFFER CONTROLWARE. 
*COMMENT  1LC - LOAD BUFFER CONTROLWARE ROUTINE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 1LC      SPACE  4,10 
*****     1LC - LOAD BUFFER CONTROLWARE.
* 
*         W. J. SMITH.       79/07/21.
*         J. L. LARSON.      83/06/14.
* 
*         DOWNLOAD DISK CONTROLWARE ON SPECIFIED CHANNEL. 
 1LC      SPACE  4,10 
***       *1LC*, IN CONJUNCTION WITH THE CPU PROGRAM *LOADBC, WILL
*         DOWNLOAD CONTROLWARE TO THE REQUESTED CHANNEL AND 
*         CONTROLLER. 
* 
*         CALL -
* 
*T,IR     18/ *1LC*,6/ 0,18/ DADDR,18/ LADDR
*         DADDR  FET ADDRESS FOR CONTROLWARE DUMP.
*                = 0 IF CONTROLWARE NOT TO BE DUMPED BEFORE RELOAD. 
*         LADDR  FET ADDRESS OF CONTROLWARE TO LOAD.
* 
*         *LOADBC* USES RECALL MACRO WHEN CALLING *1LC*.
 1LC      SPACE  4,20 
***       *1LC* IS A PP PROGRAM CALLED BY THE CPU PROGRAM *LOADBC*
*         TO DOWNLOAD DISK CONTROLWARE ON A SPECIFIED CHANNEL OR TO 
*         DOWNLOAD CONTROL MODULE CONTROLWARE TO A SPECIFIED CONTROL
*         MODULE.  THE CONTROLWORD AT FET+8 IN *LOADBC* FL CONTAINS 
*         EITHER THE CHANNEL NUMBER OR THE CONTROL MODULE EST ORDINAL 
*         (IN WHICH CASE BIT 2**11 IS SET). 
*         THE CONTROLWARE IS CHECKED FOR ITS VALIDITY, READ FROM FIELD
*         LENGTH OF *LOADBC* IN SEGMENTS AND DOWNLOADED.  CONTROLLER
*         IS STATUSED FOR ITS FUNCTIONALITY (GENERAL STATUS OF ZERO 
*         INDICATES CORRECT CHECKSUM) AND A RESPONSE CODE OF ZERO IS
*         RETURNED IN FET+0 ON A SUCCESSFUL LOAD.  A NON-ZERO RESPONSE
*         CODE IS RETURNED FOR UNSUCCESSFUL LOADS.
*         IF A NONZERO DUMP CONTROLWARE FET ADDRESS IS ALSO SPECIFIED,
*         THE CONTENTS OF THE 7255 ADAPTOR, THE 7155 CONTROLLER (FMD OR 
*         DEMA) OR THE 7165 CONTROLLER WILL BE DUMPED TO THE BUFFER 
*         BEFORE THE RELOAD IS ATTEMPTED.  A ZERO RESPONSE CODE IS
*         RETURNED TO THE DUMP FET+0 ON A SUCCESSFUL DUMP.
*         A NON-ZERO RESPONSE CODE IS RETURNED FOR BUFFER ERROR 
*         CONDITIONS, UNSUCCESSFUL DUMPS, AND FOR DUMP REQUESTS OF
*         CONTROLLERS/ADAPTORS NOT LISTED ABOVE.  THE NUMBER OF THE 
*         CHANNEL THAT WAS USED TO LOAD CONTROLWARE IS RETURNED IN
*         FET+8, BYTE 0.
 1LC      SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * FET ADDRESS OUT OF RANGE.* - THE CONTROLWARE DUMP OR
*         LOAD FET ADDRESS IS .LE. 1 OR EXTENDS PAST FL.
          SPACE  4,10 
*         MACROS. 
  
  
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMPCHM 
*CALL     COMSDSL 
*CALL     COMSPIM 
*CALL     COMSSSD 
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 BUFL     EQU    1000        LENGTH OF CONTROLWARE BLOCK
 FCDC     EQU    701         DUMP 7165 CONTROLLER MEMORY
 FCLA     EQU    500         LOAD ADDRESS AND LENGTH (7165 DUMP)
 FCAL     EQU    414         AUTOLOAD FUNCTION CODE 
 FCLC     EQU    71          CONTROL MODULE LOAD FROM PP FUNCTION 
 FCAR     EQU    67          AUTOLOAD WITH NO DROP OF DRIVE RESERVES
 FCDM     EQU    63          DUMP CONTROLLER MEMORY FUNCTION CODE 
 FCMP     EQU    62          MANIPULATE PROCESSOR FUNCTION CODE 
 FCST     EQU    12          GENERAL STATUS FUNCTION CODE 
 FCOC     EQU    10          OPERATION COMPLETE CODE
 FCCN     EQU    0           CONNECT FUNCTION CODE
          SPACE  4,10 
*         7155 CONTROLLER DUMP ASSEMBLY CONSTANTS.
  
  
 CTSZ     EQU    8192D       7155 CONTROLLER MEMORY SIZE (16 BIT WORDS) 
 CWDB     EQU    32D         CONTROLLER WORDS PER MEMORY DUMP BLOCK 
 PBDB     EQU    CWDB*2      PP BYTES PER DUMP BLOCK
 NCBD     EQU    CTSZ/CWDB   NUMBER OF CONTROLLER BLOCKS TO DUMP
          SPACE  4,10 
*         RESPONSE CODES RETURNED TO LOAD FET+0.
  
  
 RC0      EQU    0           CONTROLWARE LOAD COMPLETE
 RC1      EQU    1           * USER NOT SYSTEM ORIGIN.* 
 RC2      EQU    2           * SPECIFIED CHANNEL IS IN USE.*
 RC3      EQU    3           RESERVED BY CPU ROUTINE *LOADBC* 
 RC4      EQU    4           RESERVED BY CPU ROUTINE *LOADBC* 
 RC5      EQU    5           RESERVED BY CPU ROUTINE *LOADBC* 
 RC6      EQU    6           RESERVED BY CPU ROUTINE *LOADBC* 
 RC7      EQU    7           RESERVED BY CPU ROUTINE *LOADBC* 
 RC10     EQU    10          RESERVED BY CPU ROUTINE *LOADBC* 
 RC11     EQU    11          * SYSTEM NOT IN ENGR MODE.*
 RC12     EQU    12          * BUFFER ARGUMENT ERROR.*
 RC13     EQU    13          CDC RESERVED 
 RC14     EQU    14          * CONTROLWARE LOAD ALREADY IN PROGRESS.* 
 RC15     EQU    15          * NO 77 TABLE IN CONTROLWARE RECORD.*
 RC16     EQU    16          * NO 52 TABLE IN CONTROLWARE RECORD.*
 RC17     EQU    17          * LENGTH IN 52 TABLE .NE. FET.*
 RC20     EQU    20          RESERVED BY CPU ROUTINE *LOADBC* 
 RC21     EQU    21          * NOT CONTROL MODULE EST ORDINAL.* 
 RC22     EQU    22          CDC RESERVED 
 RC23     EQU    23          CDC RESERVED 
 RC24     EQU    24          CDC RESERVED 
 RC25     EQU    25          CDC RESERVED 
 RC26     EQU    26          CDC RESERVED 
 RC27     EQU    27          CDC RESERVED 
 RC30     EQU    30          * CONTROLLER DID NOT TAKE ALL CONTROLWARE* 
 RC31     EQU    31          * GENERAL STATUS  =  NNNN.*
 RC32     EQU    32          * FUNCTION TIMED OUT=NNNN.*
 RC33     EQU    33          * NO GENERAL STATUS RECEIVED.* 
 RC34     EQU    34          * CHXX, CONTROLLER RESERVED.*
          SPACE  4,10 
*         DUMP CONTROLWARE RESPONSE CODES RETURNED TO DUMP FET+0. 
  
  
 DR0      EQU    0           * CONTROLLER DUMP COMPLETE.* 
 DR1      EQU    1           * DUMP BUFFER ARGUMENT ERROR.* 
 DR2      EQU    2           * INSUFFICIENT DUMP BUFFER SPACE.* 
 DR3      EQU    3           * NOT CORRECT CONTROLLER TYPE FOR DUMP.* 
 DR4      EQU    4           * CONTROLLER DUMP UNSUCCESSFUL.* 
          SPACE  4,10 
*         DIRECT CORE ASSIGNMENTS.
  
  
 BC       EQU    20          BUFFER CONTROLLER CHANNEL NUMBER 
 ST       EQU    21          CONTROLLER GENERAL STATUS
 WC       EQU    22          CONTROLWARE CM WORD COUNT
 FN       EQU    23          LAST FUNCTION ISSUED TO CONTROLLER 
 RC       EQU    26          RESPONSE CODE
 DR       EQU    27          DUMP FET RESPONSE CODE 
 DP       EQU    30 - 34     DATA POINTERS (5 LOCATIONS)
 CT       EQU    35          CONTROLWARE TYPE 
 CE       EQU    36 - 37     CHANNEL CONTROLWARE ENTRY
 DB       EQU    40 - 44     DUMP FET BUFFER POINTERS 
 CS       EQU    47          CHANNEL SPECIFIED ON CALL STATUS 
 CN       EQU    60 - 64     CM WORD BUFFER 
 CO       EQU    65          CONTROL MODULE EST ORDINAL 
 EQ       EQU    66          CONTROL MODULE EQUIPMENT NUMBER
 CF       EQU    67          CHANNEL RESERVED BY *1LC* FLAG 
          TITLE  MAIN PROGRAM.
          ORG    PPFW 
 LCW      SPACE  4,10 
**        LCW - LOAD BUFFER CONTROLWARE MAIN PROGRAM. 
  
  
 LCW      BSS    0           ENTRY
          RJM    PRS         PRESET LOAD CONTROLWARE
          STD    RC 
          LMK    RC14 
          ZJP    LCW5        IF RELOAD ALREADY IN PROGRESS
          LMK    RC14 
          NJN    LCW2.1      IF OTHER ERROR 
          LDD    CO 
          NJN    LCW0        IF CONTROL MODULE SPECIFIED
          RJM    DCT         DUMP CONTROLLER
 LCW0     RJM    LCT         LOAD CONTROLWARE 
          NJN    LCW2        IF ERROR RESPONSE
          LDD    CS 
          ZJN    LCW1        IF DRIVER CALL 
          LDN    FCOC 
          RJM    FNC
          NJN    LCW2        IF FUNCTION TIMEOUT
 LCW1     LDD    ST          CHECK STATUS 
          ERRNZ  RC0         CODE DEPENDS ON VALUE
          ZJN    LCW2        IF NO ERROR
          LDN    RC31        * GENERAL STATUS  =  NNNN.*
 LCW2     STD    RC 
 LCW2.1   LDD    CS 
          ZJN    LCW3        IF DRIVER CALL 
          RJM    DCH         DROP CHANNEL ASSIGNMENT
          UJN    LCW4        CLEAR CHANNEL ENTRY INTERLOCK
  
 LCW3     AOM    CHTI+1*5    CLEAR SYSTEM REQUEST FLAG
          AOM    LCWA        INCREMENT CONTROLLER LOADED COUNT
 LCW4     LDM    CHTI+4 
 LCWA     ADN    0
*         ADN    1           (DRIVER CALL)
          STM    CHTI+1*5+4 
          RJM    ICE         CLEAR CHANNEL ENTRY INTERLOCK
          LDD    CM+1 
          NJN    LCW4        IF VERIFY OF LOAD COUNT FAILED 
 LCW5     RJM    SDR         SET DUMP FET RESPONSE
          RJM    GLA         FET LOAD FET ADDRESS 
          CRD    CM          READ LOAD FET+0
          LDN    ZERL 
          CRD    CN 
          LDD    RC          GET REPLY CODE 
          SHN    1
          LMN    1           SET COMPLETE BIT 
          STD    CM+4 
          LMN    RC32*2+1 
          NJN    LCW6        IF NOT FUNCTION TIME OUT ERROR 
          LDD    FN 
          UJN    LCW7        RETURN LAST FUNCTION TO FET
  
 LCW6     LDD    ST          RETURN GENERAL STATUS TO FET 
 LCW7     STD    CN+4 
          LDD    BC          RETURN CHANNEL NUMBER
          STD    CN 
          RJM    GLA         GET LOAD FET ADDRESS 
          ADN    8D 
          CWD    CN          WRITE FET+8 RESPONSE DATA
          SBN    8D 
          CWD    CM          WRITE FET+0 COMPLETION STATUS
          MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
          TITLE  SUBROUTINES. 
 CCS      SPACE  4,10 
**        CCS - CHECK CONTROLLER STATUS.
* 
*         EXIT   (A) = 0 IF STATUS RECEIVED.
*                (A) = *RC22* IF STATUS FUNCTION TIMEOUT. 
*                (A) = *RC23* IF STATUS NOT RECEIVED. 
*                (ST) = STATUS. 
* 
*         CALLS  FNC. 
  
  
 CSS3     EJM    CSS1,CH     IF DATA NOT PRESENT
          LDN    1
          IAM    ST,CH
          DCN    CH 
          NJN    CSS2        IF NO STATUS RECEIVED
  
 CCS      SUBR               ENTRY/EXIT 
          LDN    FCST        CHECK STATUS 
          RJM    FNC
          NJN    CCSX        IF FUNCTION TIMEOUT
          ACN    CH 
          LDD    HN 
          STD    T0 
 CSS1     ADN    1
          NJN    CSS3        IF NOT TIMEOUT 
          SOD    T0 
          NJN    CSS3        IF NOT TIMEOUT 
 CSS2     DCN    CH 
          LDN    RC33        * NO GENERAL STATUS RECEIVED.* 
          UJN    CCSX        RETURN 
 DCH      SPACE  4,10 
**        DCH - DROP CHANNEL ASSIGNMENT.
* 
*         ENTRY  (BC) = CHANNEL NUMBER. 
*                (CF) = 0 IF CHANNEL NOT RESERVED BY *1LC*. 
* 
*         EXIT   (CF) = 0.
* 
*         MACROS DCHAN. 
  
  
 DCH      SUBR               ENTRY/EXIT 
          LDD    CF 
          ZJN    DCHX        IF CHANNEL NOT RESERVED BY *1LC* 
          LDD    BC 
          DCHAN 
*         LDN    0
          STD    CF 
          UJN    DCHX        RETURN 
 DCT      SPACE  4,15 
**        DCT - DUMP CONTROLLER MEMORY. 
* 
*         ENTRY  (CT) = CHANNEL CONTROLWARE ENTRY.
*                (DB - DB+4) = DUMP FET *IN* POINTER (SET TO *FIRST*).
*                (DR) = *DR4* (CONTROLLER DUMP UNSUCCESSFUL) STATUS.
* 
*         EXIT   (DR) = DUMP FET RESPONSE CODE. 
* 
*         USES   T1, T2, T3, T4, CM - CM+4. 
* 
*         CALLS  D7C, FNC, GDA, SDR, WBC. 
  
  
 DCT8     RJM    D7C         DUMP 7165 CONTROLLER MEMORY
          NJN    DCTX        IF DUMP NOT SUCCESSFUL 
 DCT9     RJM    GDA         GET DUMP FET ADDRESS 
          ADN    2           UPDATE DUMP FET *IN* POINTER 
          CWD    DB 
          LDN    DR0
 DCT10    STD    DR          SAVE DUMP FET RESPONSE CODE
  
 DCT      SUBR               ENTRY/EXIT 
          RJM    GDA         GET DUMP FET ADDRESS 
          ZJN    DCTX        IF NO DUMP REQUESTED 
          LDN    ZERL        CLEAR MANIPULATE PROCESSOR PARAMETERS
          CRD    CM 
          LDN    2           SET TO DUMP CONTROLLER MEMORY
          STD    CM 
          STD    T4          PRESET 8K CONTROLLER TYPE INDEX
          LDD    CT          CHECK CONTROLWARE TYPE 
          LPN    37 
          LMN    FMCW 
          ZJN    DCT1        IF MA721 CONTROLWARE FOR 7155 FMD
          LMN    PHCW&FMCW
          ZJN    DCT1        IF MA722 CONTROLWARE FOR 7155 DEMA 
          LMN    CCCW&PHCW
          ZJN    DCT8        IF 7165 CONTROLLER 
          LMN    IDCW&CCCW
          ZJN    DCT0        IF 7255 ADAPTOR
          LDN    DR3         * NOT CORRECT CONTROLLER TYPE FOR DUMP.* 
          UJN    DCT10       SAVE RESPONSE CODE 
  
 DCT0     LDN    40          SET 7255 ADAPTOR MEMORY ADDRESS
          STD    CM+1 
          SHN    1           SET MEMORY ADDRESS INCREMENT 
          STM    DCTB 
          LDN    1           SET 7255 CONTROLLER TYPE INDEX 
          STD    T4 
 DCT1     LDK    NFBT        SET NUMBER OF FULL BUFFERS 
          STD    T2 
          LDK    CWFB        SET CM WORDS IN FULL BUFFER
          STD    T3 
 DCT2     LDK    MXDB        SET NUMBER OF BLOCKS IN FULL BUFFER
          STD    T1 
 DCT3     LDC    DBUF        RESET PP DUMP BUFFER ADDRESS 
          STM    DCTA 
 DCT4     LDN    FCMP        INITIATE MANIPULATE PROCESSOR FUNCTION 
          RJM    FNC
 DCT5     NJP    DCTX        IF FUNCTION TIMEOUT
          ACN    CH 
          LDN    5           TRANSFER PARAMETERS
          OAM    CM,CH
          FJM    *,CH        IF CHANNEL FULL
          DCN    CH 
          NJN    DCT5        IF NOT ALL PARAMETERS TAKEN
          LDN    FCDM        DUMP CONTROLLER MEMORY 
          RJM    FNC
          NJN    DCT5        IF FUNCTION TIMEOUT
          ACN    CH 
          LDD    HN 
          ERRNZ  PBDB-100B   CODE DEPENDS ON VALUE
          IAM    DBUF,CH     READ CONTROLLER MEMORY DUMP BLOCK
 DCTA     EQU    *-1
          NJN    DCT5        IF NOT ALL DATA TRANSFERRED
          LDD    HN          ADVANCE PP DUMP BUFFER ADDRESS 
          RAM    DCTA 
          LDC    CWDB        ADVANCE CONTROLLER MEMORY ADDRESS
 DCTB     EQU    *-1
*         LDC    100         (ADVANCE 7255 ADAPTOR ADDRESS) 
          RAD    CM+2 
          SHN    21-10
          PJN    DCT6        IF NOT 8 BIT OVERFLOW
          STD    CM+2        CLEAR LOWER 8 BITS OF CONTROLLER ADDRESS 
          AOD    CM+1        INCREMENT UPPER 8 BITS OF ADDRESS
 DCT6     SOD    T1 
          NJP    DCT4        IF MORE BLOCKS TO TRANSFER TO BUFFER 
          RJM    WBC         WRITE BUFFER TO CM 
          SOD    T2 
          MJN    DCT7        IF DUMP COMPLETE 
          NJP    DCT2        IF MORE FULL BUFFERS TO DUMP 
          LDK    RPBB        SET REMAINING PARTIAL BUFFER BLOCKS
          ZJN    DCT7        IF NO PARTIAL BUFFER 
          STD    T1 
          LDK    CWPB        SET CM WORDS IN LAST PARTIAL BUFFER
          STD    T3 
          LDN    ZERL        CLEAR LAST CM WORD 
          CRM    DBUF+RPBB*PBDB,ON
          LJM    DCT3        TRANSFER LAST PARTIAL BUFFER 
  
 DCT7     LJM    DCT9        UPDATE FET 
 D7C      SPACE  4,10 
**        D7C - DUMP 7165 CONTROLLER MEMORY.
* 
*         ENTRY  (CM+1) = 0.
* 
*         EXIT   (A) = 0 IF DUMP SUCCESSFUL.
* 
*         USES   CM+1, T1, T2, T3, T4.
* 
*         CALLS  FNC, WBC.
  
  
 D7C      SUBR               ENTRY/EXIT 
          LDN    4           SET 7165 CONTROLLER TYPE INDEX 
          STD    T4 
          LDN    NBBD        SET NUMBER OF CONTROLLER BLOCKS TO DUMP
          STD    T2 
          LDK    CMWF        SET NUMBER OF CM WORDS IN FULL BUFFER
          STD    T3 
          LDK    CTDB        SET NUMBER OF CONTROLLER WORDS IN BLOCK
          STD    T1 
 D7C1     LDC    FCLA        LOAD ADDRESS AND LENGTH
 D7CA     EQU    *-1
          RJM    FNC
 D7C2     NJN    D7CX        IF FUNCTION TIMEOUT
          ACN    CH 
          LDD    CM+1        SEND BOTTOM 12 BITS OF ADDRESS 
          OAN    CH 
          LDD    T1          SEND LENGTH
          OAN    CH 
          FJM    *,CH 
          DCN    CH 
          LDC    FCDC        ISSUE DIAGNOSTIC READ
          RJM    FNC
          NJN    D7CX        IF FUNCTION TIMEOUT
          ACN    CH 
          LDD    T1 
          SHN    1
          IAM    DBUF,CH     READ CONTROLLER MEMORY BLOCK 
          NJN    D7C2        IF NOT ALL DATA TRANSFERRED
          RJM    WBC         WRITE BUFFER TO CM 
          SOD    T2 
          PJN    D7C3        IF DUMP NOT COMPLETE 
          LDN    0
          LJM    D7CX        RETURN 
  
 D7C3     LDC    CTDB        UPDATE CONTROLLER MEMORY ADDRESS 
          RAD    CM+1 
          SHN    -14
          RAM    D7CA 
          LDD    T2 
          NJN    D7C4        IF MORE FULL BLOCKS TO DUMP
          LDK    CMWP        SET NUMBER OF CM WORDS IN PARTIAL BLOCK
          STD    T3 
          LDK    CTPB        SET NUMBER OF PP BYTES IN PARTIAL BLOCK
          STD    T1 
 D7C4     LJM    D7C1        DUMP PARTIAL BLOCK 
 FNC      SPACE  4,10 
**        FNC - ISSUE FUNCTION. 
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         EXIT   (A) = 0 IF FUNCTION ACCEPTED.
*                (A) = *RC22* IF FUNCTION TIMEOUT.
  
  
 FNC3     LDN    0
  
 FNC      SUBR               ENTRY/EXIT 
          STD    FN          SAVE FUNCTION ISSUED 
          IJM    FNC1,CH     IF CONTROLLER READY
          DCN    CH 
 FNC1     FAN    CH 
          LDD    HN          FUNCTION TIMEOUT OUTER DELAY 
          STD    T0 
 FNC2     ADD    ON 
          IJM    FNC3,CH     IF FUNCTION ACCEPTED 
          NJN    FNC2        IF NOT FUNCTION TIMEOUT
          SOD    T0 
          NJN    FNC2        IF NOT FUNCTION TIMEOUT
          DCN    CH 
          LDN    RC32        * FUNCTION TIMED OUT=NNNN.*
          UJN    FNCX        EXIT 
 GDA      SPACE  4,10 
**        GDA - GET DUMP FET ADDRESS. 
* 
*         ENTRY  (IR+2 - IR+3) = DUMP FET ADDRESS.
* 
*         EXIT   (A) = ABSOLUTE DUMP FET ADDRESS. 
*                (A) = 0 IF NO DUMP REQUESTED.
  
  
 GDA      SUBR               ENTRY/EXIT 
          LDD    IR+3        GET DUMP FET ADDRESS 
          SCN    77 
          SHN    6
          ADD    IR+2 
          ZJN    GDAX        IF NO DUMP REQUESTED 
          ADD    RA 
          SHN    6
          UJN    GDAX        RETURN 
 GLA      SPACE  4,10 
**        GLA - GET LOAD FET ADDRESS. 
* 
*         ENTRY  (IR+3 - IR+4) = LOAD FET ADDRESS.
* 
*         EXIT   (A) = ABSOLUTE LOAD FET ADDRESS. 
  
  
 GLA      SUBR               ENTRY/EXIT 
          LDD    IR+3        GET LOAD FET ADDRESS 
          LPN    37 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          UJN    GLAX        RETURN 
 ICE      SPACE  4,10 
**        ICE - INTERLOCK CONTROLWARE LOAD BITS.
* 
*         ENTRY  (CE - CE+1) = CONTROLWARE LOAD BIT ADDRESS.
*                (CHTI) = CONTROLWARE INTERLOCK *UTEM* PARAMETERS.
* 
*         EXIT   (CM+1) = *UTEM* RETURN STATUS. 
* 
*         USES   CM+1, CM+3, CM+4, T1.
* 
*         MACROS MONITOR. 
  
  
 ICE      SUBR               ENTRY/EXIT 
          LDN    2
          STD    CM+1        SET NUMBER OF *UTEM* PARAMETER WORDS 
          STD    T1 
          LDD    CE          SET CONROLWARE LOAD BIT ADDRESS
          STD    CM+3 
          LDD    CE+1 
          STD    CM+4 
          LDD    MA 
          CWM    CHTI,T1     SET/CLEAR CONTROLWARE LOAD INTERLOCK 
          MONITOR  UTEM 
          LDD    MA          GET NEW VALUES 
          CRM    CHTI,T1
          UJN    ICEX        RETURN 
  
  
 CHTI     VFD    1/1,5/0,6/2,6/34D,42/0  VERIFY INTERLOCKS
*         VFD    1/1,5/0,6/4,6/30D,42/0  VERIFY RELOAD COUNT/DRIVER BIT 
  
          VFD    1/0,5/0,6/1,6/34D,42/1  SET LOAD IN PROGRESS 
*         VFD    1/0,5/0,6/5,6/30D,42/0  CLEAR INTERLOCK/SET LOAD COUNT 
 ILF      SPACE  4,10 
**        ILF - ISSUE LOAD FUNCTION.
* 
*         ENTRY  (CO) = 0 IF NOT CONTROL MODULE RELOAD. 
*                (CS) = 0 IF DRIVER CALL. 
*                (EQ) = CONTROL MODULE EQUIPMENT NUMBER.
* 
*         CALLS  CCS, FNC.
  
  
 ILF2     LDD    CS 
 ILFA     ZJN    ILF3        IF DRIVER CALL 
*         PSN                (*FCAR* FUNCTION NOT SUPPORTED)
          LDC    FCAL&FCAR
 ILF3     LMN    FCAR 
 ILF4     RJM    FNC         ISSUE FUNCTION 
  
 ILF      SUBR               ENTRY/EXIT 
          LDD    CO 
          ZJN    ILF2        IF NOT CONTROL MODULE RELOAD 
 ILF1     LDN    FCCN 
          RJM    FNC         ISSUE CONNECT FUNCTION 
          NJN    ILFX        IF FUNCTION TIMEOUT
          ACN    CH 
          LDD    EQ          OUTPUT CONTROL MODULE EQUIPMENT NUMBER 
          SHN    3
          OAN    CH 
          FJM    *,CH        IF CHANNEL FULL
          DCN    CH 
          RJM    CCS         STATUS CONTROLLER
          NJN    ILFX        IF ERROR 
          LDD    ST 
          NJN    ILF1        IF GENERAL STATUS NOT ZERO 
          LDN    FCLC 
          UJN    ILF4        ISSUE CONTROLWARE LOAD FROM PP FUNCTION
 LCT      SPACE  4,15 
**        LCT - LOAD CONTROLWARE TO CONTROLLER. 
* 
*         ENTRY  (CS) = CHANNEL SPECIFIED ON CALL STATUS. 
*                (DP+3 - DP+4) = FWA CONTROLWARE RECORD (77 TABLE). 
*                (EQ) = CONTROL MODULE EQUIPMENT NUMBER IF SPECIFIED. 
*                (WC) = CM WORD COUNT OF CONTROLWARE RECORD.
* 
*         EXIT   (A) = 0 IF LOAD COMPLETE.
*                (A) = *RC30* IF CONTROLLER DID NOT TAKE ALL
*                      CONTROLWARE. 
*                (A) = *RC22* IF FUNCTION TIMEOUT.
*                (A) = *RC23* IF STATUS NOT RECEIVED. 
* 
*         USES   T1, WC, DP+3 - DP+4. 
* 
*         CALLS  CCS, ILF.
  
  
 LCT4     FJM    *,CH        IF LAST WORD STILL ON CHANNEL
          DCN    CH 
 LCT5     DELAY 
          RJM    CCS         CHECK STATUS 
          NJN    LCTX        IF ERROR 
          LDD    ST 
          SBN    2
          ZJN    LCT5        IF CONTROLLER BUSY 
          LDN    0
  
 LCT      SUBR               ENTRY/EXIT 
          RJM    ILF         ISSUE LOAD FUNCTION
          NJN    LCTX        IF FUNCTION TIMEOUT
          LDD    RA 
          SHN    6
          RAD    DP+4 
          SHN    -14
          RAD    DP+3 
          LDD    TH 
          ERRNZ  BUFL-1000   CODE DEPENDS ON VALUE
          STD    T1 
          ACN    CH          ACTIVATE CHANNEL FOR OUTPUT
 LCT2     LDD    WC          SET BLOCK WORD COUNT 
          ZJN    LCT4        IF END OF CONTROLWARE
          SBD    T1 
          PJN    LCT3        IF DATA OVERFLOWS BUFFER 
          LDD    WC 
          STD    T1 
          LDN    0
 LCT3     STD    WC 
          LDD    DP+3        SET CONTROLWARE DATA ADDRESS 
          SHN    14 
          ADD    DP+4 
          CRM    BUF,T1      READ BLOCK OF CONTROLWARE
          STD    DP+4        SAVE NEXT CM ADDRESS FOR CONTROLWARE READ
          SHN    -14
          STD    DP+3 
          LDD    T1          OUTPUT BLOCK TO CONTROLLER 
          SHN    2
          ADD    T1 
          OAM    BUF,CH 
          FJM    *,CH        IF CHANNEL FULL
          ZJN    LCT2        IF ALL DATA TAKEN
          LDN    RC30        * CONTROLLER DID NOT TAKE ALL CONTROLWARE* 
          LJM    LCTX        RETURN 
 RCT      SPACE  4,10 
**        RCT - READ CHANNEL TABLE. 
* 
*         ENTRY  (A) = CHANNEL NUMBER.
* 
*         EXIT   (A) = ADDRESS OF CHANNEL RESERVATION TABLE WORD. 
*                (BC) = CHANNEL NUMBER. 
*                (T6) = BYTE ADDRESS OF CHANNEL RESERVATION STATUS. 
*                (CM - CM+4) = CHANNEL RESERVATION TABLE WORD.
* 
*         USES   T0.
  
  
 RCT      SUBR               ENTRY/EXIT 
          LPN    77 
          STD    BC 
          STD    T6 
          LCN    0
          STD    T0 
          LDK    CHTP        GET CHANNEL TABLE ADDRESS
          CRD    CM 
 RCT1     AOD    T0 
          LCN    5
          RAD    T6 
          PJN    RCT1        IF CHANNEL WORD NOT REACHED
          ADN    CM+5 
          STD    T6 
          LDD    CM+2        READ CHANNEL RESERVATION TABLE 
          SHN    14 
          LMD    CM+3 
          ADD    T0 
          CRD    CM 
          UJN    RCTX        RETURN 
 SDR      SPACE  4,10 
**        SDR - SET DUMP FET RESPONSE.
* 
*         ENTRY  (DR) = DUMP FET RESPONSE CODE. 
*                (IR+2 - IR+3) = DUMP FET ADDRESS.
* 
*         EXIT   (IR+2 - IR+3) = DUMP FET ADDRESS CLEARED.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  GDA. 
  
  
 SDR      SUBR               ENTRY/EXIT 
          RJM    GDA         GET DUMP FET ADDRESS 
          ZJN    SDRX        IF NO DUMP REQUESTED 
          CRD    CM 
          LDD    DR          RETURN RESPONSE CODE 
          SHN    1
          LMN    1           SET COMPLETE BIT 
          STD    CM+4 
          RJM    GDA
          CWD    CM 
          LDN    0           CLEAR DUMP FET ADDRESS 
          STD    IR+2 
          LDD    IR+3 
          LPN    77 
          STD    IR+3 
          UJN    SDRX        RETURN 
 WBC      SPACE  4,10 
**        WBC - WRITE DUMP BUFFER TO CM.
* 
*         ENTRY  (T3) = NUMBER OF CM WORDS IN BUFFER BLOCK. 
*                (T4) = CONTROLLER TYPE INDEX IF FIRST BLOCK. 
*                     = 0 IF FIRST BLOCK ALREADY WRITTEN. 
*                (DB+3 - DB+4) = DUMP FET *IN* POINTER. 
* 
*         EXIT   BUFFER BLOCK WRITTEN TO CM.
*                DUMP FET *IN* POINTER UPDATED. 
  
  
 WBC      SUBR               ENTRY/EXIT 
          LDD    T4          SET CONTROLLER TYPE INDEX IN BYTE 0
          ZJN    WBC1        IF NOT FIRST BLOCK 
          STM    BUF
          LDN    0           SET FIRST BLOCK WRITTEN
          STD    T4 
 WBC1     LDD    DB+3        WRITE BUFFER TO CM 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DB+4 
          CWM    DBUF,T3
          LDD    T3          ADVANCE DUMP FET *IN* POINTER
          RAD    DB+4 
          SHN    -14
          RAD    DB+3 
          UJN    WBCX        RETURN 
          TITLE  BUFFERS. 
          USE    BUFFERS
          USE    *
  
  
 BUF      EQU    *           CONTROLWARE LOAD BUFFER
  
          ERRNG  EPFW-BUF-BUFL  PPU MEMORY OVERFLOW 
  
  
 DBUF     EQU    *           CONTROLLER DUMP BUFFER 
 DBUFL    EQU    EPFW-DBUF-5 MAXIMUM BUFFER SIZE
  
*         7155 DUMP BUFFER ASSEMBLY CONSTANTS.
  
 MXDB     EQU    DBUFL/PBDB/5*5  MAXIMUM 7155 DUMP BLOCKS IN PP BUFFER
 NFBT     EQU    NCBD/MXDB   NUMBER OF FULL BUFFERS TO TRANSFER 
 RPBB     EQU    NCBD-NFBT*MXDB  REMAINING PARTIAL BUFFER BLOCKS
 CWFB     EQU    MXDB*PBDB/5 CM WORDS IN FULL BUFFER
 PBPB     EQU    RPBB*PBDB+4 PP BYTES IN LAST PARTIAL BUFFER (ROUNDED)
 CWPB     EQU    PBPB/5      CM WORDS IN LAST PARTIAL BUFFER
  
*         7165 DUMP BUFFER ASSEMBLY CONSTANTS.
  
 PPDB     EQU    DBUFL/12*12 PP BYTES PER FULL DUMP BLOCK 
 CCSZ     EQU    40000       7165 CONTROLLER MEMORY SIZE (16 BIT WORDS) 
 CTDB     EQU    PPDB/2      CONTROLLER WORDS PER FULL DUMP BLOCK 
 NBBD     EQU    CCSZ/CTDB   NUMBER OF CONTROLLER BLOCKS TO DUMP
 CTPB     EQU    CCSZ-NBBD*CTDB  CONTROLLER WORDS IN PARTIAL DUMP BLOCK 
 CMWF     EQU    PPDB/5      NUMBER OF CM WORDS PER FULL BLOCK
 CPPB     EQU    CTPB*2+4    PP BYTES PER PARTIAL BLOCK (ROUNDED) 
 CMWP     EQU    CPPB/5      NUMBER OF CM WORDS PER PARTIAL BLOCK 
 DBSZ     EQU    CMWF*NBBD+CMWP  CM DUMP BUFFER SIZE
  
  
          OVERFLOW
          TITLE  PRESET.
 PRS      SPACE  4,20 
**        PRS - PRESET LOAD CONTROLWARE.
* 
*         ENTRY  (IR+2 - IR+3) = DUMP FET ADDRESS.
*                (IR+3 - IR+4) = LOAD FET ADDRESS.
*                (LOAD FET+8) BIT 2**11 = 1 IF BOTTOM 9 BITS =
*                                         CONTROL MODULE EST ORDINAL. 
*                             BIT 2**10 = 0 IF DRIVER CALL. 
* 
*         EXIT   (A) = ERROR RESPONSE.
*                (BC) = CHANNEL NUMBER. 
*                (CS) = 0 IF DRIVER CALL. 
*                (CT) = CHANNEL CONTROLWARE TYPE. 
*                (CE - CE+1) = CONTROLWARE LOAD BITS POINTER. 
*                (CHTI) SET FOR CLEAR OF CONTROLWARE TABLE INTERLOCK. 
*                (DB - DB+4) = *IN* POINTER FOR DUMP FET. 
*                (DP+3 - DP+4) = FWA OF CONTROLWARE RECORD (77 TABLE).
*                (DR) = INITIAL DUMP FET RESPONSE.
*                (WC) = CM WORD COUNT OF CONTROLWARE RECORD.
*                IF A CHANNEL WAS SPECIFIED ON THE CALL - 
*                     (CF) = 0. 
*                     (CO) = 0. 
*                IF A CONTROL MODULE WAS SPECIFIED ON THE CALL -
*                     (CO) = CONTROL MODULE EST ORDINAL.
*                     (CF) = 1 (CHANNEL RESERVED).
*                     (EQ) = CONTROL MODULE EQUIPMENT NUMBER. 
* 
*         USES   T6, T7, CM - CM+4, CN - CN+4, DB-2 - DB+7, T0 - T4.
* 
*         CALLS  DCH, GDA, GLA, ICE, RCT, RSC, SCC, SDR, VFP. 
  
  
 PRS18    LDN    RC1         * USER NOT SYSTEM ORIGIN.* 
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    DR4         PRESET CONTROLLER DUMP UNSUCCESSFUL STATUS 
          STD    DR 
          LDN    0           INITIALIZE NO CONTROL MODULE EST ORDINAL 
          STD    CO 
          STD    CF          INITIALIZE NO CHANNEL RESERVED 
          LDD    IR+3        VALIDATE CONTROLWARE LOAD FET
          LPN    77 
          SHN    14 
          ADD    IR+4 
          RJM    VFP
          NJN    PRS1        IF INVALID BUFFER PARAMETERS 
          LDD    CP 
          ADK    JOTW 
          CRD    CM 
          LDD    CM+3 
          LMK    SYOT 
          NJN    PRS18       IF NOT SYSTEM ORIGIN 
          LDD    MA          GET LOAD FET PARAMETERS
          ADN    2
          CRD    DP          *IN* AND *OUT* POINTERS
          ADN    1
          CRD    CM          GET FET LENGTH 
          LDD    CM 
          LPN    77 
          SBN    4
          PJN    PRS2        IF LOAD FET LONG ENOUGH
 PRS1     LDN    RC12        * BUFFER ARGUMENT ERROR.*
          UJN    PRSX        RETURN 
  
 PRS2     LDD    IR+3        VALIDATE CONTROLWARE DUMP FET
          SCN    77 
          SHN    6
          LMD    IR+2 
          SHN    6
          ZJN    PRS4        IF NO CONTROLLER DUMP REQUESTED
          RJM    VFP
          NJN    PRS3        IF INVALID BUFFER PARAMETERS 
          LDD    MA          GET DUMP FET PARAMETERS
          ADN    3
          CRD    DB+2        *FIRST* AND *LIMIT* POINTERS 
          LDN    ZERL 
          CRD    DB-2 
          RJM    GDA         GET DUMP FET ADDRESS 
          ADN    2           REWIND FET (SET *IN* = *OUT* = *FIRST*)
          CWD    DB 
          ADN    1
          CWD    DB 
          LDD    DB+2+3      VERIFY DUMP BUFFER SIZE
          SBD    DB+2+1 
          SHN    14 
          ADD    DB+2+4 
          SBD    DB+2+2 
          SBK    DBSZ+1      REQUIRED CM DUMP BUFFER SIZE 
          PJN    PRS4        IF DUMP BUFFER LARGE ENOUGH
          LDN    DR2         * INSUFFICIENT DUMP BUFFER SPACE.* 
 PRS3     STD    DR 
          RJM    SDR         SET DUMP FET RESPONSE
 PRS4     LDD    DP+3        LOAD FET *OUT* POINTER 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DP+4 
          CRD    CM 
          LDD    CM 
          LMC    7700 
          ZJN    PRS5        IF 77 TABLE PRESENT
          LDN    RC15        * NO 77 TABLE IN CONTROLWARE RECORD.*
          UJN    PRS6        RETURN 
  
 PRS5     LDD    DP+3 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    DP+4 
          ADD    CM+1        ADD 77 TABLE LENGTH
          ADN    1
          CRD    CN          READ EXPECTED 52 TABLE 
          LDD    CN 
          LMC    5200 
          ZJN    PRS7        IF 52 TABLE PRESENT
          LDN    RC16        * NO 52 TABLE IN CONTROLWARE RECORD.*
 PRS6     LJM    PRSX        RETURN 
  
 PRS7     STD    CE+1        CLEAR CHANNEL ENTRY POINTER
          LDD    DP+3 
          SHN    14 
          ADD    DP+4 
          ADD    CM+1        ADD 77 TABLE LENGTH - 1
          ADN    2           52 TABLE ADDRESS + LENGTH
          STD    DP+4        RESET *OUT* POINTER TO FWA CONTROLWARE 
          SHN    -14
          STD    DP+3 
          LDD    CN+4        LENGTH OF CONTROLWARE
          SBN    1           ADJUST FOR 52 TABLE
          STD    WC          CM WORD COUNT OF CONTROLWARE 
          LDD    DP+1        CHECK *IN* - *OUT* 
          SBD    DP+3 
          SHN    14 
          ADD    DP+2 
          SBD    DP+4 
          SBD    WC 
          ZJN    PRS8        IF CORRECT CONTROLWARE LENGTH
          LDN    RC17        * LENGTH IN 52 TABLE .NE. FET.*
          UJN    PRS6        RETURN 
  
 PRS8     STD    CO          INITIALIZE CONTROL MODULE INDICATOR
          RJM    GLA         GET LOAD FET ADDRESS 
          ADN    10          READ FET+8 
          CRD    CM 
          LDD    CM+4        SET CALL STATUS
          SHN    0-12 
          LPN    1
          STD    CS 
          ZJN    PRS9        IF DRIVER CALL 
          LDN    SSTL 
          CRD    T0 
          LDD    T0+3 
          LPN    4
          ZJN    PRS9        IF ENGINEERING MODE ENABLED
          LDD    CP 
          ADN    JCIW 
          CRD    T0          CHECK FOR *MSE* SUBSYSTEM
          LDD    T0+2        GET SUBSYSTEM ID 
          LMC    ASSI 
          ZJN    PRS9        IF CALLER IS *MSE* SUBSYSTEM 
          LDN    RC11        * SYSTEM NOT IN ENGR MODE.*
          UJN    PRS10       RETURN 
  
 PRS9     LDD    CM+4 
          SHN    21-13
          PJN    PRS11       IF CHANNEL SPECIFIED 
          SHN    13-21
          LPC    777
          STD    CO          SET CONTROL MODULE EST ORDINAL 
          RJM    SCC         SET CONTROL MODULE CHANNEL 
          ZJN    PRS12       IF NO ERROR
 PRS10    LJM    PRSX        RETURN 
  
 PRS11    SHN    13-21
          RJM    RCT         READ CHANNEL TABLE 
          ADN    2*CTALL     READ CHANNEL CONTROLWARE TABLE 
          CRD    CM 
          STD    CE+1        SAVE CONTROLWARE ENTRY ADDRESS 
          SHN    -14
          STD    CE 
          LDI    T6 
          STD    CT          SAVE CHANNEL CONTROLWARE ENTRY 
          LDM    PRSA-CM,T6  SET *UTEM* PARAMETERS FOR CHANNEL TABLE
          STM    CHTI+1 
          STM    CHTI+1*5+1 
 PRS12    LDD    CT 
          SHN    0-12 
          STM    CHTI+4 
          SHN    21-0 
          MJN    PRS13       IF LOAD ALREADY IN PROGRESS
          RJM    ICE         INTERLOCK CONTROLWARE LOAD BITS
          LDD    CM+1 
          ZJN    PRS14       IF INTERLOCK SET CORRECTLY 
 PRS13    RJM    DCH         DROP CHANNEL ASSIGNMENT
          LDN    RC14        * CONTROLWARE LOAD ALREADY IN PROGRESS.* 
          LJM    PRSX        RETURN 
  
 PRS14    LDD    CT          SET PARAMETERS TO CLEAR CHANNEL INTERLOCK
          SHN    -6 
          LPN    17 
          STM    CHTI+4 
          LDC    4004 
          STM    CHTI 
          LDN    5
          STM    CHTI+1*5 
          LDC    -400 
          RAM    CHTI+1 
          STM    CHTI+1*5+1 
          LDD    CO 
          NJN    PRS15       IF CONTROL MODULE RELOAD 
          RJM    RSC         RESERVE AND STATUS CHANNEL 
          NJN    PRS17       IF ERROR 
 PRS15    LDD    CT          CHECK CONTROLWARE TYPE 
          LPN    37 
          SBN    FMCW 
          ZJN    PRS17       IF MA721 (SUPPORTS *FCAR* FUNCTION)
          SBN    PHCW-FMCW
          ZJN    PRS17       IF MA722 (SUPPORTS *FCAR* FUNCTION)
          SBN    IDCW-PHCW
          ZJN    PRS17       IF MA462 (SUPPORTS *FCAR* FUNCTION)
          LDN    PSNI 
          STM    ILFA 
          LDN    0
 PRS17    LJM    PRSX        RETURN 
  
  
 PRSA     BSS    0           TABLE OF RELOAD FLAG BIT POSITIONS 
          CON    58DS6
          CON    46DS6
          CON    34DS6
          CON    22DS6
          CON    10DS6
          SPACE  4,10 
*         CHANNEL TABLE.
  
  
          CHTB   CH 
 SCI      SPACE  4,10 
**        SCI - SET CHANNEL INSTRUCTIONS. 
* 
*         USES   T1, T2, T3.
  
  
 SCI      SUBR               ENTRY/EXIT 
          LDC    CTCH        INITIALIZE CHANNEL TABLE ADDRESS 
          STD    T1 
          LDD    BC          CLEAR POSSIBLE CCH FLAG
          LPN    37 
          STD    T3 
 SCI1     LDI    T1 
          ZJN    SCIX        IF END OF CHANNEL INSTRUCTIONS 
          STD    T2 
          LDI    T2          GET NEXT CHANNEL INSTRUCTION 
          SCN    37 
          LMD    T3 
          STI    T2          INITIALIZE CHANNEL INSTRUCTION 
          AOD    T1 
          UJN    SCI1        LOOP TO CHECK FOR NEXT INSTRUCTION 
 RSC      SPACE  4,15 
**        RSC - RESERVE AND STATUS CHANNEL. 
* 
*         ENTRY  (BC) = CHANNEL NUMBER. 
*                     = *RC2* IF DOWN CHANNEL IN USE. 
*                     = *RC34* IF CONTROLLER RESERVED.
*                (CS) = CHANNEL SPECIFIED ON CALL STATUS. 
* 
*         EXIT   (A) = 0. 
*                (A) = *RC24* IF CONTROLLER RESERVED THROUGH
*                      ALTERNATE ACCESS OR *RC22* IF FUNCTION 
*                      TIMEOUT OCCURED. 
*                CHANNEL RESERVED IF NOT SYSTEM REQUEST.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CCS, FNC, RCT, SCI.
* 
*         MACROS MONITOR, RCHAN.
  
  
 RSC2     LDD    BC 
          RCHAN              RESERVE CHANNEL
 RSC3     AOD    CF          SET CHANNEL RESERVED BY *1LC* FLAG 
 RSC4     RJM    SCI         SET CHANNEL INSTRUCTIONS 
          LDD    BC 
          LPN    40 
          ZJN    RSC5        IF NOT A CIO CHANNEL 
          LDC    100000      MASTER CLEAR THE CHANNEL 
          RJM    FNC
          NJN    RSCX        IF ERROR OCCURRED
 RSC5     RJM    CCS         CHECK CONTROLLER STATUS
          NJN    RSC6        IF STATUS TIMEOUT OR STATUS NOT RECEIVED 
          LDD    ST 
 RSC6     LPC    2000 
          ZJN    RSCX        IF CONTROLLER NOT ALREADY RESERVED 
          LDN    RC34        * CHXX, CONTROLLER RESERVED.*
  
 RSC      SUBR               ENTRY/EXIT 
          LDD    CS 
          ZJN    RSC4        IF DRIVER CALL 
          LDD    BC 
          RJM    RCT         READ CHANNEL TABLE 
          LDI    T6 
          LPN    40 
          ZJP    RSC2        IF CHANNEL UP
          LDN    0
          STD    CM+2 
          LDD    BC          ASSIGN DOWNED CHANNEL
          STD    CM+1 
          MONITOR  CCHM 
          LDD    CM+2 
          NJP    RSC3        IF CHANNEL ASSIGNED
          LDN    RC2         * SPECIFIED CHANNEL IS IN USE.*
          UJN    RSCX        RETURN 
 SCC      SPACE  4,15 
**        SCC - SET CONTROL MODULE CHANNEL. 
* 
*         ENTRY  (CO) = CONTROL MODULE EST ORDINAL. 
*                (CS) = 0 IF DRIVER CALL. 
* 
*         EXIT   (A) = ERROR RESPONSE (0 IF NO ERROR).
*                (BC) = CHANNEL NUMBER. 
*                (CF) .NE. 0 IF CHANNEL RESERVED. 
*                (CT) = CONTROLWARE TYPE. 
*                (EQ) = CONTROL MODULE EQUIPMENT NUMBER.
*                (CE - CE+1) = ABSOLUTE ADDRESS OF *CM* EST ENTRY.
* 
*         USES   BC, CF, CT, EQ, T1, CE - CE+1, CM - CM+4, CN - CN+4. 
* 
*         CALLS  SCI. 
* 
*         MACROS MONITOR, RCHAN, SFA. 
  
  
 SCC10    LDN    RC21        * NOT CONTROL MODULE EST ORDINAL.* 
  
 SCC      SUBR               ENTRY/EXIT 
          SFA    EST,CO      GET EST ENTRY
          ADK    EQDE 
          CRD    CN 
          ADN    EQAE-EQDE
          CRD    CM 
          STD    CE+1 
          SHN    -14
          STD    CE 
          LDD    CN+3 
          LMC    2RCM 
          NJN    SCC10       IF NOT CONTROL MODULE
          LDD    CN+4        SAVE CONTROL MODULE EQUIPMENT NUMBER 
          SHN    -11
          STD    EQ 
          LDD    CM+2 
          STD    CT 
          SHN    0-11 
          LPN    1
          LMN    1
          RAM    SCCA 
          LDD    CS 
          NJN    SCC6        IF NOT DRIVER CALL 
          LDD    CN+1        SET CHANNEL NUMBER 
*         LDD    CN+2        (CHANNEL ACCESS BIT CLEAR) 
 SCCA     EQU    *-1
          LPN    37 
 SCC2     STD    BC 
          LDN    0
 SCC3     LJM    SCCX        RETURN 
  
 SCC4     LDI    T1 
          RCHAN              RESERVE CHANNEL
 SCC5     RJM    SCI         SET CHANNEL INSTRUCTIONS 
          AOD    CF          SET CHANNEL RESERVED BY *1LC* FLAG 
          LDD    CM+1 
          UJN    SCC2        SET CHANNEL NUMBER 
  
 SCC6     LDN    CN+1 
          STD    T1 
 SCC7     LDI    T1 
          SHN    0-12 
          LMN    2
          ZJN    SCC4        IF CHANNEL ENABLED AND UP
          AOD    T1 
          LMN    CN+3 
          NJN    SCC7        IF ANOTHER CHANNEL BYTE TO CHECK 
 SCC8     SOD    T1 
          LMN    CN 
          NJN    SCC9        IF ANOTHER CHANNEL TO CHECK
          LDN    RC2         * SPECIFIED CHANNEL IS IN USE.*
          UJN    SCC3        RETURN 
  
 SCC9     LDI    T1 
          STD    CM+1 
          SHN    21-13
          PJN    SCC8        IF CHANNEL NOT ENABLED 
          MONITOR  CCHM      ASSIGN DOWNED CHANNEL
          LDD    CM+2 
          ZJN    SCC8        IF CHANNEL NOT ASSIGNED
          UJP    SCC5        SET CHANNEL ASSIGNED AND RETURN
 VFP      SPACE  4,20 
**        VFP - VALIDATE FET PARAMETERS.
* 
*         ENTRY  (A) = FET ADDRESS. 
* 
*         EXIT   (A) = 0 IF FET ADDRESS AND BUFFER PARAMETERS VALID.
*                (A) = *DR1* IF BUFFER PARAMETERS INVALID.
*                (MB+2) = 12/0, 24/*IN*,  24/*OUT*. 
*                (MB+3) = 1/RANDOM FILE FLAG, 5/0, 6/FET LENGTH,
*                         24/*FIRST*, 24/*LIMIT*. 
* 
*         ERROR  TO *PPR* AFTER JOB ABORT IF FET ADDRESS INVALID. 
* 
*         USES   CM+1, CM+3, CM+4.
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 VFP1     LDN    DR1         * DUMP BUFFER ARGUMENT ERROR.* 
  
 VFP      SUBR               ENTRY/EXIT 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDN    3           VALIDATE *FIRST*, *IN*, *OUT*, AND *LIMIT* 
          STD    CM+1 
          MONITOR  VFPM 
          LDD    CM+1 
          ZJN    VFPX        IF FET ADDRESS AND BUFFER PATAMETERS VALID 
          SBN    1
          NJN    VFP1        IF NOT INVALID FET ADDRESS 
          LDC    VFPA        * FET ADDRESS OUT OF RANGE.* 
          RJM    DFM
          MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT TO PP RESIDENT
  
  
 VFPA     DATA   C* FET ADDRESS OUT OF RANGE.*
          SPACE  4,10 
          END 
