; ; SYSLIB Module Name: SCOMP ; Author: Richard Conn ; SYSLIB Version Number: 2.0 ; Module Version Number: 1.0 ; Module Entry Points: ; COMPB COMPBC ; Module External References: ; None ; ; ; SCOMP -- ; Vector Compare Routine. Compare vector pointed to by HL with that ; pointed to by DE. Vector is B bytes long for COMPB and BC bytes long for ; COMPBC. On exit, Zero Flag Set indicates match, Carry Flag Set indicates ; that vector pointed to by HL is binarily less than vector pointed to by DE. ; PSW is affected. HL, DE, BC are not affected. ; COMPB:: PUSH B ; SAVE BC MOV C,B ; SET COUNT IN C MVI B,0 CALL COMPBC ; USE BC FOR COUNT POP B ; RESTORE BC RET COMPBC:: PUSH H ; SAVE REGISTERS PUSH D PUSH B ; COMPARE LOOP COMP: LDAX D ; GET BYTE PTED TO BY DE CMP M ; COMPARE TO BYTE PTED TO BY HL JNZ COMPDN ; DONE IF NO MATCH INX H ; PT TO NEXT INX D DCX B ; COUNT DOWN MOV A,B ; DONE? ORA C JNZ COMP ; DONE WITH COMPARE; Z=>MATCH, C=>(HL)>(DE) COMPDN: JZ CMPDN ; DON'T COMPLEMENT CARRY IF ZERO SET CMC ; C=>(HL)<(DE) CMPDN: POP B ; RESTORE REGISTERS POP D POP H RET END