.define Cmi4
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text

! This subroutine compares on fourbyte integers.
! If T is pushed first and than S, the routine will return:
!    -1   if S < T,
!     0   if S = T,
!     1   if S > T.


Cmi4:
	jsr Sbi4	! subtract operands (T - S)
	jsr Pop		! get result (lowbyte, lowbyte+1)
	stx ARTH	! store lowbyte
	sta ARTH+1	! store lowbyte+1
	jsr Pop		! get result (lowbyte+2, lowbyte+3)
	tay		! test lowbyte+3
	bpl 1f		! S >= T
	lda #0x0FF	! S < T
	tax		! AX becomes -1
	rts
    1:	cmp #0		! test lowbyte+3 on zero
	bne 2f
	cpx #0		! test lowbyte+2 on zero
	bne 2f
	lda #0
	cmp ARTH+1	! test lowbyte+1 on zero
	bne 2f
	cmp ARTH	! test lowbyte on zero
	bne 2f
	lda #0		! S = T
	tax		! AX becomes 0
	rts
    2:	lda #0		! S > T
	ldx #1		! AX becomes 1
	rts