Monitor Call: 60B (octal) Name: N500M / ND500Function Purpose: Inter-subsystem communication for ND-500 control Source: ND-60.136.04A ND-500 Loader Monitor, Chapter 10
If you're new to Norsk Data systems, here's what you need to know:
MON 60 is a SINTRAN III "monitor call" - essentially a system call that lets programs running on the ND-100 (the main 16-bit computer) control the ND-500 (a powerful 32-bit coprocessor).
Think of it like this:
- The ND-500 is a fast computation engine, but it can't do anything by itself
- The ND-100 is the "brain" that runs the operating system and handles all I/O
- MON 60 is how the ND-100 tells the ND-500 what to do
The ND-500 was designed in the 1980s as an add-on to boost computing power. Rather than replacing the ND-100, Norsk Data made them work together:
┌─────────────────┐ ┌─────────────────┐
│ ND-100 │ "Do this math" │ ND-500 │
│ ───────────── │ ──────────────────►│ ───────────── │
│ Operating │ │ Fast 32-bit │
│ System │◄────────────────── │ computation │
│ All I/O │ "Here's result" │ No I/O │
└─────────────────┘ └─────────────────┘
When you run @ND-500-MONITOR at the SINTRAN prompt, you're using a program that internally uses MON 60 to:
- Load programs into ND-500 memory
- Start and stop ND-500 execution
- Read/write ND-500 registers
- Debug ND-500 programs
- 60B_N500M_Hardware_Mapping.md - How MON 60 talks to hardware (TAG registers, IOX commands)
- 60B_N500M.yaml - Structured data version of this document
MON 60 (N500M) is the primary interface between ND-100 programs and the ND-500 coprocessor. It provides 67 subfunctions (0B through 142B octal) for:
- Register and memory access
- Process management
- Control store operations
- Memory configuration
- Performance monitoring (histograms)
- Logging and debugging
- Domain management
The ND-500 Monitor runs entirely on the ND-100 in three parts:
+------------------------------------------------------------------+
| ND-100 |
+------------------------------------------------------------------+
| PAGE TABLE 2 (User Space) |
| +--------------------------------------------------------------+ |
| | ND-500-MONITOR Subsystem | |
| | - User interface and command parsing | |
| | - High-level operations | |
| +--------------------------------------------------------------+ |
| | |
| MON 60 (N500M) |
| Function code + parameters |
| v |
+------------------------------------------------------------------+
| PAGE TABLE 0 (Kernel) |
| +--------------------------------------------------------------+ |
| | N500M Handler | |
| | - Function dispatch (67 subfunctions) | |
| | - Process management | |
| | - Memory allocation | |
| | - 5MPM shared memory access | |
| +--------------------------------------------------------------+ |
| | |
+------------------------------------------------------------------+
| RESIDENT (Paging Off) |
| +--------------------------------------------------------------+ |
| | ND-500 Driver | |
| | - 3022 interface control (IOX instructions) | |
| | - Level 12 interrupt handling | |
| +--------------------------------------------------------------+ |
+------------------------------------------------------------------+
|
3022 / 5MPM
v
+------------------------------------------------------------------+
| ND-500 |
| - Executes domains/programs |
| - No direct I/O capability |
+------------------------------------------------------------------+
MON 60 uses Fortran-style parameter passing:
- A-register points to a parameter address list
- First word is the 16-bit function code
- Remaining words are function-specific parameters (32-bit words or arrays)
- Skip return = successful completion
- Direct return = error occurred (error code in A-register)
; MAC assembly example
LDA (PARAMS ; A-register -> parameter list
MON 60 ; Call N500M
JMP ERROR ; Direct return = error
... ; Skip return = success
PARAMS, <function-code> ; First word: function code (16-bit)
<param1> ; Second word: first parameter
<param2> ; Third word: second parameter
...
Purpose: Read a single ND-500 register
| Parameter | Type | I/O | Description |
|---|---|---|---|
| reg.no | INT | I | Register number to read |
| value | INT4 | O | Register value returned |
Purpose: Write a single ND-500 register
| Parameter | Type | I/O | Description |
|---|---|---|---|
| reg.no | INT | I | Register number to write |
| value | INT4 | I | Value to write |
Purpose: Read from ND-500 program address space
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no.of bytes | INT4 | I | Number of bytes to read |
| ND-500 addr | INT4 | I | Source address in ND-500 program memory |
| data area | ARR | O | Buffer to receive data |
| bytes returned | INT4 | O | Actual bytes read |
Purpose: Read from ND-500 data address space
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no.of bytes | INT4 | I | Number of bytes to read |
| ND-500 addr | INT4 | I | Source address in ND-500 data memory |
| data area | ARR | O | Buffer to receive data |
| bytes returned | INT4 | O | Actual bytes read |
Purpose: Write to ND-500 program address space
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no.of bytes | INT4 | I | Number of bytes to write |
| ND-500 addr | INT4 | I | Destination address in program memory |
| data area | ARR | I | Data to write |
Purpose: Write to ND-500 data address space
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no.of bytes | INT4 | I | Number of bytes to write |
| ND-500 addr | INT4 | I | Destination address in data memory |
| data area | ARR | I | Data to write |
Purpose: Load a segment file into ND-500 memory
| Parameter | Type | I/O | Description |
|---|---|---|---|
| file name | STRING | I | Segment file to load |
| segment base | INT4 | I | Base address for segment |
| size in bytes | INT4 | I | Size of segment |
| segment type | INT | I | Type code (program/data) |
Purpose: Load the swapper segment
| Parameter | Type | I/O | Description |
|---|---|---|---|
| swapper segment name | STRING | I | Name of swapper segment file |
Notes: The swapper is actually an ND-100 RT program, not ND-500 code.
Purpose: Read multiple ND-500 registers as a block
| Parameter | Type | I/O | Description |
|---|---|---|---|
| register block | ARR | O | Array to receive register values |
Purpose: Write multiple ND-500 registers as a block
| Parameter | Type | I/O | Description |
|---|---|---|---|
| register block | ARR | I | Array of register values to write |
Purpose: Start execution of an ND-500 domain/program
| Parameter | Type | I/O | Description |
|---|---|---|---|
| stop reason | INT4 | O | Reason execution stopped (see below) |
| returned trap info | INT4 | O | Trap information if applicable |
| clear time used | INT | I | Flag to clear time accounting |
Stop Reason Values:
- 65 (101B) - Normal completion via MON 407B (TPSTRA)
- Other values indicate traps or errors
Notes: Seven parameters are transferred back to ND-100 on return.
Purpose: Connect a file for ND-500 process use
| Parameter | Type | I/O | Description |
|---|---|---|---|
| file name | STRING | I | File to connect |
| access code | INT | I | Access mode (read/write/etc.) |
| default type | INT | I | Default file type |
| connect no. | INT | I | Requested connection number (0 = any) |
| returned connect no. | INT | O | Actual connection number assigned |
Purpose: Close a connected file
| Parameter | Type | I/O | Description |
|---|---|---|---|
| file no. | INT | I | Connection number to close |
Purpose: Allocate an ND-500 process from an ND-100 RT program
| Parameter | Type | I/O | Description |
|---|---|---|---|
| start addr. after escape | INT4 | I | Restart address if user escapes |
| version string of PTO | STRING | I | Page Table Owner version string |
Notes:
- Creates a process that will be terminated via RELIS (16B)
- Requires detailed knowledge of monitor operation
- Used by RT programs that manage ND-500 processes
Example (MAC):
LDA (RESRVP
MON 60
JMP ERROR
; Process reserved successfully
RESRVP, 15 ; Function code RESRV
STADDR ; Start address after escape
VERSTR ; Version string
Purpose: Release a previously reserved ND-500 process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Notes: Releases all resources associated with the process reserved by RESRV.
Purpose: List all files currently open by the ND-500 process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Output goes to terminal |
Purpose: Get CPU time used by current process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Time returned in standard format |
Purpose: List active ND-500 processes
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Output goes to terminal |
Purpose: Set the error flag value
| Parameter | Type | I/O | Description |
|---|---|---|---|
| value | INT | I | Error flag value |
Purpose: Read from ND-500 control store (microcode memory)
| Parameter | Type | I/O | Description |
|---|---|---|---|
| CS addr. | INT4 | I | Control store address |
| no of 16 bit words | INT | I | Number of words to read |
| data-area | ARR | O | Buffer to receive data |
Notes: Control store is 144 bits wide, transferred as 16-bit words.
Purpose: Write to ND-500 control store
| Parameter | Type | I/O | Description |
|---|---|---|---|
| CS addr. | INT4 | I | Control store address |
| no of 16 bit words | INT | I | Number of words to write |
| data-area | ARR | I | Data to write |
Notes: Used for microcode patching or custom microprogram loading.
Purpose: Start microprogram execution at specified address
| Parameter | Type | I/O | Description |
|---|---|---|---|
| micro program start address | INT4 | I | Control store address to begin execution |
Purpose: Examine (read) single data memory location
| Parameter | Type | I/O | Description |
|---|---|---|---|
| addr. | INT4 | I | Address to examine |
| value | INT4 | O | Value at address |
Purpose: Deposit (write) to single data memory location
| Parameter | Type | I/O | Description |
|---|---|---|---|
| addr. | INT4 | I | Address to modify |
| value | INT4 | I | Value to deposit |
Purpose: Examine single program memory location
| Parameter | Type | I/O | Description |
|---|---|---|---|
| addr. | INT4 | I | Address to examine |
| value | INT4 | O | Value at address |
Purpose: Deposit to single program memory location
| Parameter | Type | I/O | Description |
|---|---|---|---|
| addr. | INT4 | I | Address to modify |
| value | INT4 | I | Value to deposit |
Purpose: Read from absolute physical memory
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no. of bytes | INT4 | I | Number of bytes to read |
| ND-500 addr. | INT4 | I | Physical address |
| data area | ARR | O | Buffer to receive data |
| bytes returned | INT4 | O | Actual bytes read |
Notes: Bypasses memory management - direct physical access.
Purpose: Write to absolute physical memory
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no. of bytes | INT4 | I | Number of bytes to write |
| ND-500 addr. | INT4 | I | Physical address |
| data area | ARR | I | Data to write |
Purpose: Stop microprogram execution
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Master clear the ND-500
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Notes: Resets the ND-500 hardware via 3022 interface MCLR5 command.
Purpose: Load control store from file
| Parameter | Type | I/O | Description |
|---|---|---|---|
| CS addr | INT4 | I | Starting address in control store |
| no of words | INT4 | I | Number of words to load |
| file name | STRING | I | Microcode file (typically CONTROL-STORE:DATA) |
Purpose: Define ND-500 memory configuration
| Parameter | Type | I/O | Description |
|---|---|---|---|
| start page | INT4 | I | First page number |
| no. of memory parts | INT | I | Number of memory regions |
| part array | ARR | I | Array describing each memory region |
Purpose: Read 3022/5015 interface status
| Parameter | Type | I/O | Description |
|---|---|---|---|
| status | INT4 | O | Status bits (16:31=ND-500, 0:15=ND-100) |
| MAR | INT4 | O | Memory Address Register value |
Status Bits (ND-100 side, bits 0:15):
- Bit 5: Interface locked
- Bit 6: DMA error
- Bit 7: Power fail
- Bit 8: Power was off
- Bit 9: Clock stopped
Purpose: Reserve ND-500 for exclusive/special use
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Release ND-500 from exclusive use
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Define a swap file for paging
| Parameter | Type | I/O | Description |
|---|---|---|---|
| file name | STRING | I | Swap file name |
Purpose: Delete a swap file
| Parameter | Type | I/O | Description |
|---|---|---|---|
| file name | STRING | I | Swap file to delete |
Purpose: Internal test function
| Parameter | Type | I/O | Description |
|---|---|---|---|
| I1 | INT4 | I | Test parameter 1 |
| I2 | INT4 | I | Test parameter 2 |
| I3 | INT4 | I | Test parameter 3 |
| I4 | INT4 | I | Test parameter 4 |
Purpose: Read 3022 interface register
| Parameter | Type | I/O | Description |
|---|---|---|---|
| register value | INT4 | O | Interface register value |
Purpose: Allocate memory pages to ND-500
| Parameter | Type | I/O | Description |
|---|---|---|---|
| number of pages | INT4 | I | Pages to allocate |
Purpose: Reclaim memory pages from ND-500
| Parameter | Type | I/O | Description |
|---|---|---|---|
| number of pages | INT4 | I | Pages to reclaim |
Purpose: Start the swapper RT program
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Start segment placement operation
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: End segment placement operation
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Get microprogram version number
| Parameter | Type | I/O | Description |
|---|---|---|---|
| version number | INT4 | O | Microprogram version |
Purpose: Get current memory configuration
| Parameter | Type | I/O | Description |
|---|---|---|---|
| array | ARR | O | Memory configuration data |
Purpose: Reserve ND-500 with specified memory
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no. of pages | INT4 | I | Number of pages to reserve |
| first page no. | INT4 | O | First allocated page number |
Notes: Use RELMEM (123B) to release.
Purpose: Define a performance histogram
| Parameter | Type | I/O | Description |
|---|---|---|---|
| start address | INT4 | I | Start of address range to monitor |
| interval size | INT4 | I | Size of each histogram bucket |
| no. of intervals | INT | I | Number of histogram buckets |
Purpose: Start histogram collection
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Stop histogram collection
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Read collected histogram data
| Parameter | Type | I/O | Description |
|---|---|---|---|
| array | ARR | O | Histogram data |
Purpose: Release histogram resources
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Search for a process by name
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process name | STRING | I | Name to search for |
| record | ARR | O | Process entry data |
Purpose: Get process entry by number
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process | INT | I | Process number |
| record | ARR | O | Process entry data |
Purpose: Search for a physical segment by name
| Parameter | Type | I/O | Description |
|---|---|---|---|
| name of phys. segment | STRING | I | Segment name |
| array | ARR | O | Segment data |
Purpose: Get physical segment by number
| Parameter | Type | I/O | Description |
|---|---|---|---|
| phys. segment no. | INT | I | Segment number |
| array | ARR | O | Segment data |
Purpose: Read data from a physical segment
| Parameter | Type | I/O | Description |
|---|---|---|---|
| phys.segment no. | INT | I | Segment number |
| address | INT4 | I | Offset within segment |
| no. of bytes | INT4 | I | Bytes to read |
| array | ARR | O | Data buffer |
Purpose: Set the current process name
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process name | STRING | I | New process name |
Purpose: Test if user is SYSTEM
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Skip return if SYSTEM |
Purpose: Send a message to the swapper RT program
| Parameter | Type | I/O | Description |
|---|---|---|---|
| record | ARR | I | Message record |
Purpose: Read last message for a process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process number |
| record | ARR | O | Message record |
Purpose: Read 32-bit process communication flag
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process number |
| flag | INT4 | O | 32-bit flag value |
Notes: Equivalent to SINTRAN MON 402B (Read input flag) for ND-500 processes.
Example (MAC):
LDA (RFLAGP
MON 60
JMP ERROR
; Flag value now at FLAGVAL
RFLAGP, 100 ; Function code RFLAG
PROCNO ; Process number
FLAGVAL,0 ; 32-bit flag returned here
0 ; (high word)
Purpose: Set 32-bit process communication flag
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process number |
| flag | INT4 | I | 32-bit flag value to set |
Notes: Equivalent to SINTRAN MON 403B (Write output flag) for ND-500 processes. Also known as SFLAG in some documentation.
Purpose: Release ND-500 system resources
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Read system parameter array
| Parameter | Type | I/O | Description |
|---|---|---|---|
| parameter array | ARR | O | System parameters |
Purpose: Write system parameter array
| Parameter | Type | I/O | Description |
|---|---|---|---|
| parameter array | ARR | I | System parameters |
Purpose: Set process priority and CPU limits
| Parameter | Type | I/O | Description |
|---|---|---|---|
| ND-100 mon call priority | INT | I | Priority for ND-100 monitor calls |
| max percent CPU time | INT | I | Maximum CPU percentage allowed |
Purpose: Link current process to another
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process to link to |
Purpose: Write data to a physical segment
| Parameter | Type | I/O | Description |
|---|---|---|---|
| segm no. | INT | I | Segment number |
| ND-500 address | INT4 | I | Offset within segment |
| no. of bytes | INT4 | I | Bytes to write |
| data area | ARR | I | Data to write |
Purpose: Start logging for one process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process to log |
Purpose: Stop process logging
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Read logged information
| Parameter | Type | I/O | Description |
|---|---|---|---|
| data area | ARR | O | Log data |
Purpose: Release logging resources
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Start logging all active processes
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Abort an ND-500 process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no. | INT | I | Process to abort |
Purpose: Set output device for process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| unit | INT | I | Device unit number |
Purpose: Read data from swapper memory
| Parameter | Type | I/O | Description |
|---|---|---|---|
| no. of bytes | INT4 | I | Bytes to read |
| ND-500 address | INT4 | I | Source address |
| data area | ARR | O | Data buffer |
| bytes read | INT4 | O | Actual bytes read |
Purpose: Log out an ND-500 process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| process no | INT | I | Process to log out |
Purpose: Release memory reserved by RESER (61B)
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Start monitor call logging
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Print collected monitor call log
| Parameter | Type | I/O | Description |
|---|---|---|---|
| array | ARR | O | Array of 1K 16-bit words |
Purpose: Stop and release monitor call logging
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Define a standard domain configuration
| Parameter | Type | I/O | Description |
|---|---|---|---|
| array | ARR | I | Domain definition |
Purpose: Place (load) a standard domain
| Parameter | Type | I/O | Description |
|---|---|---|---|
| name | STRING | I | Domain name |
Purpose: Delete a standard domain definition
| Parameter | Type | I/O | Description |
|---|---|---|---|
| name | STRING | I | Domain name to delete |
Purpose: List defined standard domains
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Output to terminal |
Purpose: List processes in execution queue
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | Output to terminal |
Purpose: Place the ND-500 debugger
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Log out process and abort corresponding RT-programs
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Activate a stopped process
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Not used (reserved)
Purpose: Start residual placement operation
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (none) | - | - | - |
Purpose: Set block size of a file
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (parameters not documented) | - | - | - |
Purpose: Redefine the default infant file
| Parameter | Type | I/O | Description |
|---|---|---|---|
| (parameters not documented) | - | - | - |
- Skip return: Function completed successfully
- Direct return: Error occurred, error code in A-register
| Code | Description |
|---|---|
| 1 | Illegal function code |
| 2 | ND-500 not present |
| 3 | ND-500 not available |
| 4 | Process not reserved |
| 5 | Invalid parameter |
| 6 | Memory allocation failed |
| 7 | File not found |
| 8 | Access denied |
"Illegal Function Code in MON 60" - verify function code is in range 0B-142B.
; Reserve an ND-500 process
LDA (RESRVP
MON 60
JMP RESERR ; Error reserving
; Process reserved successfully
; ... do work with ND-500 ...
; Release the process
LDA (RELISP
MON 60
JMP RELERR ; Error releasing
; Process released
JMP DONE
RESRVP, 15 ; Function RESRV
0 ; Start address after escape
VERSTR ; Version string pointer
RELISP, 16 ; Function RELIS (no parameters)
VERSTR, 'PTO V1.0 ' ; 16-character version string
RESERR, ... ; Handle reservation error
RELERR, ... ; Handle release error
DONE, ...
; Read flag from process 3
LDA (RFLAGP
MON 60
JMP FLGERR
; Flag value now at FLAGVAL
; Set flag for process 3
LDA (SFLAGP
MON 60
JMP FLGERR
JMP DONE
RFLAGP, 100 ; Function RFLAG
3 ; Process number
FLAGVAL,0 ; Flag value (low word)
0 ; Flag value (high word)
SFLAGP, 101 ; Function SPFLAG
3 ; Process number
177777 ; New flag value (low word)
177777 ; New flag value (high word)
FLGERR, ... ; Handle flag error
DONE, ...
INTEGER*2 FUNCCODE
INTEGER*4 CSADDR, WORDS
INTEGER*2 CSBUF(100)
C Read 20 words from control store address 1000
FUNCCODE = 23 ! Function 23B = REACS
CSADDR = 1000
WORDS = 20
CALL MONITOR_CALL('N500M', FUNCCODE, CSADDR, WORDS, CSBUF)
IF (ERRCODE .NE. 0) THEN
WRITE(*,*) 'Error reading control store:', ERRCODE
STOP
ENDIF
C CSBUF now contains control store dataINTEGER : FUNCCODE
INTEGER4 : STOPREASON, TRAPINFO
INTEGER : CLEARTIME
ON ROUTINEERROR DO
IF ErrCode > 0 THEN
% Handle error
ENDON
ENDON
% Execute domain
FUNCCODE := 12B % RUNN
CLEARTIME := 1 % Clear time accounting
Monitor_Call('N500M', FUNCCODE, STOPREASON, TRAPINFO, CLEARTIME)
% Check stop reason
IF STOPREASON = 65 THEN
% Normal completion
ELSE
% Abnormal termination
ENDIF
| Document | Description |
|---|---|
| ND-60.136.04A ND-500 Loader Monitor | Official MON 60 reference (Chapter 10) |
| ND-860228-2-EN SINTRAN III Monitor Calls | Monitor calls reference manual |
| ND500-MONITOR-CALL-MECHANISM.md | Analysis of inter-processor calls |
| ND500-MONITOR-CALL-PARAMETER-PASSING.md | Parameter passing details |
| ND500-SWAPPER-ANALYSIS.md | Swapper operation details |
| Date | Version | Author | Changes |
|---|---|---|---|
| 2025-02-05 | 1.0 | Claude | Initial comprehensive documentation |
Source: ND-60.136.04A ND-500 Loader Monitor, Chapter 10, pp. 192-195 Scanned by Jonny Oddene for Sintran Data