;
; Ullrich von Bassewitz, 06.06.1998
;
; int setjmp (jmp_buf buf);
;

	.export		__setjmp
	.importzp	sp, ptr1

.segment "LIBCODE"
__setjmp:
	sta	ptr1		; Save buf
	stx	ptr1+1
	ldy	#0

; The parameter stack is now empty, put it into buf

	lda	sp
	sta	(ptr1),y
	iny
	lda	sp+1
	sta    	(ptr1),y
	iny

; Put the return stack pointer next

	tsx
	inx
	inx			; drop return address
	txa
	sta	(ptr1),y
	iny

; Last thing is the return address.

	pla
	tax
	pla
	sta	(ptr1),y	; high byte first
	iny
	pha
	txa
	sta	(ptr1),y
	pha

; Return zero

	lda	#0
	tax
	rts


  
