COMPSCA 
COMMON
          CTEXT  COMPSCA - SET CATALOG ADDRESS. 
          IF     -DEF,QUAL$,1 
          QUAL   COMPSCA
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       SCA - SET CATALOG ADDRESS.
*         G. R. MANSFIELD.   70/12/10.
*         J. L. WARDELL.     72/08/24.
*         P. D. HAAS.        74/10/16.
          SPACE  4
***              SCA SETS THE EST ORDINAL AND CATALOG TRACK FOR A 
*         SPECIFIED USER INDEX. 
* 
*         IF THE SYMBOL SCA$ IS DEFINED IN THE CALLING PROGRAM, 
*         A MATCHING DEVICE WITH THE *UNLOAD* FLAG SET WILL 
*         NOT BE REJECTED.
* 
*         ENTRY  (UI - UI+1) = USER INDEX.
*                (A) = ADDRESS OF PERMANENT FILE DEVICE DESCRIPTION.
*T PFD    42/ NAME, 6/, 12/ EST ORDINAL 
* 
*         EXIT   (A) .GT. 0  IF DEVICE FOUND. (A) = ADDRESS OF MST/10.
*                (A) = -0 IF DEVICE NOT FOUND.
*                (A) = -1 IF DEVICE ACCESS DENIED BY *SETMS*. 
*                (T5) = EST ORDINAL.
*                (T6) = CATALOG TRACK.
* 
*         USES   T0 - T7, CM - CM+6, FN - FN+4. 
* 
*         MACROS MONITOR, SETMS, SFA. 
* 
*         XREF   COMSPIM. 
  
  
 SCA      SUBR               ENTRY/EXIT 
          STM    SCAA        SET ADDRESS OF DEVICE DESCRIPTION
          LDD    MA 
          CWM    *,ON 
 SCAA     EQU    *-1
          SBN    1
          CRD    FN 
          LDD    UI+1        SET EQUIPMENT SHIFT
          LPN    7
          SBN    21 
          LMC    -SHNI
          STM    SCAB 
  
*         SET UP FOR EST SEARCH.
  
          LDN    ESTP 
          CRD    T1 
          LDN    1           SET CHECK FOR AUXILIARY DEVICE 
          STD    T7 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T5 
          LDD    T1+3        SET LAST MASS STORAGE ORDINAL + 1
          STD    T6 
          LDD    FN 
          NJN    SCA1        IF AUXILIARY DEVICE REQUEST
          STD    T7          SET CHECK FOR NON-AUXILIARY DEVICE 
          SFA    EST,FN+4    READ EST ENTRY 
          ADK    EQDE 
          CRD    T0          READ EST ENTRY 
          LDD    T0+4        READ PERMANENT FILE DESCRIPTION
          SHN    3
          ADN    PFGL 
          CRD    FN 
 SCA1     AOD    T5          ADVANCE EST ORDINAL
          LMD    T6 
          NJN    SCA2        IF NOT END OF EST
          LCN    0           RETURN WITH (A) = -0 
          LJM    SCAX 
  
 SCA2     SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    T0 
          LDD    T0 
          SHN    -6 
          LPN    41 
          LMN    40 
          NJN    SCA1        IF UNAVAILABLE OR NON MS DEVICE
          LDD    T0+4        READ *STLL* WORD FROM MST
          SHN    3
          ADN    STLL 
          CRD    CM 
          SBN    STLL-MDGL   READ *MDGL*
          CRD    CM+1 
          SBN    MDGL-PFGL   GET PF DESCRIPTOR WORD 
          CRD    CM+2 
          LDD    CM 
 SCA$     IF     -DEF,SCA$
          LPC    MLFPR+MLIAL+MLIHD+MLIFD+MLIPF+MLUNL+MLDUL
 SCA$     ELSE
          LPC    MLFPR+MLIAL+MLIHD+MLIFD+MLIPF+MLDUL
 SCA$     ENDIF 
          NJN    SCA1        IF DEVICE UNAVAILABLE FOR THIS PF ACCESS 
          LDD    CM+1 
          SHN    -12
          LPN    1
          LMD    T7 
          NJN    SCA3        IF DEVICE UNAVAILABLE FOR THIS PF ACCESS 
  
