.include "p24F04KL101.inc"

; 1. változó: a (w1:w11)
; 2. változó: b (w2:w12)
; 3. változó: c (w3:w13)
; összeg:     d (w4:w14)

	.text
	.global	__reset

__reset:
	mov	#__SP_init,w15		;veremmutató inicializálása
	mov	#__SPLIM_init,w0	;veremmutató felső határa
	mov	w0,SPLIM

;-------------------------- a bővítése
kezd:	asr	w1,#15,w11
;-------------------------- b bővítése
	asr	w2,#15,w12
;-------------------------- c bővítése
	asr	w3,#15,w13
;-------------------------- a+b->d
	add	w1,w2,w4
	addc	w11,w12,w14
;-------------------------- c+d->d
	add	w3,w4,w4
	addc	w13,w14,w14
;-------------------------- d >=0 ?
	bra	N,neg
;-------------------------- d>$007fff ?
poz:	btss	w14,#0
	btsc	w4,#15
;-------------------------- d=$7fff
pszat:	mov	#0x7fff,w4
	bra	vege
;-------------------------- d<$ff8000 ?
neg:	btsc	w14,#0
	btss	w4,#15
;-------------------------- d=$8000
nszat:	mov	#0x8000,w4
;--------------------------
vege:	goto	vege
;--------------------------

.end
