*COMDECK COMCDXB  - DISPLAY CODE TO BINARY CONVERSION 
          CTEXT  COMCDXB - DISPLAY CODE TO BINARY CONVERSION. 
 DXB      SPACE  4
          IF     -DEF,QUAL$,1 
          QUAL   COMCDXB
          BASE   D
          COMMENT COPYRIGHT CONTROL DATA SYSTEMS, INC. 1994.
 DXB      SPACE  4
***       DXB - DISPLAY CODE TO BINARY CONVERSION.
*         G. R. MANSFIELD.  70/10/09. 
 COMCDXB  SPACE  4
***              DXB CONVERTS ONE WORD OF DISPLAY CODE DIGITS TO
*         A BINARY VALUE.  CONVERSION MAY BE IN OCTAL OR DECIMAL BY 
*         THE FOLLOWING CONDITIONS. 
*         (1.)  ASSUMED BASE SPECIFIED BY CALLER. 
*         (2.)  POST RADIX SPECIFICATION.  (B = OCTAL, D = DECIMAL) 
*         (3.)  PRESENCE OF 8 OR 9 WILL FORCE DECIMAL IF NO *B* POST
*                RADIX. 
*         ERROR CONDITIONS SENSED ARE - 
*         (1.)  PRESENCE OF NON-DIGIT IN WORD.
*         (2.)  PRESENCE OF CHARACTER AFTER POST RADIX. 
*         (3.)  PRESENCE OF 8 OR 9 WITH POST RADIX = B. 
* 
* 
*         ENTRY  (X5) = WORD TO CONVERT.
*                (B7) NON-ZERO IF DECIMAL BASE ASSUMED. 
*                (B1) = 1.
* 
*         EXIT   (X6) = CONVERTED DIGITS. 
*                (X4) " 0 IF ERROR IN ASSEMBLY. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.
*                B - 2, 3, 4, 5.
*                A - NONE.
* 
*         CALLS  NONE.
  
  
 DXB1     LX2    X7,B2       DECIMAL * 10 
          IX7    X2+X7
          LX6    3           OCTAL * 8
          BX2    -X3*X1      8/9 PRESENCE 
          LX7    1
          BX6    X6+X1       OCTAL + NEW DIGIT
          IX7    X7+X1       DECIMAL + NEW DIGIT
          SB5    B5+X2       NOTE 8/9 
 DXB2     LX5    6           NEXT CHARACTER 
          BX1    -X0*X5 
          SB4    X1          CHECK CHARACTER
          LX2    X4,B4
          SX1    X1+B3       CONVERT CHARACTER
          BX5    X0*X5       CLEAR CHARACTER
          NG     X2,DXB1     LOOP IF DIGIT
  
*         CHECK FOR POST RADIX SPECIFICATION. 
  
          SB3    B5+B7       SET BASE (ASSUMED OR 8/9)
          ZR     B4,DXB3     IF END OF ASSEMBLY 
          SB3    B2+B2       BASE = DECIMAL 
          NZ     X5,DXB      RETURN IF NOT LAST CHARACTER 
          EQ     B4,B3,DXB3  IF *D* 
          SB5    B4-B5
          NE     B5,B2,DXB   RETURN IF NOT *B* OR *B* AND 8/9 PRESENT 
          SB3    B0          SET OCTAL
 DXB3     MX4    0           CLEAR ERROR
          ZR     B3,DXB      RETURN IF BASE = OCTAL 
          BX6    X7          SET DECIMAL
  
 DXB      PS                 ENTRY/EXIT 
          SX4    7774B       MASK FOR \0123456789@
          MX0    -6          (X0) = CHARACTER MASK. 
          SX6    B0          CLEAR OCTAL
          SB2    B1+B1       (B2) = 2 
          BX7    X7-X7       CLEAR DECIMAL
          SB3    -1R0        (B3) = CONVERSION CONSTANT 
          LX4    21 
          SB5    B0          CLEAR 8/9 PRESENCE 
          SX3    7           MASK FOR 8/9 
          EQ     DXB2        ENTER CONVERSION LOOP
          SPACE  4
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 DXB      EQU    /COMCDXB/DXB 
 QUAL$    ENDIF 
          ENDX