*         COMPARE FAMILY/PACK NAME WITH THAT REQUESTED. 
  
          LDD    FN 
          LMD    CM+2 
          NJN    SCA3        IF NO MATCH
          LDD    FN+1 
          LMD    CM+3 
          NJN    SCA3        IF NO MATCH
          LDD    FN+2 
          LMD    CM+4 
          NJN    SCA3        IF NO MATCH
          LDD    FN+3 
          LMD    CM+5 
          SCN    77 
          NJN    SCA3        IF NO MATCH
          LDD    T0+4        RETRIEVE MST WORDS 
          SHN    3
          ADN    PUGL        PF USER DESCRIPTION
          CRD    CM+2 
          SBN    PUGL-ALGL   DEVICE ALLOCATION WORD 
          CRD    CM 
          LDD    T7 
          NJN    SCA4        IF AUXILIARY DEVICE
          LDD    CM+6        CHECK DEVICE MASK
 SCAB     SHN    ** 
          MJN    SCA4        IF USERS CATALOGS ON THIS DEVICE 
  
*         NOT PROPER DEVICE PROCEED TO NEXT DEVICE. 
  
 SCA3     LJM    SCA1 
  
*         DETERMINE CATALOG TRACK.
  
 SCA4     SOD    CM+3        SET MASK FOR NUMBER OF CATALOG TRACKS
          STM    SCAC 
          LDD    UI+1 
          SHN    -3 
          LPC    *
 SCAC     EQU    *-1
          ADN    1
          STD    T7          SET CATALOG COUNT
          ADD    CM+1        LABEL TRACK
          STD    T6 
          LDD    CM+5 
          SHN    21-5 
          PJN    SCA4.1      IF CATALOG TRACKS NOT CONTINUOUS 
          LJM    SCA6        CHECK IF DEVICE CAN BE ACCESSED
  
  
*         LOCATE  CATALOG TRACK FROM CHAIN. 
  
 SCA4.1   LDD    CM+1        SAVE FIRST TRACK OF CHAIN
          STD    T6 
          LDD    T0+4        SET FWA OF TRT - TRACK BIT 
          SHN    3
          ADN    TRLL 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          SHN    14 
          LMD    CM+4 
          SBD    TH 
          STM    SCAD+1 
          SHN    -14
          LMC    ADCI 
          STM    SCAD 
 SCA5     LDD    T6          CHECK VALID TRACK LINKAGE
          SHN    21-13
          PJN    SCA7        IF NOT VALID LINKAGE 
          SHN    13-21-2     CALCULATE NEXT TRT WORD OFFSET 
 SCAD     ADC    TRTS 
          CRD    CM 
          LDD    T6 
          LPN    3
          STD    CM+4 
          LDM    CM,CM+4
          STD    T6 
          SOD    T7 
          NJN    SCA5        IF MORE CATALOG TRACKS 
  
*         DETERMINE IF DEVICE CAN BE ACCESSED.
  
 SCA6     SETMS  STATUS 
          LDM    MSD
          SHN    21-6 
          MJN    SCA8        IF DEVICE NOT TO BE ACCESSED 
          LDD    T0+4        SET (A) = MST ADDRESS/10B
 SCA6.1   UJP    SCAX        RETURN 
  
 SCA7     MONITOR  HNGM      HANG ON INVALID CATALOG LINKAGE
          LCN    0           RETURN WITH (A) = -0 
          UJN    SCA6.1      RETURN 
  
 SCA8     LCN    1           RETURN WITH (A) = -1 
          UJN    SCA6.1      RETURN 
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 SCA      EQU    /COMPSCA/SCA 
 QUAL$    ENDIF 
          ENDX
