36 lines
531 B
ArmAsm
36 lines
531 B
ArmAsm
.define Cmu2
|
|
.sect .text
|
|
.sect .rom
|
|
.sect .data
|
|
.sect .bss
|
|
.sect .text
|
|
|
|
! This subroutine compares two unsigned twobyte integers.
|
|
! If T is the first pushed and than S, the routine will return:
|
|
! -1 if S < T,
|
|
! 0 if S = T,
|
|
! 1 if S > T.
|
|
|
|
Cmu2:
|
|
stx EXG ! S (lowbyte)
|
|
sta EXG+1 ! S (highbyte)
|
|
jsr Pop ! get T
|
|
cmp EXG+1
|
|
beq 2f ! S (highbyte) = T (highbyte)
|
|
bcc 1f
|
|
4: lda #0 ! S > T
|
|
ldx #1
|
|
rts
|
|
1: lda #0xFF ! S < T
|
|
tax
|
|
rts
|
|
2: cpx EXG
|
|
bne 3f
|
|
lda #0 ! S = T
|
|
tax
|
|
rts
|
|
3: bcc 1b
|
|
bcs 4b
|
|
|
|
|