051B-RIFRG¶
MON 60 subfunction RIFRG = 51B = 0x29 = 41 decimal.
NPL purpose (authoritative, 5P-P2-MON60.NPL): READ INTERFACE (COMMUNICATION), IODATUT REGISTER, 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 = RIFRG.
Thunk (PROVEN, bytes read)¶
| Addr | Word | Meaning |
|---|---|---|
146514 |
170451 |
SAA 51 (subfunction 51B) |
146515 |
125001 |
JMP I 1 (-> gateway pointer) |
146516 |
146244 |
pointer to gateway 146244 |
Call site(s)¶
| Item | Value | Status |
|---|---|---|
| MON 60 call site | 130136 JPL I 35 -> ptr 130173, bank1[130173]=146514 = thunk SAA 51 |
PROVEN |
| Error path (callsite+1) | 130137 JMP I ,B -141 = frame-relative (B-relative) error EXIT. The disassembler's P-relative ; -> 127776 annotation is INVALID for a ,B operand; the true target is runtime B-141, a saved abort vector. |
PROVEN (opcode); target dynamic |
| Success path (callsite+2) | 130140 (fall through) SAA 40 = next operation in the routine |
PROVEN |
| Enclosing ENTER routine | 127551 (framesize 000010) - a standalone ENTER routine | PROVEN (prologue RADD AD1 CLD SL DX+ENTER) |
Parameter block (PROVEN stores)¶
| Slot | Store | Value |
|---|---|---|
,X 6 |
130135 STA ,X 6 |
parameter 1 = &(B-167) (buffer to receive the interface/IODATUT register) |
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¶
- Builds
&(B-167)(address of a local buffer), stores it as param 1. (130132-130135) - Issues
MON 60RIFRG to read the ND-500 interface / IODATUT communication register. (130136) - On error takes the routine's
,B-relative abort exit130137; on success falls through to the next step130140.
Unknown / inferred¶
- PROVEN: param 1 store
130135 STA ,X 6 = &(B-167). - INFERRED: the buffer
B-167receives the IODATUT/interface register value (per NPL purpose); the value layout was not carved. - NOTE:
130137 JMP I ,B -141is a,B-relative indirect jump. Every such line in this routine carries a bogus P-relative; ->comment; the real target isB-141at run time (an abort/error return address saved in the frame). Marked as dynamic.
octal=hex=decimal: 51B = 0x29 = 41 decimal