Nope. SHIFTL?WCW is not right. SHIFTR?WCW is fine.

Make this change;
Code:
SHIFTL?WCW macro Win, Cin, Wout
    if (Cin == 1)
        bcf     STATUS, C
      if (Wout == Win)
        CHK?RP  Wout
        rlf     Wout, F
        rlf     Wout + 1, F
      else
        CHK?RP  Win
        rlf     Win, W
        MOVE?AB Wout
        CHK?RP  Wout     ' <- change this to CHK?RP Win and save it
        rlf     Win + 1, W
        MOVE?AB Wout + 1
      endif
    else
        MOVE?WW Win, R0
        MOVE?CA Cin
        L?CALL  SHIFTL
        MOVE?AWW R0, Wout
    endif
    endm