050B-TESTF¶
MON 60 subfunction TESTF = 50B = 0x28 = 40 decimal.
NPL purpose (authoritative, 5P-P2-MON60.NPL): (test function), server handler 5NOPAR.
All addresses OCTAL, ND-100 word addresses, BANK 1, base 0.
Source: SINTRAN/ND500/nd-500-mon/nd-500-mon-j04.prog.asm
60B yaml client name = TESTF. Handler 5NOPAR = common forward path (not a
no-op; see SUBFUNCTION-TABLE.md note 1). Two duplicate thunks exist for 50B
(146506 unused, 146511 used); both call sites resolve to 146511.
Thunk (PROVEN, bytes read)¶
| Addr | Word | Meaning |
|---|---|---|
146511 |
170450 |
SAA 50 (subfunction 50B) |
146512 |
125001 |
JMP I 1 (-> gateway pointer) |
146513 |
146244 |
pointer to gateway 146244 |
Call site(s)¶
| Item | Value | Status |
|---|---|---|
| MON 60 call site | 007740 JPL I 106 -> ptr 010046, bank1[010046]=146511 = thunk SAA 50 |
PROVEN |
| Error path (callsite+1) | 007741 JPL I 102 -> routine 007500 (internal error/abort helper) |
PROVEN |
| Success path (callsite+2) | 007742 JMP 6 -> 007750 JMP I 101 -> routine 010613 (command loop) |
PROVEN |
| Enclosing ENTER routine | 002662 (framesize 000331) - the command interpreter | PROVEN (prologue RADD AD1 CLD SL DX+ENTER) |
| MON 60 call site | 007762 JPL I 64 -> ptr 010046, bank1[010046]=146511 = thunk SAA 50 |
PROVEN |
| Error path (callsite+1) | 007763 JPL I 60 -> routine 007500 (internal error/abort helper) |
PROVEN |
| Success path (callsite+2) | 007764 JMP I 65 -> routine 010613 (command loop) |
PROVEN |
| Enclosing ENTER routine | 002662 (framesize 000331) - the command interpreter | PROVEN (prologue RADD AD1 CLD SL DX+ENTER) |
Parameter block (PROVEN stores)¶
| Slot | Store | Value |
|---|---|---|
,X 6 @007734 / @007756 |
STA ,X 6 |
parameter 1 (site1: derived value; site2: &(B-127)) |
,X 7 @007737 / @007761 |
STA ,X 7 |
parameter 2 = &(B-127) in both sites |
Gateway convention (prog.md sec 4.4): LDX ,B -176 sets X = stack top; STx ,X 6/7/10
are MON 60 parameters 1/2/3.
What it does¶
- Two distinct call sites, both resolving to thunk
146511(SAA 50), each setting two parameters into slots 6 and 7. - Site 1 (
007725-007742) and site 2 (007751-007764) differ in how the two operands are computed; both pass a pointer into the local frame atB-127. - On error ->
007500; on success -> command loop010613.
Unknown / inferred¶
- INFERRED (role):
007500is an internal error/abort helper (RADD CLD SL DXleaf calling LEAVE177327);010613command loop. Addresses/reach PROVEN. - UNKNOWN: the exact semantics of TESTF's two parameters. The stores into
,X 6/,X 7are PROVEN; their meaning ((test function)per NPL) is not documented further. - PROVEN: both call sites hit the same thunk
146511; the second, unused 50B thunk146506has no caller.
octal=hex=decimal: 50B = 0x28 = 40 decimal