*DECK C$BT2BT 
          IDENT  C$BT2BT
          TITLE  C$BT2BT - MOVE BOOLEAN BIT TO BOOLEAN BIT
**        C$BT2BT - MOVE BOOLEAN BIT TO BOOLEAN BIT 
* 
*         INPUT 
*                B3 - ADDRESS DESTINATION 
*                B4 - OFFSET DESTINATION
*                B5 - ADDRESS SOURCE
*                B6 - OFFSET SOURCE 
*                X0 - JUSTIFIED FLAG
*                X1 - BIT LENGTH SOURCE 
*                X2 - BIT LENGTH DESTINATION
          ENTRY  C.BT2BT
 C.BT2BT  DATA   0
          SX4    314632B
          SX3    B6 
          IX4    X4*X3
          AX4    20 
          SB5    B5+X4       NEW SOURCE ADDRESS 
          IX5    X4+X4
          LX4    3
          IX5    X4+X5
          IX6    X3-X5       SOURCE BCP 
          SX5    6
          IX6    X5*X6       SOURCE BBP 
          SA6    SRCOFFS
          SX7    B5 
          SA7    SRCADDR
          SX4    314632B
          SX3    B4 
          IX4    X4*X3
          AX4    20 
          SB3    B3+X4       NEW DESTINATION ADDRESS
          IX5    X4+X4
          LX4    3
          IX5    X5+X4
          IX6    X3-X5       BCP DESTINATION
          SX5    6
          IX6    X6*X5       BBP DESTINATION
          SA6    DSTOFFS
          SX7    B3 
          SA7    DSTADDR
          IX3    X2-X1
          BX7    X1 
          PL     X3,BT2BT1   DESTINATION LONGER 
          MX3    0
          BX7    X2 
 BT2BT1   SA7    MOVECNT     NUMBER OF SOURCE CHARACTERS TO MOVE
          BX6    X3 
          SA6    ZEROCNT
          IX3    X2-X1
          ZR     X3,BT2BT6   EQUAL LENGTHS
          ZR     X0,BT2BT4   NOT JUSTIFIED RIGHT
          PL     X3,BT2BT2   LEFT FILL
*      LEFT TRUNCATION - ADJUST SOURCE OFFSET 
          SA1    SRCOFFS
          IX1    X1-X3       INCREMENT OFFSET 
          RJ     MOD60
          SA6    SRCOFFS
          SA2    SRCADDR
          IX6    X0+X2
          SA6    A2 
          EQ     BT2BT6 
          SPACE  3
*      RIGHT JUSTIFIED - LEFT FILL
 BT2BT2   SA1    DSTOFFS
          SA2    DSTADDR
          SB3    X2 
          SA3    ZEROCNT
          SB4    X3 
 BT2BT3   MX6    0
          RJ     PUTWORD
          NZ     B4,BT2BT3
          SA1    DSTOFFS
          SA2    ZEROCNT
          IX1    X1+X2       INCREMENT DESTINATION OFFSET 
          RJ     MOD60
          SA2    DSTADDR
          IX7    X2+X0
          SA7    A2 
          SA6    DSTOFFS
          EQ     BT2BT6 
          SPACE  3
*      LEFT JUSTIFIED - RIGHT FILL
 BT2BT4   SA2    ZEROCNT
          ZR     X2,BT2BT6   NO FILL
          SA1    DSTOFFS
          SA2    MOVECNT
          IX1    X1+X2       OFFSET TO START FILL 
          RJ     MOD60
          SA2    DSTADDR
          IX7    X2+X0
          SB3    X7 
          BX1    X6 
          SA2    ZEROCNT
          SB4    X2 
 BT2BT5   MX6    0
          RJ     PUTWORD
          NZ     B4,BT2BT5
          EQ     BT2BT6 
          SPACE  3
 BT2BT6   SA1    SRCADDR
          SB3    X1 
          SA2    MOVECNT
          SB4    X2 
          SA1    SRCOFFS
          RJ     GETWORD
          SA2    MOVECNT
          SB4    X2 
          SA1    DSTOFFS
          SA2    DSTADDR
          SB3    X2 
          RJ     PUTWORD
          ZR     B4,C.BT2BT 
          SX7    B4 
          SA7    MOVECNT
          SX6    B3 
          SA6    DSTADDR
          EQ     BT2BT6 
          SPACE  3
 DSTADDR  BSS    1
 DSTOFFS  BSS    1
 MOVECNT  BSS    1
 SRCADDR  BSS    1
 SRCOFFS  BSS    1
 ZEROCNT  BSS    1
*CALL CBMOD60 
*CALL CBPUTWRD
*CALL CBGETWRD
          END 
