*DECK CKSUM 
          IDENT CKSUM 
* 
*      CKSUM - GENERALIZED CHECKSUM SUBROUTINE
*              RAW                     04/15/77 
* 
*      PURPOSE - PRODUCE AN ACCUMULATED CHECKSUM ON A BASE 60 BIT VALUE 
*              GIVEN STARTING ADDRESS AND NUMBER OF WORDS TO ADD TO BASE
* 
*      METHOD -  FOR EACH NEW WORD, LEFT SHIFT BASE 1 BIT, THEN FORM
*              EXCLUSIVE OR OF BASE AND NEW WORD, USING RESULT AS 
*              NEW BASE VALUE 
* 
*      CALLING SEQENCE -
* 
*                CKSUM(BASE,FWA,NWDS);
* 
*                     BASE - ADDRESS OF WORD CONTAINING BASE VALUE
*                     FWA  - FIRST WORD ADDRESS OF BLOCK TO BE ADDED
*                     NWDS - NUMBER OF WORDS TO BE ADDED TO CHECKSUM
* 
*      ENTRY CONDITIONS - 
* 
*                A1 CONTAINS ADDRESS OF PARAMETER LIST
* 
*      EXIT CONDITIONS -
* 
*                BASE CONTAINS NEW ACCUMULATED CHECKSUM 
*                X6 - CONTAINS NEW CHECKSUM 
* 
*      ERROR CONDITIONS 
* 
*         NONE
* 
          ENTRY CKSUM 
 CKSUM    DATA   0                 ENTRY/EXIT 
          SA2    A1+2              NWDS ADDR
          SA3    X2                FETCH NWDS 
          SA4    X1                FETCH BASE 
          SB2    B0                INITIALIZE INDEX 
          SB1    1                 FOR INDEX INCREMENT
          SA5    A1+B1             FWA ADDR 
          SA2    X5                SAVE FWA 
          SB3    X3                INDEX LIMIT
          SB4    X2                SAVE FWA 
          SA2    X2                FETCH FIRST WORD TO CHECKSUM 
 CKSLP    LX3    X4,B1             ROTATE BASE
          SB2    B2+B1             INCREMENT INDEX
          BX4    X3-X2             XOR BASE AND NEW WORD
          SA2    B4+B2             FETCH NEXT WORD TO CHECKSUM
          LT     B2,B3,CKSLP       TEST LIMIT 
          BX6    X4                RETURN CHECKSUM
          EQ     CKSUM             RETURN 
          END 
