view Examples/6502/multi.s65 @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
line wrap: on
line source

;;	16 bit multply

last	equ	$80
d1	equ	last
d2	equ	last+2
result	equ	last+4
count	equ	last+8
work	equ	last+9

	org	$0

start	cld
	lda	#$92
	sta	d1
	lda	#$34
	sta	d1+1
	lda	#$83
	sta	d2
	lda	#$21
	sta	d2+1
	jsr	multi16
	brk

multi16	lda	#0
	sta	result
	sta	result+1
	sta	result+2
	sta	result+3
	ldx	#d1
	jsr	multil
	inx
;;			fall into multi8

multi8	lda	#0
multil	sta	work
	lda	d2
	sta	work+1
	lda	d2+1
	sta	work+2
	jmp	entry

adding	clc
	lda	work+2
	adc	6,x
	sta	6,x
	lda	work+1
	adc	5,x
	sta	5,x
	lda	work
	adc	4,x
	sta	4,x
loop	asl	work+2
	rol	work+1
	rol	work
entry	lsr	0,x
	bcs	adding
	bne	loop
	rts

	end