*COMDECK /MOVELCM/
  
 #MD      IFNE      #BETA#,0
LCM       SET    0
BETA      BSS    0
          BX7    X.LCM
          SA7    TEMP1
          LX.TMP    59-21 
          MX.DST    1 
          PL        X.TMP,MVLS.RM  LCM NOT DESTINATION
  
*     MOVE FROM SCM TO LCM
MVSL.RM   BSS       0 
          BX.LCM    -X.DST*X.TMP   REMOVE LCM BIT 
          LX.LCM    21+1
          SA.SRC    X.SRC          SOURCE IS SCM
          RX.TMP    X.LCM 
          NE        B.SRC,B.TMP,CHRMOVL 
*     START WORD MOVE 
          ZR        B.SRC,WRDBNL   IF ON WORD BOUNDARY
          SA.MSK    MSKTBL+B.SRC
          BX.TMP    X.MSK*X.TMP 
          SB.CCT    B.CCT+B.TMP 
          BX.SRC    -X.MSK*X.SRC
          SB.CCT    B.CCT-10
          BX.DST    X.TMP+X.SRC 
          WX.DST    X.LCM 
          EQ        FIREUPL 
  
WRDBNL    BSS       0 
          BX.DST    X.SRC 
          SB.CCT    B.CCT-10
          WX.DST    X.LCM 
  
FIREUPL   BSS       0 
          SB.TMP    10
          SX.SBP    B1
          LE        B.CCT,B.TMP,TOOSHORL
          SA.TMP    A.SRC+B1
          BX.ANO    X.STO 
          SA.SRC    A.TMP+B1
          SB.XTR    B1+B1 
          SB.CCT    B.CCT-20
          LE        B.CCT,B.TMP,JUSTWOL 
  
TWOLOPL   BSS       0 
          BX.STO    X.TMP 
          LX.DST    X.SRC 
          SA.TMP    A.TMP+B.XTR    +2 
          SA.SRC    A.SRC+B.XTR    +2 
          IX.LCM    X.LCM+X.SBP    +1 
          WX.STO    X.LCM 
          SB.CCT    B.CCT-20
          IX.LCM    X.LCM+X.SBP 
          WX.DST    X.LCM 
          GT        B.CCT,B.TMP,TWOLOPL 
  
JUSTWOL   BSS       0 
          BX.STO    X.TMP 
          LX.DST    X.SRC 
          IX.LCM    X.LCM+X.SBP 
          WX.STO    X.LCM 
          IX.LCM    X.LCM+X.SBP 
          WX.DST    X.LCM 
          BX.STO    X.ANO          RESTORE XL 
  
TOOSHORL  LE        B.CCT,B0,NOMOL
          SA.SRC    A.SRC+B1       ONE MORE WORD
          BX.DST    X.SRC 
          SB.CCT    B.CCT-10
          IX.LCM    X.LCM+X.SBP 
          WX.DST    X.LCM 
  
NOMOL     ZR        B.CCT,STOPWBL      IF ON WORD BOUNDARY
          SB.CCT    B.CCT+10
          SX.SBP    B.CCT 
  
STOPL     BX.TMP    X.LCM 
          BX.DST    X.LCM 
          SX.SRC    A.SRC 
RESET     SA.MSK    TEMP1 
          BX.LCM    X.MSK 
          JP        B6
  
STOPWBL   IX.TMP    X.LCM+X.SBP 
          SX.SRC    A.SRC+B1
          BX.DST    X.LCM 
          BX.SBP    X.SBP-X.SBP 
          SB.CCT    B0
          EQ        RESET 
  
CHRMOVL   BSS       0 
          SA.MSK    MSKTBL+B.TMP
          SB.XTR    B.TMP-B.SRC 
          SB.CCT    B.TMP+B.CCT 
          SB.SHF    -B.XTR
          BX.DST    X.MSK*X.TMP    LOW ORDER PART 
          SX.TMP    B.SHF+B.SHF 
          SB.SHF    X.TMP+B.SHF 
          SB.SHF    B.SHF+B.SHF 
          PL        B.XTR,CATPLL
          LX.SRC    X.SRC,B.SHF 
          BX.TMP    -X.MSK*X.SRC
          SA.SRC    A.SRC+B1
          SA.MSK    MSKTBL+10+B.XTR 
          BX.TMP    X.DST+X.TMP 
          SX.SBP    B.XTR 
          LX.SRC    X.SRC,B.SHF 
          BX.DST    X.MSK*X.TMP 
          BX.TMP    -X.MSK*X.SRC
          EQ        REJOINL 
  
