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.