*DECK BDTOBIN 
          IDENT  BDTOBIN
          SST 
          ENTRY  BDTOBIN
  
**        BDTOBIN - CONVERT BOOLEAN DISPLAY CODE TO BINARY. 
* 
*         THIS ROUTINE CONVERTS A BOOLEAN DISPLAY CODE VALUE TO BINARY. 
*         THIS ROUTINE IS SPECIALLY DESIGNED FOR USE BY SYMPL PROGRAMS. 
*         BDTOBIN IS A FUNCTION THAT SHOULD BE DECLARED IN SYMPL AS:  
* 
*         XREF
*           BEGIN 
*           FUNC BDTOBIN I; 
*           END 
* 
*         SYMPL FUNCTION REFERENCE FOR THIS ROUTINE:  
* 
*         BDTOBIN(DCCONST,DIGITS,ERRREP); 
* 
*         ENTRY  A1 CONTAINS ADDRESS OF PARAMETER LIST: 
*                  DCCONST - LEFT JUSTIFIED DISPLAY CODE FIELD OF LENGTH
*                    DIGITS.  LEADING ZEROS MAY BE PRESENT OR 
*                    SUPPRESSED(IE BLANK) 
*                  DIGITS - COUNT OF DISPLAY CODE CHARACTERS TO CONVERT.
* 
*         EXIT   FUNCTION RESULT IS RIGHT JUSTIFIED IN X6.
*                ERRREP = -1 IF ERROR ENCOUNTERED 
*                  NOTE THAT INVALID RESULTS WILL BE OBTAINED IF THE
*                  REQUESTED CONVERSION FINDS OTHER THAN BLANKS 
*                  OR DIGITS. 
* 
*         PROCESS - SET UP NECESSARY REGISTERS
*                   FOR EACH DIGIT DEFINED BY "DIGITS": 
*                     MASK OFF UPPER CHARACTER
*                     CONVERT CHARACTER TO BINARY 
*                     MULTIPLY RESULT BY 2
*                     ADD CONVERTED CHARACTER TO RESULT 
*                     SHIFT DISPLAY CODE INPUT WORD 1 CHARACTER 
*                   RETURN. 
* 
* 
  
  
 BDTOBIN  SUBR
          SA5    X1                X5 = DCCONST 
          SA3    A1+1 
          SA4    X3 
          SX7    B0 
          SA3    A1+2 
          SA7    X3                CLEAR ERROR REPLY
          SB4    X4                B4 = DIGITS
          BX6    X6-X6             CLEAR RESULT 
          SX4    1R0               0 = CONVERSION CONSTANT
          SB7    -1R1-1 
          SX3    1R                BLANK
          SB1    1
          SB2    B1+B1
          MX0    -6                SINGLE CHARACTER MASK
  
 BDT1     SB4    B4-B1             DIGITS = DIGITS - 1
          LT     B4,BDTOBINX       IF CONVERSION COMPLETE, RETURN 
  
          LX5    6                 SHIFT TO NEXT CHARACTER
          BX1    -X0*X5            EXTRACT CHARACTER
          IX7    X1-X4             CONVERT CHARACTER
          IX2    X1-X3
          ZR     X2,BDT1           IF BLANK, ADD NOTHING TO RESULT
          NG     X7,BDT2           ERROR IF CHARACTER LESS THAN 0 
          SB5    X1+B7
          GE     B5,BDT2           ERROR IF CHARACTER GREATER THAN 9
  
          LX6    1                 X6 = X6*2
          IX6    X6+X7             ADD CONVERTED CHAR TO RESULT 
          EQ     BDT1              CONTINUE CONVERSION
  
 BDT2     BSS    0
          SX7    -1 
          SA3    A1+2              GET ERROR RETURN ADDRESS 
          SA7    X3                RETURN ERROR CODE
          EQ     BDTOBINX          RETURN 
  
          END 