CATPLL    BSS       0 
          SB.SHF    B.SHF+60
          LX.SRC    X.SRC,B.SHF 
          BX.TMP    -X.MSK*X.SRC
          SA.MSK    MSKTBL+00+B.XTR 
          SX.SBP    B.XTR+0 
  
REJOINL   BSS       0 
          BX.DST    X.DST+X.TMP 
          SB.XTR    10
          WX.DST    X.LCM 
          LE        B.CCT,B.XTR,QUITL 
          BX.ANO    X.MSK*X.SRC 
          SA.SRC    A.SRC+B1
          SB.CCT    B.CCT-B.XTR 
          LX.TMP    X.SRC,B.SHF 
          LE        B.CCT,B.XTR,QUIT1L
  
LOOPL     BSS       0 
          BX.DST    -X.MSK*X.TMP
          IX.TMP    X.TMP-X.DST 
          SX.SRC    B1
          IX.LCM    X.LCM+X.SRC 
          SA.SRC    A.SRC+B1
          BX.DST    X.DST+X.ANO 
          LX.ANO    X.TMP 
          SB.CCT    B.CCT-B.XTR 
          WX.DST    X.LCM 
          LX.TMP    X.SRC,B.SHF 
          GT        B.CCT,B.XTR,LOOPL 
  
QUIT1L    BSS       0 
          BX.SRC    -X.MSK*X.TMP
          SX.DST    B1
          IX.LCM    X.LCM+X.DST 
          BX.DST    X.ANO+X.SRC 
          WX.DST    X.LCM 
  
QUITL     BSS       0 
          BX.TMP    X.LCM 
          BX.DST    X.LCM 
          PL        X.SBP,QQ22L 
          SX.SBP    X.SBP+10
  
QQ22L     BX.ANO    -X.SBP
          SX.SBP    X.ANO+B.CCT 
          PL        X.SBP,MJPB6L
          SA.SRC    A.SRC-1 
          SX.SBP    X.SBP+10
  
MJPB6L    NE        B.CCT,B.XTR,QQ11L 
          SX.LCM    B1
          IX.TMP    X.TMP+X.LCM 
          SB.CCT    B0
QQ11L     SX.ANO    X.SBP-10
          NZ        X.ANO,WW33L 
          SX.SRC    A.SRC+B1
          SX.SBP    B0
WW33L     EQ        RESET 
  
*     MOVE FROM LCM TO SCM
  
MVLS.RM   BSS       0 
          LX.SRC    59-21 
          BX.LCM    -X.DST*X.SRC
          LX.TMP    21+1
          LX.LCM    21+1
          SA.TMP    X.TMP 
          RX.SRC    X.LCM 
          NE        B.SRC,B.TMP,CHRMOVS 
  
*     START WORD MOVE 
          ZR        B.SRC,WRDBNS
          SA.MSK    MSKTBL+B.SRC
          BX.TMP    X.MSK*X.TMP 
          SB.CCT    B.CCT+B.TMP 
          BX.SRC    -X.MSK*X.SRC
          SB.CCT    B.CCT-10
          BX.DST    X.TMP+X.SRC 
          SA.DST    A.TMP 
          EQ        FIREUPS 
  
WRDBNS    BSS       0 
          BX.DST    X.SRC 
          SB.CCT    B.CCT-10
          SA.DST    A.TMP 
  
FIREUPS   BSS       0 
          SB.TMP    10
          SX.SBP    B1
          LE        B.CCT,B.TMP,TOOSHORS
          IX.LCM    X.LCM+X.SBP 
          RX.TMP    X.LCM 
          BX.ANO    X.STO 
          IX.LCM    X.LCM+X.SBP 
          RX.SRC    X.LCM 
          SB.XTR    B1+B1 
          SB.CCT    B.CCT-20
          LE        B.CCT,B.TMP,JUSTWOS 
  
*     MAIN LOOP   MOVE TWO WORDS AT A TIME
TWOLOPS   BSS       0 
          BX.STO    X.TMP 
          LX.DST    X.SRC 
          IX.LCM    X.LCM+X.SBP 
          RX.TMP    X.LCM 
          IX.LCM    X.LCM+X.SBP 
          RX.SRC    X.LCM 
          SA.STO    A.DST+B1
          SB.CCT    B.CCT-20
          SA.DST    A.DST+B.XTR 
          GT        B.CCT,B.TMP,TWOLOPS 
  
