PPMCAL 39 - call a system module (.CALLP).
Usage:
pmme PPMCAL,0
.data 12:module,6:entry,1:callx,1:calla,9:mode,7:0
Where:
- module 0:11
- number of GCOS module to call.
- entry 12:17
- entry number to call.
- callx 18
- Pass pointers flag.
- 1 CALLX style
- No caller pointer registers are passed.
- 0 CALLY style
- Pass P1, P2 and P4.
Note that unlike a true CALLY macro, P3 (P.EXT) is not passed.
- calla 19
- If set the module and entry to call are passed dynamically in the
A register.
- bits 12:17
- module
- bits 30:35
- entry
- mode 20-28
- If bit 28 is one, master mode will be set on return.
It bit 28 is zero, the master mode indicator will be unchanged.
Bits 20-27 are ignored, but should be set to zero.
On entry
The A, Q and X0 registers should be set as needed by the called module.
If the 'callx' bit is not set, pointer registers P1, P2 and P4 should
also be set.
On return
PPMCAL sets things up so that the following values will be returned
to the caller.
The called module may subsequently change these.
In particular, P3 (P.EXT) is often used to return data from modules
such as .MMISC, and many modules return data in the A and Q registers.
- X7
- processor number.
This may not be accurate unless the return is in master mode.
- X6
- Known Process indeX, (KPX).
- P3 P.PSH
- The PUSH segment for the process.
- P5 P.SSL
- The subsystem linkage segment.
- P6 P.SSA
- the Slave Service Area segment (PH.SSA).
- P7 P.CR
- the communication region (SD.CR).
Required privilege
Entry key PK.EMS, "Enter_Master_Mode".
Description:
PMME PPMCAL is used to directly call a GCOS module from a privileged
slave program.
This is the mechanism used to implement the GMAP .CALLP macro.
Not all modules can be called in this way,
but for those than can it is easier than doing MME .EMMS
followed by a .CALL type macro.
Copyright © 2000, Thinkage Ltd.