60B N500M¶
Not registered MON 60B (48 decimal) · Mnemonic ND500Function, N500MON · 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 Monitor Function - The primary way ND-100 programs control the ND-500.
SIMPLE EXPLANATION: MON 60 lets programs on the ND-100 (the main computer) control the ND-500 (a fast coprocessor). It's like a remote control for the ND-500.
TECHNICAL DETAILS: This monitor call provides 67 subfunctions (0B through 142B octal) for: - ND-500 register and memory access - Process management and control - Control store (microcode) operations - Memory configuration - Histogram and logging - Domain management
The ND-500 Monitor is divided into three parts, ALL running on ND-100: 1. Part 1: Runs on page table 2 as subsystem "ND-500-MONITOR" (user interface) 2. Part 2: Runs on page table 0 (kernel, handles the actual work) 3. Part 3: ND-500 driver routine in resident memory (talks to hardware)
COMMUNICATION FLOW: When ND-500 needs something from ND-100: 1. ND-500 writes request to shared memory (5MPM) 2. ND-500 signals via TAG-IN (code 8 = "I have a request") 3. ND-100 processes the request 4. ND-100 writes results to shared memory 5. ND-100 signals via TAG-OUT (code 16 = "Done!") 6. ND-500 reads results and continues
MON 60 uses Fortran-style parameter passing: the A-register points to a parameter address list where the first word is the function code and remaining parameters are 32-bit words or arrays.
Notes¶
- Version history: MON 60 (N500M) gained function 174B (LOIMM) to support the new ND-5830 and ND-5850 ND-5000 system types (SINTRAN-III-Release-History.md:458, table 4.2 - placed in the M-version column). UNVERIFIED: the release documentation names function 174B / LOIMM but gives no argument layout for it, so its parameter contract is not recorded here.
- First parameter is always the 16-bit function code
- Remaining parameters depend on the function code
- Skip return indicates successful completion
- Direct return indicates an error occurred
- See 60B_N500M_Functions.md for complete subfunction reference
- Function codes range from 0B to 142B (octal)
Parameters¶
| Name | Type | Direction | Description |
|---|---|---|---|
FunctionCode |
INT | In | Subfunction code (0B-142B). See 60B_N500M_Functions.md for complete list. |
Parameters |
VARIES | In/Out | Function-specific parameters. Can be 32-bit words, arrays, or strings depending on function code. |
ErrorCode |
INT | Out | Error code returned on direct return. 0 = success. |
Direction: In = the program supplies the value, Out = the call returns it, In/Out = both.
See also¶
@ND-500-MONITOR command, MON 407B (TPSTRA) - Returns stop reason from RUNN, 60B_N500M_Functions.md - Complete subfunction reference
Examples¶
From the manual (OCR text, not corrected).
INTEGER : FUNCCODE
INTEGER4 : STARTADDR
BYTES : VERSION(0:15)
ON ROUTINEERROR DO
IF ErrCode > 0 THEN
% Handle error
ENDON
ENDON
% Reserve ND-500 process
FUNCCODE := 15B % RESRV
STARTADDR := 0
VERSION := 'PTO V1.0'
Monitor_Call('N500M', FUNCCODE, STARTADDR, VERSION)
C Example: Reserve ND-500 process
INTEGER*2 FUNCCODE
INTEGER*4 STARTADDR
CHARACTER*16 VERSION
FUNCCODE = 15 ! Function 15B = RESRV
STARTADDR = 0
VERSION = 'PTO V1.0'
CALL MONITOR_CALL('N500M', FUNCCODE, STARTADDR, VERSION)
IF (ERRCODE .NE. 0) THEN
! Handle error
ENDIF
; ND-500 assembly - calling MON 60 via Segment 31 trap
; Note: ND-500 programs use segment 31 traps which are
; forwarded to ND-100 for MON 60 processing
FUNCCODE : W BLOCK 1
PARAMS : W BLOCK 10
N500M : EQU 37B9 + 60B
; Example: Read register
LDW W0, =0B ; Function code RRREG
STW W0, FUNCCODE
LDW W1, =5 ; Register number
STW W1, PARAMS
CALLG N500M, 2, FUNCCODE, PARAMS
IF K GO ERROR
; Register value now in PARAMS+1
; Example: Read ND-500 register
LDA (PARAMS ; A-register points to parameter list
MON 60 ; Monitor call N500M
JMP ERROR ; Direct return = error
... ; Skip return = success
PARAMS, 0 ; Function code 0B = RRREG
REGNUM ; Register number
REGVAL ; Where to store value
; Example: Reserve ND-500 process (function 15B)
LDA (RESRVP
MON 60
JMP ERROR
...
RESRVP, 15 ; Function code 15B = RESRV
STADDR ; Start address after escape
VERSTR ; Version string pointer
ndmonlib implementation¶
Not registered Not registered in src/core/mon_registry.c. mon_dispatch() reports the call as unimplemented.
Source¶
ND-60.136.04A ND-500 Loader Monitor, page 192.