COMPCLC 
COMMON
          CTEXT  COMPCLC - CALCULATE DEVICE LABEL CHECKSUM. 
 CLC      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMPCLC
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 CLC      SPACE  4
***       CLC - CALCULATE DEVICE LABEL CHECKSUM.
*         J. J. EIKUM.       86/10/13.
*         J. M. MAREK.       87/04/24.
* 
*         *RLS* IS ASSEMBLED ONLY WHEN *RLS$* IS DEFINED. 
 CDC      SPACE  4,15 
***              *CDC* CALCULATES THE CHECKSUM FOR THE *DIT* IN THE 
*         LABEL SECTOR.  IT EXPECTS THE LABEL TO HAVE BEEN READ INTO
*         *BFMS*. 
* 
*         ENTRY  (BFMS) = DEVICE LABEL SECTOR, IF *BUF$* NOT DEFINED. 
* 
*         EXIT   (A) = LABEL CHECKSUM.
*                (DKSS) = *DIT* CHECKSUM. 
* 
*         USES   T1.
* 
*         CALLS  CLC. 
  
  
 CDC1     LDM    -1,T1       ADD BYTES 3 AND 4 OF *DIT* ENTRY 
          ADI    T1 
          RAI    T0 
          SHN    -14
          LMI    T0 
 CDC2     STI    T0 
          LCN    5
          RAD    T1 
          ADC    -DISS-4
          PJN    CDC1        IF MORE ENTRIES
          IF     DEF,BUF$,1 
          LDN    BFMS-BFMS
          RJM    CLC         CALCULATE LABEL CHECKSUM 
  
 CDC      SUBR               ENTRY/EXIT 
          LDC    DKSS 
          ERRNZ  DISS+MISD*5+4-DKSS  CODE ASSUMES VALUES
          STD    T0 
          STD    T1 
          LDN    0
          UJN    CDC2        CONTINUE 
 CLC      SPACE  4,15 
***              *CLC* CALCULATES THE CHECKSUM FOR A DEVICE LABEL 
*         SECTOR.  IT NORMALLY EXPECTS THE LABEL TO HAVE BEEN READ INTO 
*         *BFMS*.  BUT IF *BUF$* HAS BEEN DEFINED, *CLC* EXPECTS THE
*         FWA OF THE BUFFER IN A.  IT USES A DIRECT CELL, *LB*, FOR 
*         INDEXING INTO THE BUFFER. 
* 
*         ENTRY  (BFMS) = DEVICE LABEL SECTOR, IF *BUF$* NOT DEFINED. 
*                (A) = FWA OF DEVICE LABEL SECTOR - *BFMS*, IF *BUF$* 
*                      IS DEFINED.
* 
*         EXIT   (A) = CHECKSUM.
* 
*         USES   LB, IF BUF$ IS DEFINED.
  
  
*         DEFINE INDEXING MICRO.
  
          IF     DEF,BUF$,2 
 LB       MICRO  1,, LB 
          ELSE   1
 LB       MICRO  1,, 0
  
  
 CLC      SUBR               ENTRY/EXIT 
          IF     DEF,BUF$,1 
          STD    LB          SET LABEL BUFFER OFFSET
          LDN    77 
          ADM    N4SS+SDGL*5+2,"LB" 
          ADM    N4SS+SDGL*5+3,"LB" 
          ADM    N4SS+SDGL*5+4,"LB" 
          ADM    N4SS+STLL*5+2,"LB" 
          ADM    DKSS 
          STD    T0          CONVERT TO 12 BIT VALUES 
          SHN    -14
          LMD    T0 
          UJP    CLCX        RETURN 
  
  
 .RLS     IF     DEF,RLS$ 
 RLS      SPACE  4,25 
