512B XMSGCallA¶
Not registered MON 512B (330 decimal) · Mnemonic A5XMSG · Group: Not grouped in manual
Available from: not known - no compatibility box captured from the manual
Emulation source: none - not registered in ndmonlib
Description¶
ND-500 XMSG gateway (non-buffer convention). Provides the ND-500 side of the XMSG inter-process message system: opens/closes ports, sends/receives messages, manages message buffers and privileges, then forwards to the ND-100 XMSG core via *MON 2XMSG. Shares one identical handler body with B5XMSG (MON 513); the A vs B difference is a caller-side buffer-passing convention. ND subsystems only.
Notes¶
- Internal-use ND-500 level-12 monitor call; not intended for user programs.
- Handler SUBR A5XMSG,B5XMSG at MP-P2-N500.NPL:2062; both labels A5XMSG and B5XMSG fall into ONE identical body (A5XMSG: B5XMSG: at :2076-2077, no branch on the MON number). MON 512 and MON 513 execute the same code.
- Dispatched via the ND-500 level-12 GOSW table; entered with X = current ND-500 message (N5MESSAGE) and B = ND-500 CPU datafield.
- Subfunction code is read from message field N5XFU and masked A /\ X5MASK with X5MASK=77 (octal), giving up to 64 slots; illegal if A-X5MAXF>0. Dispatch is A /\ X5MASK GOSW at MP-P2-N500.NPL:2095. All converge on MONXM -> *MON 2XMSG (:2227-2229).
- Subfunctions (octal): 0 LFDUM dummy, 1 LFDCT disconnect, 2 LFGET get buffer, 3 LFREL release buf, 4 LFRHD read header, 5 LFWHD write header, 6 LFREA read msg buf, 7 LFWRI write msg buf, 10 LFSCM set current msg, 11 LFMST msg status, 12 LFOPN open port, 13 LFCLS close port, 14 LFSND send, 15 LFRCV receive next, 16 LFPST port status, 17 LFGST general status, 26 LFM2P magic-to-port, 27 LFP2M port-to-magic, 36 LFPRV request privs, 37 LFRTN return msg, 40 LFRRH recv+read hdr, 45 LFDMM max task space, 46 LFALM alloc msgs, 47 LFFRM free / LFGSM gen-status-mult, 50 LFLMP list msgs/ports, 51 LFRRE recv+read msg, 52 LFCPV check privs, 53 LFWRT write+return.
- A-vs-B distinction: the body is identical; the only in-source hint is a comment 'use B5XMSG' on buffer functions 6/7/53, i.e. B carries a data buffer (LBUFA) in the A slot while A is the non-buffer convention. The concrete A != B difference is a caller-side parameter convention and is UNCERTAIN from the handler body.
- Write-back: result path X5RET -> second GOSW (RFDUM..RFGSM) stores results into message params and applies the per-function mask XMRETMASK into NUMPA.
Parameters¶
| Name | Type | Direction | Description |
|---|---|---|---|
SubFunction |
INTEGER | In | UNVERIFIED - XMSG subfunction code, read from message field N5XFU and masked with X5MASK=77 (octal). Selects one of the LFxxx subfunctions listed in the notes. Message offset, not a confirmed CALLG parameter. |
Direction: In = the program supplies the value, Out = the call returns it, In/Out = both.
See also¶
Compatibility¶
| ND-100 | ND-500 | User programs | RT programs | System programs |
|---|---|---|---|---|
| No | Yes | No | No | Yes |
From the YAML extraction; this call's page in the manual had no compatibility box that was captured.
ndmonlib implementation¶
Not registered Not registered in src/core/mon_registry.c. mon_dispatch() reports the call as unimplemented.
Source¶
Reverse-engineered from SINTRAN III NPL source.