Skip to content

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.