.PSECT ALWAYS 02SEP0 COPY .MCALL DIR$ ;************************************************************************ ;* * ;* MODULE: COPY - COPY A SPECIFIED RANGE OF VIRTUAL MEMORY * ;* * ;* AUTHOR: KEVIN ANGLEY * ;* * ;* DATE: 02-SEP-80 * ;* * ;* INPUT PARAMETERS: * ;* * ;* R0 POINTS TO THE COMMAND LINE IN PROCESS * ;* * ;* OUTPUT PARAMETERS: * ;* * ;* R0 POINTS JUST BEYOND THE LAST CHARACTER OF THE COPY * ;* * ;* DESTROYS: R1,R2,R3 * ;* * ;************************************************************************ COPY:: CALL FROMTH ; COLLECT FROM/THRU ARGUMENTS BCS 250$ ; CS: FAILED MOV R1,R2 ; SAVE FROM IN R2 GETKEY TO ; GET KEYWORD TO BCC 10$ ; CC: GOT IT OUTPUT MSK ; MISSING KEYWORD BR 250$ ; TAKE ERROR EXIT 10$: CALL GETHX4 ; GET TO ADDRESS BCS 250$ ; CS: FAILURE - TAKE ERROR EXIT ADD #MEMORY,R2 ; MAKE R2 POINT TO THE ACTUAL LOCATION 20$: CALL VALID ; VALIDATE TARGET ADDRESS BCS 250$ ; CS: INVALID - TAKE ERROR EXIT MOVB (R2),MEMORY(R1) ; COPY IT INC R2 ; INCREMENT FROM LOCATION ADD OFFST,R1 ; UN-OFFSET AND INCREMENT TO POINTER INC R1 SOB R3,20$ ; LET'S DO IT AGAIN 250$: ; ERROR EXIT 255$: ; SUCCESS EXIT CALL$R EXTRA ; PURGE EXTRA & RETURN .END