mul.s



;
; Ullrich von Bassewitz, 07.08.1998
;
; CC65 runtime: multiplication for ints
;

       	.export		tosumula0, tosumulax, tosmula0, tosmulax
	.import		popsreg
	.importzp	sreg, tmp1, ptr4

tosmula0:
tosumula0:
	ldx	#0
tosmulax:
tosumulax:
mul16:	sta	ptr4
      	stx	ptr4+1 	       	; Save right operand
      	jsr	popsreg	       	; Get left operand

; Do ptr4*sreg --> AX (see mult-div.s from "The Fridge").

	lda	#0
   	sta	tmp1
	ldx	sreg+1	       	; Get into register for speed
   	ldy    	#16 	       	; Number of bits
L0:	lsr	tmp1
   	ror	a
   	ror	ptr4+1
   	ror	ptr4
   	bcc	L1
   	clc
   	adc	sreg
   	pha
       	txa	    	       	; hi byte of left op
   	adc	tmp1
   	sta	tmp1
   	pla
L1:	dey
       	bpl    	L0
	lda	ptr4	       	; Load the result
	ldx	ptr4+1
	rts			; Done



Valid HTML 4.0! mul.s.html; generated on Sat Oct 13 22:41:32 2001 by ca65html
uz@cc65.org