*DECK HASH
          IDENT  HASH 
* 
**********         STRAIGHT LINE CODE USED SINCE IT IS SIGNIFICANTLY
**********         FASTER THAN LOOPING IN THIS INSTANCE.
* 
          ENTRY  HASH 
* 
*    ON ENTRY--(A1) ADDRESS OF 3 WORD CHARACTER STRING TO HASH
*    ON EXIT--(X6) HASHED RESULT REDUCED MODULO 128 
*             ALL OTHER REGISTERS ARE DESTROYED.
* 
 HASH     DATA   0
* 
*  PREPARATION
          SA1    X1 
          MX4    0
          SX0    77777B 
          SA1    A1-1 
* 
*  SUM EACH 15 BIT SECTION OF  30 CHARACTER NAME. 
          DUP    3,7
          SA1    A1+1 
          DUP    3,3
          BX2    X1*X0
          IX4    X4+X2
          LX1    15 
          BX2    X1*X0
          IX4    X4+X2
* 
*  SPLIT PREVIOUS SUM INTO TWO 9 BIT QUANTITIES AND SUM 
          SX0    777B 
          BX5    X4*X0
          AX4    9
          IX7    X4+X5
* 
*  REDUCE SUM TO INTEGER MODULO 128 
          SX0    177B 
          BX6    X7*X0
* 
*  RETURN 
          EQ     HASH        RETURN 
          TITLE  HASHNM - HASH NAME TO A 30 BIT VALUE 
 HASHNM   EJECT 
          ENTRY  HASHNM 
**        HASHNM - HASH UP TO 3 WORDS OF NAME INTO A 30 BIT VALUE 
* 
*         INPUT - X1 HAS ADDRESS OF FIRST WORD OF NAME
* 
*         OUTPUT - RESULT IN X6 (CALLED AS SYMPL FUNCTION)
* 
*         CALLED FROM TBLPROC FOR DNT AND PNT NAMES 
* 
 HASHNM   DATA   0
          SA3    X1+1        GET SECOND WORD OF NAME
          SA2    X1          GET FIRST WORD OF NAME 
          MX7    30 
          SA5    =10H 
          IX6    X3-X5
          ZR     X6,DONE     JP IF SECOND WORD BLANKS 
          SA4    A3+1        GET THIRD WORD 
          IX2    X2+X3       ADD FIRST AND SECOND WORDS 
          BX6    X4-X5
          ZR     X6,DONE     JP IF THIRD WORD BLANKS
          IX2    X2+X4       ADD IN THIRD WORD
 DONE     BSS    0
          BX3    X7*X2       TOP 30 BITS
          BX2    -X7*X2      BOTTOM 30
          AX3    30 
          IX6    X2+X3       TOTAL HASH 
          BX6    -X7*X6      MASK OFF ANY OVERFLOW BITS 
          EQ     HASHNM 
          END 
