.TITLE MOVEB .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: MOVEB ; ; DATE: 30-AUG-79 ; ; AUTHOR: GR JOHNSON ; BATTELLE NORTHWEST ; P O BOX 999 ; RICHLAND WA 99352 ; ; SOURCE: MACRO-11 ; ; CALLER: FORTRAN IV-PLUS ; ; CALLING SEQUENCE: ; ; CALL MOVEB(FROM,TO,[NBYTE]) ; ; FROM = VARIABLE OR ARRAY TO BE COPIED. ; ; TO = VARIABLE OR ARRAY TO RECEIVE "FROM". ; ; NBYTE = NUMBER OF BYTES TO BE COPIED (DEFAULT=1). ; ; = 1 BYTE LOGICAL*1 ; = 2 LOGICAL INTEGER ; = 4 INTEGER*4 REAL ; = 8 REAL*8 COMPLEX DOUBLE PRECISION ; ; ; DESCRIPTION: ; ; "MOVEB" MOVES A VARIABLE OR ARRAY, BYTE-BY-BYTE, INTO ANOTHER ; LOCATION. THE NUMBER OF BYTES TO MOVE IS OPTIONALLY SET THROUGH THE ; "NBYTE" PARAMETER (DEFAULT=1). THE NUMBER OF BYTES TO BE MOVED IS ; NORMALLY DEPENDENT UPON THE INPUT VARIABLE TYPES (SEE TABLE ABOVE). ; ; EXAMPLES: ; ; CALL MOVEB(INT1, INT2, 2) MOVE INTEGER VARIABLE ; CALL MOVEB(REAL1, REAL2, 4) MOVE REAL VARIABLE ; CALL MOVEB(ARRAY1,ARRAY2,80) MOVE 80-BYTE ARRAY ; ; .SBTTL ENTRY POINT -- BYTE-BY-BYTE MOVE ; ; ; .PSECT ; ; MOVEB:: ; ; MOV 2(R5),R1 ; ADDRESS OF "FROM" TO R1 MOV 4(R5),R2 ; ADDRESS OF "TO" TO R2 MOV #1,R0 ; DEFAULT BYTE COUNT TO R0 CMPB #3,(R5) ; THREE ARGUMENTS? BGT 2$ ; NO, USE DEFAULT BYTE COUNT TST 6(R5) ; NULL ARGUMENT? BEQ 2$ ; YES, USE DEFAULT BYTE COUNT MOV @6(R5),R0 ; BYTE COUNT TO R0 ; 2$: MOVB (R1)+,(R2)+ ; MOVE "FROM" BYTE TO "TO" SOB R0,2$ ; DECREMENT BYTE COUNT AND BRANCH RTS PC ; RETURN TO CALLER .END ;