# Positive numbers only (31 shifts max since operands are twos-complement)
WORD_2147483648 # For use in setting sign for left shifts.
IM_0 # For magnitude of left/right shifts.
LDSP+0 # Sets up stack location to build/store result.
SHIFT # Check Nth bit of second operand.
OR # Shift and add first operand to result if indicated.
IM_1 # Increment counter for shift magnitude
ADD # Test for completion of multiplication subroutine (31 shifts).
BRZ>cleanup # If finished, cleanup and return from subroutine with result on TOS.
TEST # If not finished, repeat this process on the next bit.
STSP+0 # Remove all subroutine temporaries from stack and return result on TOS.