2 ; Ullrich von Bassewitz, 2009-08-17
4 ; CC65 runtime: multiplication for ints. Short versions.
7 .export tosumula0, tosmula0
8 .export mul8x16, mul8x16a
13 ;---------------------------------------------------------------------------
14 ; 8x16 routine with external entry points used by the 16x16 routine in mul.s
19 mul8x16:jsr popptr1 ; Get left operand (Y=0 by popptr1)
22 ldy #8 ; Number of bits
23 ldx ptr1+1 ; check if lhs is 8 bit only
24 beq mul8x8 ; Do 8x8 multiplication if high byte zero
26 sta ptr4+1 ; Clear byte 2
28 lsr ptr4 ; Get first bit into carry
34 lda ptr1+1 ; hi byte of left op
45 lda ptr4 ; Load the result
48 ;---------------------------------------------------------------------------
49 ; 8x8 multiplication routine
52 lsr ptr4 ; Get first bit into carry
61 lda ptr4 ; Load the result