.TITLE BYTREV REVERSE A BYTE ARRAY .SBTTL GENERAL INFORMATION .IDENT /01/ .LIST ME ;+ ; AUTHOR: KERRY WYCKOFF ;- ;+ ; CHANGES: NONE ;- ;+ ; MODULE FUNCTION: ; ; THIS ROUTINE REVERSES THE ORDER OF THE BYTES ; IN AN ARRAY OF SPECIFIED LENGTH ; ;- ;+ ; CALL FORMAT: ; ; CALL BYTREV(LENGTH,ARRAY) ; ;- .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) WORD: NUMBER OF PARAMETERS ; 2) WORD: ADDRESS OF NUMBER OF BYTES TO BE MOVED ; 3) WORD: ADDRESS OF ARRAY ; ; OUTPUTS: NONE ; ; SIDE EFFECTS: NONE ; ;- .PAGE .SBTTL CODE SECTION .PSECT W10COD .ENABL LSB BYTREV:: MOV @2(R5),R1 ; R1=#BYTES TO MOVE MOV R1,R2 ; R2=WORK COPY OF # OF BYTES ASR R1 ; NEED ONLY SWAP HALFWAY-RIGHT! BLE 99$ ; IF NOT POSITIVE, RETURN MOV 4(R5),R3 ; R3=ADDRESS OF ARRAY ADD R3,R2 ; POINT TO BYTE FOLLOWING ARRAY 1$: MOVB (R3),R4 ; R4=SAVE AREA MOVB -(R2),(R3)+ ; MOVE A BYTE MOVB R4,(R2) ; MOVE BYTE FROM SAVE AREA SOB R1,1$ ; LOOP UNTIL DONE 99$: RTS PC ; RETURN .END