*DECK C$12TO6 
          IDENT  C$12TO6
          TITLE  C$12TO6 - 12 BIT TO 6 BIT CHARACTER TRANSLATOR 
  
          MACHINE   ANY,I 
          COMMENT   12 TO 6 BIT XLATOR
          SST 
          B1=1
 C.12TO6  SPACE  5
**        CB12TO6 - 12 BIT ABSOLUTE CARD COE TO 6 BIT DISPLAY 
* 
*         THIS ROUTINE HANDLES EITHER ASCII OR EBCDIC CARD CODES WHEN 
*                READ AS ABSOLUTE BINARY.  ALL SPECIAL CHARACTERS 
*                AND BOTH UPPER AND LOWER CASE ALPHA ARE HANDLED
*                CORRECTLY.  IT IS THE USER"S JOB TO GET THE FILES BUILT
*                ROUTINE ALSO HANDLES STANDARD-1 CARD CODES AS ABOVE. 
* 
*         INPUT:  
*                X2 = TRANSLATE CODE: 
*                            7 = ASCII
*                            9 = EBCDIC 
*                A0 = FIT ADDR
* 
*         USES ALL REGISTERS BUT A0 AND B1
* 
 ASCII    EQU    7
 STNDRD1  EQU    CS.STND1 
 ASCII    EQU    CS.ASCII 
  
  
*CALL IOMICROS
          ENTRY  C.12TO6
 C.12TO6  DATA   0
          SB2    C.ASCII
          SX3    X2-STNDRD1 
          ZR     X3,C12TO62 
          SX2    X2-ASCII 
          ZR     X2,C12TO62 
          SB2    C.EBCDIC 
 C12TO62  FETCH  A0,RL,X2 
          FETCH  A0,RECA,X3 
          SB7    X2          RL -CHARS
          SA5    X3-1 
          MX0    48 
          BX6    X5 
          SB6    5
          SA6    A5 
          SB5    B6+B6       =10
          SX6    0
          SB7    B7-10
          SA5    A5+1 
  
 C12TO64  ZR     B6,C12TO632
          LX5    12 
          BX4    -X0*X5      STRIP OFF CHAR TO XLATE
          SB6    B6-B1
          CX3    X4          COUNT PUNCHES
          SX2    X3-2 
          PL     X2,C12TO614 2 OR 3 PUNCHES 
          NZ     X3,C12TO68  1 PUNCH
 C12TO65  SX4    1R          NO PUNCH OR ERROR
  
 C12TO66  LX6    6           BUILD OUTPUT WORD
          BX6    X4+X6
          SB5    B5-1 
          NZ     B5,C12TO64 
          SA6    A6+B1
          MX6    0
          SB5    10          RESET REGISTERS
          EQ     C12TO632 
  
  
 C12TO68  LX4    36          SINGLE PUNCH CODES 
          NX4    X4,B3
          NZ     B3,C12TO610
          SX4    1R&         12 PUNCH 
          EQ     C12TO66
 C12TO610 SB3    B3-1 
          NZ     B3,C12TO612 NOT AN 11 PUNCH
          SX4    1R-
          EQ     C12TO66
 C12TO612 SB3    B3-B1
          SX4    B3+1R0      DIGIT PUNCH
          EQ     C12TO66
  
  
 C12TO614 SX3    X3-2 
          NZ     X3,C12TO626 3 PUNCH CODES
          MX1    51 
          BX3    X1*X4       ZONE PUNCHES 
          BX4    -X1*X4      DIGIT PUNCHES
          AX3    9
          ZR     X3,C12TO622 MAYBE 8-X PUNCH
          ZR     X4,C12TO624 C.F. 12-0 AND 11-0 
 C12TO616 LX4    38 
          NX4    X4,B3
          SX4    0
 C12TO618 SX2    X3-1 
          ZR     X2,C12TO620
          SX4    X4+6 
          AX3    1
          EQ     C12TO618 
  
 C12TO620 SA2    B2+B3       INDEX INTO TABLE 
          MX1    54 
          SB3    X4 
          AX2    X2,B3       SHIFT TABLE
          BX4    -X1*X2 
          EQ     C12TO66
  
 C12TO622 SX2    B1+B1       =2; A MASK FOR THE 8 PUNCH 
          BX2    X2*X4
          ZR     X2,C12TO65  AN ERROR 
          SX3    8
          EQ     C12TO616 
  
 C12TO624 SX4    12          C.F. 12-0 OR 11-0
          SB3    B0 
          LX3    57 
          NG     X3,C12TO620 RETURN 12-0
          SX4    6           SET 11-0 
          EQ     C12TO620 
  
  
 C12TO626 MX1    51          3 PUNCH CODES
          BX3    X1*X4       ZONE PUNCHES 
          BX4    -X1*X4      DIGIT PUNCHES
          CX1    X3 
          LX4    38 
          AX3    9
          SX1    X1-2        C.F. L.C. ALPHABETICS
          NZ     X1,C12TO628
          NX4    X4,B3       COUNT POSITION 
          SX4    X3 
          SX3    X3-6        12-11 PUNCHES
          ZR     X3,C12TO620
          SX3    X4-5        12-0 
          SX4    12 
          ZR     X3,C12TO620
          MX4    0
          EQ     C12TO620 
  
  
 C12TO628 NX4    X4,B3       X-8-Y COMBINATION
          SX4    24 
 C12TO630 SX2    X3-1 
          ZR     X2,C12TO620
          SX4    X4+6 
          AX3    1
          EQ     C12TO630 
  
  
 C12TO632 LE     B7,B0,C12TO634 
          SA5    A5+1 
          SB6    5
          SB7    B7-10
          GE     B7,B6,C12TO64
          ZR     B7,C12TO64 
          SB6    B7 
          EQ     C12TO64
  
 C12TO634 ZR     X6,C.12TO6  DONE - FULL WORD 
          SX4    6
          SX5    B5-B1
          ZR     X5,C12TO636
          IX5    X5*X4
          SB7    X5          SHIFT COUNT
          LX6    X6,B7       L. JUST WORD 
 C12TO636 SA5    =XC.BFILL+B5 
          BX6    X6+X5
          SA6    A6+B1
          EQ     C.12TO6     DONE 
 C.EBCDIC SPACE  5
