;
; Piotr Fusik, 15.04.2002
; originally by Ullrich von Bassewitz
;
; Integer compare function - used by the compare operators
;

	.export		tosicmp
	.importzp	sp, sreg


tosicmp:
	sta	sreg
	stx	sreg+1		; Save ax

	ldy	#$00
	lda	(sp),y		; Get low byte
	tax
	inc	sp		; 5
	bne	@L1		; 3
	inc	sp+1		; (5)
@L1:
	lda	(sp),y		; Get high byte
	inc	sp		; 5
	bne	@L2		; 3
	inc	sp+1		; (5)

; Do the compare.

@L2:	sec
	sbc	sreg+1		; Compare high byte
	bne	@L4
	cpx	sreg		; Compare low byte
	beq	@L3
	adc	#$FF		; If the C flag is set then clear the N flag
	ora	#$01		; else set the N flag
@L3:	rts

@L4:	bvc	@L3
	eor	#$FF		; Fix the N flag if overflow
	ora	#$01		; Clear the Z flag
	rts


