.TITLE BYTENE BYTE ARRAY EQ,NE COMPARE .SBTTL GENERAL INFORMATION .IDENT /01/ .LIST ME ;+ ; AUTHOR: KERRY WYCKOFF ;- ;+ ; CHANGES: NONE ;- ;+ ; MODULE FUNCTION: ; ; THIS ROUTINE HAS ENTRY POINTS FOR CHECKING ; EQUALITY OR INEQUALITY BETWEEN TWO ARRAYS. ; A LOGICAL*2 VALUE IS RETURNED INDICATING THE ; RESULTS OF THE COMPARISON REQUESTED. ; ;- ;+ ; ASSEMBLY INSTRUCTIONS: ; ; MAC BYTENE=BYTENE ; ;- ;+ ; CALL FORMAT: ; ; 1) IF(BYTXX(LENGTH,SOURCE,TARGET))----- ; 2) I=(BYTXX(LENGTH,SOURCE,TARGET)) ; WHERE XX=[EQ,NE] ; ;- .PAGE .SBTTL SYMBOL, MACRO, DATA DEFINITIONS ;+ ; LOCAL SYMBOL DEFINITIONS: NONE ;- ;+ ; LOCAL MACROS: NONE ;- ;+ ; LOCAL DATA BLOCKS: NONE ;- .PAGE .SBTTL FUNCTION DETAILS ;+ ; FUNCTION DETAILS: ; ; ; INPUTS: ; ; R5 CONTAINS THE ADDRESS OF THE PARAMETER LIST ; 1) NUMBER OF PARAMETERS ; 2) WORD: ADDRESS OF NUMBER OF BYTES TO BE COMPARED ; 3) BYTE: ADDRESS OF THE SOURCE ARRAY ; 4) BYTE: ADDRESS OF THE TARGET ARRAY ; ; OUTPUTS: ; ; R0 CONTAINS THE LOGICAL RESULT OF THE COMPARE ; ; SIDE EFFECTS: ; ; R5 HAS BEEN ALTERED TO INCREASE SPEED ; ;- .PAGE .SBTTL CODE SECTION .PSECT W02COD .ENABL LSB BYTEQ:: CLR R0 ; ASSUME ARRAYS ARE NOT EQUAL BR 1$ ; GO SHARE CODE BYTNE:: MOV #-1,R0 ; ASSUME ARRAYS ARE NOT EQUAL 1$: TST (R5)+ ; BUMP R5 MOV @(R5)+,R1 ; R1=#BYTES TO COMPARE BLE 98$ ; IF LE 0, COMPLEMENT RETURN MOV (R5)+,R2 ; R2=ADDRESS OF SOURCE MOV (R5),R3 ; R3=ADDRESS OF TARGET 2$: CMPB (R2)+,(R3)+ ; COMPARE BYTES BNE 99$ ; IF NE, RETURN SOB R1,2$ ; LOOP UNTIL DONE 98$: COM R0 ; COMPLEMENTED VALUE RETURNED 99$: RTS PC ; RETURN .END