;
; Ullrich von Bassewitz, 07.04.2000
;
; CC65 runtime: += operator
;
; On entry, the low byte of the address of the variable to increment is
; in ptr1, the high byte is in Y, and the increment is in eax.
;

       	.export	       	laddeq1, laddeqa, laddeq
       	.importzp   	sreg, ptr1, tmp1


laddeq1:
       	lda	#$01

laddeqa:
	ldx	#$00
	stx	sreg
	stx	sreg+1

laddeq:	sty 	ptr1+1	    	    	; Store high byte of address
	ldy 	#$00	    	    	; Address low byte
	clc

	adc	(ptr1),y
	sta	(ptr1),y
       	pha			       	; Save byte 0 of result for later

	iny			       	; Address byte 1
	txa
	adc	(ptr1),y	    	; Load byte 1
	sta	(ptr1),y
	tax

	iny			    	; Address byte 2
	lda	sreg
	adc	(ptr1),y
	sta	(ptr1),y
	sta	sreg

	iny			    	; Address byte 3
	lda	sreg+1
	adc	(ptr1),y
	sta	(ptr1),y
	sta	sreg+1

	pla				; Retrieve byte 0 of result

	rts				; Done



