.TITLE FFMOVE - MOVE CHARACTER STRING .IDENT /17MAY7/ ;09:15:00 LV ; .ENTRY FFMOVE - MOVE CHARACTER STRING ; ;+ ; F F M O V E ; ; PURPOSE: MOVE N CHARACTERS FROM THE INPUT BUFFER TO ARRAY ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL FFMOVE(PTRS,ARRAY,NCHAR) ; ; INPUT: PTRS = ADDRESS OF POINTER ARRAY FOR FFSCAN ; SEE FFSCAN FOR DESCRIPTION OF PTRS. ; ARRAY = ADDRESS OF ARRAY TO RECEIVE ; NCHAR(INTEGER) = # OF CHARACTERS TO BE MOVED ; ; METHOD: THIS ROUTINE IS AN EXTENSION OF THE FFSCAN PACKAGE. ; IT MOVES NCHAR CHARACTERS FROM THE INPUT BUFFER TO ; ARRAY INCLUDING DELIMITERS. IF FEWER THAN NCHAR ; CHARACTERS EXIST IN THE INPUT BUFFER, ARRAY ; IS PADDED WITH BLANKS. SEE FFSCAN FOR DESCRIPTION ; OF PTRS ARRAY. ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: FFINIT MUST BE CALLED BEFORE THIS ROUTINE. ; ;- ; REVISIONS: ; 17-MAY-77 LV UPDATED TO CONFORM TO STANDARDS ; .GLOBL FFMOVE .MCALL RETURN FFMOVE: MOV 2(R5),R0 ;GET PTRS ADDR MOV 4(R5),R1 ;GET ARRAY ADDR MOV @6(R5),R2 ;NUMBER OF CHARS TO MOVE BLE 30$ ;BRANCH IF 0 OR NEGATIVE CHAR COUNT TST (R0)+ ;SKIP IERR ADDR MOV (R0)+,R3 ;GET ADDR OF NEXT BYTE TO BE SCANNED ; 10$: CMP R3,(R0) ;AT END OF INPUT? BEQ 20$ ;BRANCH IF YES MOVB (R3)+,(R1)+ ;MOVE A BYTE OF DATA SOB R2,10$ ;LOOP FOR ALL CHARACTERS ;FINISHED BR 30$ ;HIT END OF INPUT BEFORE FILLING ARRAY - PAD WITH BLANKS ; 20$: MOVB #' ,(R1)+ ;PAD WITH BLANKS SOB R2,20$ ;UP TO NCHAR ; 30$: RETURN .END