*TITLEGTBYTE -- GET A BYTE 00010000 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** *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 MM/DD/YY 00060000 *A 00070000 *A 00080000 *A CALL GTBYTE (IBYTE, IBUF, IBX) 00090000 *A 00090100 *A IN/OUT ARGUMENT TYPE DESCRIPTION 00090200 *A 00090300 *A OUT IBYTE I4 RETURNED INTEGER HALFWORD CONTAINING 00100000 *A SELECTED BYTE. 00110000 *A IN IBUF I4 INPUT BUFFER WHICH CONTAINS BYTE 00120000 *A IN IBX I4 INPUT BYTE INDEX WHICH POINTS TO THE 00130000 *A DESIRED BYTE POSITION IN IBUF. 1 IS 00140000 *A THE FIRST BYTE IN IBUF. 00150000 *A 00160000 *A 00170000 *A THIS ROUTINE GETS ANY SELECTED BYTE AND RETURNS IT IN THE LOW 00180000 *A ORDER 8 BITS OF AN INTEGER HALFWORD. THE HIGH ORDER BITS OF THE 00190000 *A RETURNED VALUE ARE SET TO ZERO. 00200000 *A 00210000 *A NOTE: ROUTINE IS DESIGNED TO GET INTO A HALFWORD ONLY.... 00220000 * 00230000 * 00240000 GTBYTE CSECT 00250000 * 00260000 R1 EQU 1 00270000 R2 EQU 2 00280000 R3 EQU 3 00290000 R4 EQU 4 00300000 R10 EQU 10 00310000 R12 EQU 12 00320000 R13 EQU 13 00330000 R14 EQU 14 00340000 R15 EQU 15 00350000 * 00360000 BASE EQU R10 00370000 * 00380000 STM R14,R12,12(R13) 00390000 BALR BASE,0 00400000 USING *,BASE 00410000 * 00420000 L R2,0(R1) GET ADDRESS OF IBYTE 00430000 * 00440000 L R3,8(R1) GET INDEX INTO IBUF 00450000 L R3,0(R3) 00460000 LA R4,1 00470000 SR R3,R4 DETERMINE ADDRESS OF WHERE TO 00480000 A R3,4(R1) GET BYTE FROM 00490000 * 00500000 MVC 3(1,R2),0(R3) NOW MOVE SELECTED BYTE 00510000 MVC 0(3,R2),=X'000000' FILL HIGH ORDER BITS WITH 0 00520000 * 00530000 LM R2,R12,28(R13) 00540000 BR R14 00550000 LTORG 00560000 END 00570000