MON 312B (octal) - MOINF (CheckMonCall)¶
Checks whether a given monitor call exists in this particular SINTRAN III system. Optional monitor
calls are included or left out when SINTRAN is generated; MOINF lets a program probe for one. The caller
passes a monitor-call number in A; the normal return means "not implemented" (A = 0), and
the skip return delivers the call's entry address in A. ND-100 monitor call.
Status: byte-verified (dispatch + worker body), and the worker's core claim - that it reads
MCTAB and returns MCTAB[N] - is now proven from bytes, not merely inferred. All addresses/values
are octal.
CORRECTED 2026-07-13, and SPECIAL. MON calls are dispatched through
MCTAB @ 005620B(segment044-S3IDPIT), not the level-14GOTAB(which isMFELLfor 224 of 256 calls).MCTAB[312B] = 032600B = MOINF. Unlike the ordinary MON workers (which live in003-S3CP), MOINF is part of the monitor-dispatch machinery and lives with the dispatcher in026-S3IMPIT/017-S3SMPIT(load32000B, identical bytes), immediately afterCALLP=032201B. In the003-S3CPoverlay the same virtual address032600Bdecodes as an unrelated data record table (X103T..X107E), so MOINF must NOT be read there. See../317B-ExecuteCommand/README.mdandSINTRAN/CARVING-HANDOFF.mdsection 3a.
- Full disassembly:
312B-CheckMonCall.ASM. - Emulator model:
312B-CheckMonCall.pseudo.c.
Dispatch path¶
flowchart LR
A["User program<br/>MON 312B (A = MON#)"] --> B["ENT14 level-14<br/>026-S3IMPIT :072167B"]
B --> C["GOTAB[312B] = MFELL<br/>:071545B"]
C --> D["MFELL level switch<br/>:072114B -> CALLP 032201B"]
D --> E["MCTAB[312B] = MOINF<br/>044-S3IDPIT :006132B = 032600B"]
E --> F["MOINF worker<br/>026-S3IMPIT :032600B"]
F --> G["reads MCTAB[MON#]<br/>044-S3IDPIT :005620B + MON#"]
class A blue
class B,C,D,E teal
class F green
class G teal
classDef blue fill:#E3F2FD,stroke:#0D47A1,color:#0D47A1
classDef teal fill:#E0F7FA,stroke:#00838F,color:#00838F
classDef green fill:#E8F5E9,stroke:#2E7D32,color:#2E7D32
MOINF is both a normal MCTAB-dispatched worker AND itself an MCTAB reader: it returns MCTAB[MON#] for
the number the caller asks about.
Code location (dispatch path)¶
Byte offset = (addr - loadbase) in octal words x 2 (decimal). Offsets reproduced with dd.
| Role | Segment | Addr (octal) | Byte offset | Symbol | Verdict |
|---|---|---|---|---|---|
| MCTAB[312B] slot | 044-S3IDPIT.asm | 006132B = 032600B |
2228 | -> MOINF |
VERIFIED |
| MOINF worker body | 026-S3IMPIT.asm | 032600B-032615B |
768 | MOINF |
VERIFIED |
MOINF MON_COUNT const |
026-S3IMPIT.asm | 032636B = 000400B |
828 | (P+35 datum) | VERIFIED |
MOINF MCTAB base const |
026-S3IMPIT.asm | 032637B = 005620B |
830 | (P+32 datum) | VERIFIED |
Verify by hand (from tools/sintran-segment-carver/versions/L-VSX-500/segments/):
dd if=044-S3IDPIT.bin bs=1 skip=2228 count=2 | od -An -tx1 -> 35 80 (= 032600B = MOINF)
dd if=026-S3IMPIT.bin bs=1 skip=768 count=2 | od -An -tx1 -> d7 8d (= 153615B, MOINF entry)
dd if=026-S3IMPIT.bin bs=1 skip=828 count=2 | od -An -tx1 -> 01 00 (= 000400B = 256, the bound)
dd if=026-S3IMPIT.bin bs=1 skip=830 count=2 | od -An -tx1 -> 0b 90 (= 005620B = MCTAB base)
017-S3SMPIT.bin holds identical bytes at the same offsets.)
Instruction walkthrough¶
Full listing: 312B-CheckMonCall.ASM.
032600B IRR 10 DA- read the caller'sAregister (the MON# argument) across program levels.032601B LDT 35- load the bound from the P-relative datum atP+35=032636B=000400B(256) = the number of MON-call slots.032602B-032603B SKP IF DA MLST ST- continue (in range) only ifMON# < 256; else go to the out-of-range path.032604B-032605B RADD CLD SA DX/LDA I ,X 32-X := MON#, then loadA := mem[ mem[P+32] + X ]. The pointer word atP+32=032637B=005620B= MCTAB base, so this is exactlyA := MCTAB[MON#].032607B RADD CLD 0 DA- out-of-range path setsA := 0(not implemented).032610B IRW 10 DA- write the result (MCTAB[MON#]or 0) back to the caller'sA.032611B JAZ- if the result is 0, take the normal return (not implemented).032612B-032614B IRR 10 DP / AAA 1 / IRW 10 DP- otherwise bump the caller'sPby 1: the ND-100 skip return signalling "call implemented".032615B JMP I 6- return.
Every one of these steps is byte-proven, including the two constants (256 bound and 005620B MCTAB
base) read from the routine's own P-relative data words.
Parameter / register contract¶
| Reg / field | Dir | Meaning | Verdict |
|---|---|---|---|
A (caller) |
in | monitor-call number to test | VERIFIED (bytes: IRR 10 DA) |
A (caller) |
out | MCTAB[MON#] = entry address, or 0 if not implemented |
VERIFIED (bytes: IRW 10 DA) |
| skip return | out | taken iff entry != 0 (call implemented) | VERIFIED (bytes: AAA 1 on caller P) |
MCTAB base 005620B |
const | table base read via P-relative datum at P+32 |
VERIFIED (bytes) |
bound 256 |
const | range limit read via P-relative datum at P+35 |
VERIFIED (bytes) |
Pseudo-code (for an emulator)¶
See 312B-CheckMonCall.pseudo.c - the whole routine is byte-verified,
including the MCTAB index and the skip/normal return.
Honest caveats¶
What is byte-proven: essentially the entire call. MCTAB[312B] = 032600B = MOINF; MOINF lives in
026-S3IMPIT (identical in 017-S3SMPIT), reads the caller's MON# via IRR, range-checks it against a
256 bound held at 032636B, indexes MCTAB whose base 005620B is held at 032637B, and returns
MCTAB[MON#] (or 0) with the ND-100 skip/normal return convention. This upgrades the NC oracle's claim
(that MOINF returns MCTAB[N]) from INFERRED to VERIFIED.
What is NOT proven / noteworthy: nothing material is left unproven for the mechanism. The only
subtlety is the overlay trap: reading 032600B in the wrong segment (003-S3CP) yields an unrelated
data table, which is what would mislead an analyst - hence the explicit segment note above.
Method: ../../../../../EXTRACTING-RESIDENT-CODE.md ·
master map: ../../MON-CALL-INDEX.md ·
NC oracle: SINTRAN/ND500/mon-oracle-for-NC/312B-MOINF_317B-UECOM.md.