**        RLS - RECREATE LABEL SECTOR.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = LABEL TRACK.
*                (DT) = DEVICE TYPE.
*                (MS) = MST FWA.
*                (ES - ES+4) = EST *EQDE* WORD, IF *ISD$* NOT DEFINED.
*                BUF$ IS DEFINED IF *CLC* IS TO BE PASSED FWA-*BFMS* OF 
*                        LABEL BUFFER.
*                ISD$ IS DEFINED WHEN THE FOLLOWING CAN ALL BE ASSUMED -
*                        (DL) = *MSTL* = *MISD*.
*                        (DO) = *DIT* OFFSET. 
*                        (TA - TA+1) = TRT FWA. 
*                        THE DEVICE IS AN ISHARED DEVICE. 
* 
*         EXIT   *BFMS* CONTAINS THE LABEL. 
*                (CA - CA+1) = TRT FWA, IF *ISD$* NOT DEFINED.
* 
*         USES   T1, CM - CM+5. 
* 
*         CALLS  CLC. 
* 
*         MACROS MONITOR. 
  
  
 RLS      SUBR               ENTRY/EXIT 
          LDC    3777        SET SYSTEM SECTOR CONTROL BYTES
          STM    BFMS 
          LDN    77 
          STM    BFMS+1 
          LDD    MA          ENTER LABEL NAME 
          CWM    RLSA,ON
          SBN    1
          CRM    FNSS,ON
          LDD    T5          STORE EQUIPMENT
          STM    EQSS 
          LDD    T6          STORE FIRST TRACK
          STM    FTSS 
          LDN    FSMS 
          STM    NSSS        SET NEXT SECTOR
          LDK    CKSS-NSSS-2
          STD    T1 
 RLS1     LDN    0           CLEAR SYSTEM SECTOR
          STM    NSSS+1,T1
          STM    NSSS+2,T1
          LCN    2
          RAD    T1 
          PJN    RLS1        IF MORE TO CLEAR 
          LDN    PDTL        STORE PACKED DATE
          CRM    DTSS,ON
          AOM    DTSS        SET ENHANCED EOI FLAG
          LDN    2           SET LABEL LEVEL
          STM    LLSS 
          LDD    DT          SET DEVICE TYPE
          STM    E4SS 
  
*         READ MST INTO LABEL.
  
 .ISD     IF     -DEF,ISD$
          LDN    MSTL        SET LENGTH 
          STD    T1 
          LDD    MS 
          SHN    3
          CRM    N4SS,T1
          ADK    TRLL-MSTL   GET FWA OF TRT 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          STD    CA 
          LDD    CM+4 
          STD    CA+1        SET ADDRESS OF TRT 
  
*         GET SHARED DEVICE DATA. 
  
          LDD    ES 
          SHN    21-11
          PJN    RLS3        IF NOT SHARED DEVICE 
          SHN    21-4-21+11 
          MJN    RLS2        IF ISHARED 
          LDD    T5          UPDATE THE TRT 
          STD    CM+1 
          LDN    UTRS 
          STD    CM+3 
          MONITOR STBM
          UJN    RLS3        SET CHECKSUM 
  
 RLS2     LDN    MISD        LENGTH OF DIT
          STD    T1 
          LDM    N4SS+5*TDGL+2  GET LENGTH OF TRT 
          ADN    7
          SHN    -3          DETERMINE LENGTH OF MRT
          ADM    N4SS+5*TDGL+2  ADD LENGTH OF TRT 
          SHN    6
          ADD    CA          ADD FWA OF TRT 
          SHN    14 
          ADD    CA+1 
          CRM    DISS,T1     READ DIT 
 .ISD     ELSE
*         READ MST AND DIT. 
  
          LDD    MS          MST ADDRESS
          SHN    3
          CRM    N4SS,DL     READ MST 
          ERRNZ  MSTL-MISD   CODE ASSUMES MSTL = MISD 
          LDD    TA          GET TRT ADDRESS
          SHN    14 
          LMD    TA+1 
          ADD    DO          DIT OFFSET 
          CRM    DISS,DL     READ DIT 
          LDD    MI          MOVE LOCAL PF STATUS TO DIT
          SHN    2
          ADD    MI 
          STD    T1 
          LDM    N4SS+DULL*5+1
          STM    DISS-5,T1
 .ISD     ENDIF 
  
*         SET CHECKSUM. 
  
 RLS3     RJM    CDC         CALCULATE LABEL CHECKSUM 
          STM    CKSS 
          LJM    RLSX        RETURN 
  
  
 RLSA     VFD    42/0LLABEL,6/1,6/SYFT,6/0  LABEL SECTOR FNT ENTRY
 .RLS     ENDIF 
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 CDC      EQU    /COMPCLC/CDC 
 CLC      EQU    /COMPCLC/CLC 
 QUAL$    IF     DEF,RLS$ 
 RLS      EQU    /COMPCLC/RLS 
 QUAL$    ENDIF 
          ENDX
