CSCALL TITLE ' CSCALL PROC CONTR#00000010 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** OL CALL PROCESS WITH STANDARD PARAMETER LIST.' 00000020 *TITLECSCALL -- CALL A PROCESS DRIVER WITH STANDARD PARAMETER LIST 00000030 *A AUTHOR FRANCIS COLLINS 00000040 *A DESIGNER SAME 00000050 *A LANGUAGE S/370 ASSEMBLER F 00000060 *A SYSTEM IBM (SEE CRAY) 00000060 *A WRITTEN 2-21-75 00000070 * REVISED MO-DA-YR BY PROGRAMMER FOR REASON. 00000080 * REVISED 00000090 *A 00000100 *A 00000110 *A CALL CSCALL (MCINH, KPA) 00000120 *A INPUT MCINH = ADDRESS OF INPUT TRACE HEADER. A4 00000130 *A INPUT KPA = ADDRESS OF PROCESS PROGRAM ENTRY POINT. A4 00000140 *A 00000150 *A IN THE CALLING PROGRAM, MCINH IS FOLLOWED BY THREE OTHER 00000160 *A VARIABLES, AND THIS GROUP OF FOUR VARIABLES COMPRISES THE 00000170 *A PARAMETER LIST TO BE PASSED TO THE PROCESSING PROGRAM. 00000180 *A MCINH = ADDRESS OF INPUT TRACE HEADER. A4 00000190 *A MCINTR = ADDRESS OF INPUT TRACE. A4 00000200 *A MCOH = ADDRESS OF OUTPUT TRACE HEADER. A4 00000210 *A MCOTR = ADDRESS OF OUTPUT TRACE. A4 00000220 *A 00000230 *A THE FUNCTION OF THIS PROGRAM IS TO TRANSFER CONTROL TO THE 00000240 *A SPECIFIED PROCESS, PASSING THE PARAMETER LIST. 00000250 *A THREE OPERATIONS ARE PERFORMED. 00000260 *A 00000265 *A 1. PLACE THE ADDRESS OF MCINH IN REGISTER 1. THIS SUPPLIES THE 00000270 *A PARAMETER LIST. 00000280 *A 2. PLACE THE CONTENTS OF KPA IN REGISTER 15. 00000290 *A 3. BRANCH TO THE ADDRESS IN REGISTER 15. 00000300 *A 00000310 *A OTHER REGISTERS ARE UNCHANGED. TO THE CALLED PROGRAM (THE 00000320 *A PROCESSING PROGRAM), THE EFFECT WILL THE THE SAME AS IF THE 00000330 *A PROGRAM HAD BEEN CALLED BY THE MAIN CONTROL PROGRAM. THIS 00000340 *A INTERVENING ASSEMBLER PROGRAM IS REQUIRED BECAUSE THE MAIN 00000350 *A CONTROL PROGRAM (CSEXEC), IN FORTRAN, CANNOT CONSTRUCT THE 00000360 *A PARAMETER LIST AND CANNOT BRANCH TO A SPECIFIED ADDRESS. 00000370 EJECT 00000380 * THE FOLLOWING NUMERICAL EXAMPLE SHOWS HOW THE ADDRESSES ARE 00000390 * MANIPULATED BOTH IN CSEXEC AND IN THIS PROGRAM. 00000400 * 00000410 * OPERATION VARIABLE ADDRESS CONTENTS 00000420 * 00000430 * GIVEN MCI1 10216 3 00000440 * MCI2 10220 5 00000450 * MCTADD(3) 10428 30000 00000460 * MCTADD(5) 10436 50000 00000470 * KPA 10008 20000 00000480 * PTTHLB 384 00000490 * IN CSEXEC 00000500 * MCIHN = MCTADD(MCI1) MCINH 10224 30000 00000510 * MCINTR = MCINH + PTTHLB MCINTR 10228 30384 00000520 * MCOH = MCTADD(MCI2) MCOH 10232 50000 00000530 * MCOTR = MCOH + PTTHLB MCOTR 10236 50384 00000540 * CALL CSCALL (MCINH, KPA) PARM1 15000 10224 00000550 * PARM2 15004 10008 00000560 * REG 1 15000 00000570 * PARM1 AND PARM2 ARE CONSECUTIVE 00000580 * LOCATIONS ASSIGNED IN CSEXEC BY 00000590 * THE FORTRAN COMPILER. 00000600 * IN CSCALL 00000610 * L R15,4(,R1) 4(,R1) 15004 10008 00000620 * REG 15 10008 00000630 * 00000640 * L R15,0(,R15) 0(,R15) 10008 20000 00000650 * REG 15 20000 00000660 * 00000670 * L R1,0(,R1) 0(,R1) 15000 10224 00000680 * REG 1 10224 00000690 * 00000700 * OI 12(R1),X'80' 12(R1) 10236 1...50384 00000710 * MARK END OF PARAMETER LIST. 00000720 * 00000730 * BR R15 REG 15 20000 00000740 * 00000750 * 00000760 CSCALL CSECT 00000770 R1 EQU 1 00000780 R15 EQU 15 00000790 L R15,4(,R1) 00000800 L R15,0(,R15) 00000810 L R1,0(,R1) 00000820 OI 12(R1),X'80' 00000830 BR R15 00000840 END 00000850