*    END MAIN LOOP
JUSTWOS   BSS       0 
          BX.STO    X.TMP 
          LX.DST    X.SRC 
          SA.STO    A.DST+1 
          SA.DST    A.DST+2 
          BX.STO    X.ANO 
  
TOOSHORS  LE        B.CCT,B0,NOMOS
          IX.LCM    X.LCM+X.SBP 
          RX.SRC    X.LCM 
          BX.DST    X.SRC 
          SB.CCT    B.CCT-10
          SA.DST    A.DST+1 
  
NOMOS     ZR        B.CCT,STOPWBS 
          SB.CCT    B.CCT+10
          SX.SBP    B.CCT 
  
STOPS     SX.TMP    A.DST 
          SX.DST    A.DST 
          BX.SRC    X.LCM 
          EQ        RESET 
  
STOPWBS   SX.TMP    A.DST+B1
          IX.SRC    X.LCM+X.SBP 
          SX.DST    A.DST 
          BX.SBP    X.SBP-X.SBP 
          SB.CCT    B0
          EQ        RESET 
  
CHRMOVS   SA.MSK    MSKTBL+B.TMP
          SB.XTR    B.TMP-B.SRC 
          SB.CCT    B.TMP+B.CCT 
          SB.SHF    -B.XTR
          BX.DST    X.MSK*X.TMP 
          SX.TMP    B.SHF+B.SHF 
          SB.SHF    X.TMP+B.SHF 
          SB.SHF    B.SHF+B.SHF 
          PL        B.XTR,CATPLS
          LX.SRC    X.SRC,B.SHF 
          BX.TMP    -X.MSK*X.SRC
          SX.SBP    B1
          IX.LCM    X.LCM+X.SBP 
          RX.SRC    X.LCM 
          SA.MSK    MSKTBL+10+B.XTR 
          BX.TMP    X.DST+X.TMP 
          SX.SBP    B.XTR 
          LX.SRC    X.SRC,B.SHF 
          BX.DST    X.MSK*X.TMP 
          BX.TMP    -X.MSK*X.SRC
          EQ        REJOINS 
  
CATPLS    BSS       0 
          SB.SHF    B.SHF+60
          LX.SRC    X.SRC,B.SHF 
          BX.TMP    -X.MSK*X.SRC
          SA.MSK    MSKTBL+00+B.XTR 
          SX.SBP    B.XTR+10
  
REJOINS   BSS       0 
          BX.DST    X.DST+X.TMP 
          SB.XTR    10
          SA.DST    A.TMP 
          LE        B.CCT,B.XTR,QUITS 
          BX.ANO    X.MSK*X.SRC 
          SX.SRC    B1
          IX.LCM    X.LCM+X.SRC 
          RX.SRC    X.LCM 
          SB.CCT    B.CCT-B.XTR 
          LX.TMP    X.SRC,B.SHF 
          LE        B.CCT,B.XTR,QUIT1S
  
LOOPS     BSS       0 
          BX.DST    -X.MSK*X.TMP
          IX.TMP    X.TMP-X.DST 
          SX.SRC    B1
          IX.LCM    X.LCM+X.SRC 
          RX.SRC    X.LCM 
          BX.DST    X.DST+X.ANO 
          LX.ANO    X.TMP 
          SB.CCT    B.CCT-B.XTR 
          SA.DST    A.DST+B1
          LX.TMP    X.SRC,B.SHF 
          GT        B.CCT,B.XTR,LOOPS 
  
QUIT1S    BSS       0 
          BX.SRC    -X.MSK*X.TMP
          BX.DST    X.ANO+X.SRC 
          SA.DST    A.DST+B1
          SA.TMP    A.DST 
  
QUITS     BSS       0 
          PL        X.SBP,QQ22S 
          SX.SBP    X.SBP+10
QQ22S     BSS       0 
          BX.ANO    -X.SBP
          SX.SBP    X.ANO+B.CCT 
          PL        X.SBP,MJPB6S
          SX.SRC    B1
          IX.LCM    X.LCM-X.SRC 
          RX.SRC    X.LCM 
          SX.SBP    X.SBP-10
  
MJPB6S    BSS       0 
          NE        B.CCT,B.XTR,QQ11S 
          SX.TMP    A.TMP+B1
          SB.CCT    B0
QQ11S     BSS       0 
          SX.ANO    X.SBP-10
          NZ        X.ANO,WW33S 
          SX.SRC    B1
          IX.SRC    X.LCM+X.SRC 
          SX.SBP    B0
WW33S     BSS       0 
          EQ        RESET 
  
TEMP1     BSS       1 
 #MD      ENDIF 
