2 ; Ullrich von Bassewitz, 2010-11-03
4 ; CC65 runtime: 16x16 => 32 unsigned multiplication
7 .export umul16x16r32, umul16x16r32m
9 .include "zeropage.inc"
12 ;---------------------------------------------------------------------------
13 ; 16x16 => 32 unsigned multiplication routine.
15 ; routine lhs rhs result result also in
16 ; -----------------------------------------------------------------------
17 ; umul16x16r32 ptr1 ax ax:sreg ptr1:sreg
18 ; umul16x16r32m ptr1 ptr3 ax:sreg ptr1:sreg
20 ; ptr3 is left intact by the routine.
30 ldy #16 ; Number of bits
33 ror ptr1 ; Get first bit into carry
51 sta sreg ; Save byte 3
52 lda ptr1 ; Load the result