*TITLEARMOVE -- MOVE AN INPUT ARRAY TO AN OUTPUT ARRAY 00010000 ************************************************************************ * COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * ************************************************************************ *A AUTHOR H. LAVALLET 00020000 *A DESIGNER H. LAVALLET 00030000 *A LANGUAGE ASSEMBLER 00040000 *A SYSTEM S/370 00040100 *A WRITTEN 08-13-81 00050000 * REVISED 00060000 *A 00070000 *A 00080000 *A CALL ARMOVE (II, IO, KNT) 00090000 *A 00090100 *A IN/OUT AGRUMENT TYPE DESCRIPTION 00090200 *A 00090300 *A IN II I2 INPUT ARRAY OF HALF WORD VALUES 00100000 *A OUT IO I2 OUTPUT ARRAY 00110000 *A IN KNT I2 NUMBER OF HALF WORD ELEMENTS TO BE MOVED 00120000 *A 00130000 *A 00140000 *A THIS ROUTINE MOVES "KNT" VALUES FROM ARRAY II TO THE OUTPUT 00150000 *A ARRAY IO. 00160000 *A 00170000 *AEND 00180001 * 00190000 ARMOVE CSECT 00200000 * 00210000 R0 EQU 0 00220000 R1 EQU 1 00230000 R4 EQU 4 00240000 R5 EQU 5 00250000 R6 EQU 6 00260000 R8 EQU 8 00270000 R10 EQU 10 00280000 R12 EQU 12 00290000 R13 EQU 13 00300000 R14 EQU 14 00310000 R15 EQU 15 00320000 * 00330000 BASE EQU R10 00340000 * 00350000 STM R14,R12,12(R13) 00360000 BALR BASE,0 00370000 USING *,BASE 00380000 * 00390000 SR R15,R15 00400000 LM R4,R6,0(R1) GET ADDRESS OF PARMS 00410000 L R15,0(R6) TEST FOR NEGATIVE # ELEMENTS 00420000 LTR R15,R15 00430000 BNP ARMVEXX # ELEMENTS NEGATIVE, RETURN 00440000 ARMOVZ SLA R15,1 GET # BYTES 00450000 ST R15,ARMVENN 00460000 S R15,=F'1' SET LOOP COUNTER 00470000 * 00480000 LA R8,0 INITIALIZE ADDRESS INCREMENT 00490000 LA R14,2 00500000 CR R4,R5 TEST FOR WRAP AROUND 00510000 BE ARMVEXX 00520000 BL ARMVE20 00530000 * 00540000 ARMVE10 LH R0,0(R4,R8) LOAD ARRAY ELEMENT 00550000 STH R0,0(R5,R8) SAVE IN OUTPUT ARRAY 00560000 BXLE R8,R14,ARMVE10 AND KEEP LOOPING TILL DONE 00570000 B ARMVEXX ALL DONE 00580000 * 00590000 ARMVE20 EQU * ARRAYS MAY OVERLAP 00600000 LCR R14,R14 00610000 L R8,ARMVENN GET EXACT # BYTES 00620000 AR R8,R14 00630000 L R15,=F'-1' 00640000 * 00650000 ARMVE30 EQU * 00660000 LH R0,0(R4,R8) 00670000 STH R0,0(R5,R8) 00680000 BXH R8,R14,ARMVE30 00690000 * 00700000 ARMVEXX EQU * 00710000 LM R14,R12,12(R13) RESTORE REGISTERS 00720000 BR R14 RETURN 00730000 ARMVENN DC F'0' 00740000 LTORG 00750000 END 00760000