*                                      ZONE PUNCHES:  
* 
*                      3-PUNCH CODE          2-PUNCH CODE 
*                     12-8  11-8  0-8    8    12    11     0
*                -------------------------------------------------------
 C.EBCDIC VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1R ,6/1R ,6/1R    0   U 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R\,6/1RA,6/1RJ,6/1R/   1   N 
          VFD    18/0,6/1R[,6/1R],6/1R\,6/1R:,6/1RB,6/1RK,6/1RS   2   I 
          VFD    18/0,6/1R.,6/1R$,6/1R,,6/1R#,6/1RC,6/1RL,6/1RT   3   T 
          VFD    18/0,6/1R<,6/1R*,6/1R%,6/1R@,6/1RD,6/1RM,6/1RU   4 
          VFD    18/0,6/1R(,6/1R),6/65B,6/1R',6/1RE,6/1RN,6/1RV   5   P 
          VFD    18/0,6/1R+,6/1R;,6/1R>,6/1R=,6/1RF,6/1RO,6/1RW   6   U 
          VFD    18/0,6/1R!,6/1R^,6/1R?,6/1R",6/1RG,6/1RP,6/1RX   7   N 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1RH,6/1RQ,6/1RY   8   C 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1RI,6/1RR,6/1RZ   9   H 
  
 C.ASCII  VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1R<,6/1R!,6/1R    0   U 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R\,6/1RA,6/1RJ,6/1R/   1   N 
          VFD    18/0,6/1R[,6/1R],6/1R\,6/1R:,6/1RB,6/1RK,6/1RS   2   I 
          VFD    18/0,6/1R.,6/1R$,6/1R,,6/1R#,6/1RC,6/1RL,6/1RT   3   T 
          VFD    18/0,6/1R<,6/1R*,6/1R%,6/1R@,6/1RD,6/1RM,6/1RU   4 
          VFD    18/0,6/1R(,6/1R),6/65B,6/1R',6/1RE,6/1RN,6/1RV   5   P 
          VFD    18/0,6/1R+,6/1R;,6/1R>,6/1R=,6/1RF,6/1RO,6/1RW   6   U 
          VFD    18/0,6/1R!,6/1R^,6/1R?,6/1R",6/1RG,6/1RP,6/1RX   7   N 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1RH,6/1RQ,6/1RY   8   C 
          VFD    18/0,6/1R ,6/1R ,6/1R ,6/1R ,6/1RI,6/1RR,6/1RZ   9   H 
          END 
