.segment "LIBCODE"
;
; Piotr Fusik, 15.04.2002
; originally by Ullrich von Bassewitz
;
; Long int compare function - used by the compare operators
;

	.export		toslcmp
	.import		incsp4
	.importzp	sp, sreg, ptr1


toslcmp:
	sta	ptr1
	stx	ptr1+1		; EAX now in sreg:ptr1

	ldy	#$03
	lda	(sp),y
	sec
	sbc	sreg+1
	bne	L4

	dey
	lda	(sp),y
	cmp	sreg
	bne	L1

	dey
	lda	(sp),y
	cmp	ptr1+1
	bne	L1

	dey
	lda	(sp),y
	cmp	ptr1

L1:	php			; Save flags
	jsr	incsp4		; Drop TOS
	plp			; Restore the flags
	beq	L2
	bcs	L3
	lda	#$FF		; Set the N flag
L2:	rts

L3:	lda	#$01		; Clear the N flag
	rts

L4:	bvc	L5
	eor	#$FF		; Fix the N flag if overflow
	ora	#$01		; Clear the Z flag
L5:	php			; Save flags
	jsr	incsp4		; Drop TOS
	plp			; Restore flags
	rts


