; SUBROUTINE TO COMPARE TWO 8-BIT SIGNED OPERANDS. ; ENTRY: (A) = OPERAND 1. ; (B) = OPERAND 2. ; CALL CMPARE. ; CALL SUBROUTINE. ; (RETURN FOR A < B) ; PUT JP < HERE. ; (RETURN FOR A = B) ; PUT JP = HERE. ; (RETURN FOR A > B) ; PUT JP > HERE. ; EXIT: (A) = UNCHANGED. ; (B) = DESTROYED. ; (HL) = DESTROYED. ; .org 0000h CMPARE: POP HL ; GET RETURN ADDRESS. PUSH DE ; SAVE DE. LD DE, 3 ; ADDRESS INCREMENT. CP B ; COMPARE A:B. JR Z, EQUAL ; GO IF EQUAL. PUSH AF ; SAVE FLAGS. XOR B ; TEST SIGN BITS. RLA ; XOR TO C. JP C, DIFFER ; GO IF DIFFERENT SIGNS. POP AF ; RESTORE FLAGS. JR C, LESST ; GO IF A < B. GREATR: ADD HL, DE ; BUMP RETURN BY 3. EQUAL: ADD HL, DE ; BUMP RETURN BY 3. LESST: POP DE ; RESTORE DE. JP (HL) ; RETURN TO 0, 3, 6. DIFFER: POP AF ; RESTORE FLAGS. JP C, GREATR ; GO IF A > B. JP LESST ; A < B. .END