MP-P2-N500.NPL API Documentation¶
File: Source Code\Sintran L\NPL\MP-P2-N500.NPL Total Lines: ~3808 Total APIs/Subroutines: 47+
API List by Line Number¶
1. 5RRTWT, 5XACTRT, 5SWACTRT (Lines 21-46)¶
- Line Range: 21-46
- Description: Routines to remove message from execution queue and restart ND-500 shadow program in ND-100
- Execution Level: Driver level (when called from other levels must be called with interrupt off)
- Entry Parameters:
- X = Actual message
- Exit Parameters:
- T, A, D registers destroyed
- Comments: Lines 3-20
- 5RRTWT: Main entry point
- 5XACTRT: Message of process to restart, not in EX-queue
- 5SWACTRT: Start 5SWAP
2. ESC500, SYSABORT (Lines 55-91)¶
- Line Range: 55-91
- Description: ESC500 - SYSABORT routine for escape handling
- Execution Level: Monitor level
- Entry Parameters:
- X = Addr of input datafield
- Exit Parameters: Not specified
- Comments: Lines 49-54
- Purpose: Handle escape/abort sequence for ND-500 processes
3. RL5PDESC, 1RL5PDESC (Lines 108-134)¶
- Line Range: 108-134
- Description: Release the ND-500 process description after the ND-500 process has been terminated
- Execution Level: Monitor level
- Entry Parameters:
- T = Monitor level routine to execute after the process is terminated
- X = RT-description addr (when RL5PDESC)
- Exit Parameters: Return to STUPR if the program has reserved an ND-500 proc, else exit
- Comments: Lines 94-107
- Purpose: Called when an error is detected by SINTRAN III monitor (in MON.CALL etc.)
4. RTBAK, APLRSTART, 5FRTBAK (Lines 144-196)¶
- Line Range: 144-196
- Description: Monitor level routine to remove ND-100 program from I/O-wait
- Execution Level: Monitor level
- Entry Parameters:
- X = Process description
- Exit Parameters: Not specified
- Comments: Lines 137-143
- Purpose: RTBAK - remove from I/O wait; APLRSTART - activate ND-100 application waiting for SIBAS in ND-500
5. 500HIST (Lines 209-345)¶
- Line Range: 209-345
- Description: Level 2 routine called each basic time unit
- Execution Level: Level 2
- Entry Parameters: None
- Exit Parameters: All registers are destroyed
- Comments: Lines 199-208
- Purpose: Called from ICLCK in IOF and return in IOF but has ION sequences inside. Handles histogram and process logging
6. N500C (Lines 358-644)¶
- Line Range: 358-644
- Description: Level 2 (monitor level) routine to execute commands to ND-500
- Execution Level: Monitor level (Level 2)
- Entry Parameters:
- X = Process description
- Exit Parameters: Returns to MONEN/STUPR
- Comments: Lines 348-357
- Purpose: Main command dispatcher for ND-500 operations
7. ITRAPDECODER (Line 647-649)¶
- Line Range: 647-649
- Description: Empty stub for trap decoder
- Execution Level: Not specified
- Entry Parameters: Not specified
- Exit Parameters: Not specified
8. 5STDRIV, N500, XN500, NXTMSG, CALLID12 (Lines 656-721)¶
- Line Range: 656-721
- Description: Level 12 - ND-500 communication driver kernel
- Execution Level: Level 12 (Driver level)
- Entry Parameters: Not specified in comments
- Exit Parameters: Not specified
- Comments: Lines 650-655
- Purpose: Main driver kernel for ND-500 communication
9. CHN5STATUS (Lines 730-759)¶
- Line Range: 730-759
- Description: Check and handle ND-500 status
- Execution Level: Driver level
- Entry Parameters:
- X = Message address
- Exit Parameters: Not specified
- Comments: Lines 724-729
- Purpose: Decode ND-500 status and route to appropriate handler
10. HISTSAMPLE (Lines 768-787)¶
- Line Range: 768-787
- Description: Handle histogram sampling
- Execution Level: Driver level
- Entry Parameters:
- X = HIMESS
- Exit Parameters: Not specified
- Comments: Lines 762-767
- Purpose: Update histogram when process is active
11. DECOMESS (Lines 803-819)¶
- Line Range: 803-819
- Description: Decode "ANSWER-MESSAGE" from N500
- Execution Level: Driver level
- Entry Parameters:
- X = Actual message (=MESSAGE)
- B = N500 CPU-datafield
- Exit Parameters: Returns to NXTMSG in driver kernel N500
- Comments: Lines 790-802
- Purpose: Route answer messages to appropriate handlers
12. DECOERRMESS (Lines 835-844)¶
- Line Range: 835-844
- Description: Decode "ERROR-ANSWER" messages from N500
- Execution Level: Driver level
- Entry Parameters:
- X = Actual message
- B = N500 CPU-datafield
- Exit Parameters: Returns to NXTMSG in driver kernel N500
- Comments: Lines 822-834
- Purpose: Handle error answers from ND-500
13. TRAPDECODER, ITRAPDECODER (Lines 859-895)¶
- Line Range: 859-895
- Description: Decode "TRAP-MESSAGES" from N500
- Execution Level: Driver level
- Entry Parameters:
- X = "Trapped" message
- B = N500 CPU-datafield
- Exit Parameters: Returns to NXTMSG in driver kernel N500
- Comments: Lines 847-858
- Purpose: Handle trap conditions from ND-500 (including page faults)
14. SWPDECODER, 5RDTRANSFER (Lines 912-1241)¶
- Line Range: 912-1241
- Description: Swapper message decoder
- Execution Level: ND-500 driver level (level 12)
- Entry Parameters:
- X = Swapper message
- B = ND-500 cpu-datafield
- Exit Parameters: Returns to ND-500 driver kernel N500
- Comments: Lines 898-911
- Purpose: Message demanding swap is marked "swapwait" in status. The swapper is activated with page-fault info and swapped process is marked "swapping"
15. N5FUD, STAPROC, NSTOPROC, SWITPROC, NINSTR, NOUTSTR, GERRC, 5SIBMO, SPRIO, SWMC, DVIO, A5XMSG, B5XMSG, M5TMOUT, 5MTRANS (Lines 1246-1248)¶
- Line Range: 1246-1248
- Description: Forward declarations for multiple driver-level subroutines
- Execution Level: Various (Driver level mostly)
- Purpose: Function declarations for subsequent implementations
16. MCHANDEL, NORMMC, M516, M517, M520, M521, M522, M523 (Lines 1267-1406)¶
- Line Range: 1267-1406
- Description: Decoding monitor call messages from N500
- Execution Level: Driver level
- Entry Parameters:
- X = Actual message (=MESSAGE)
- T = Stop-reason
- B = ND-500 CPU datafield
- Exit Parameters: Returns to NXTMSG in ND-500 driver kernel N500
- Comments: Lines 1251-1266
- Purpose: Main monitor call handler with special treatment for calls requiring level 12 handling (L12MIN=500 to L12MAX=523)
17. N5FUD, COAF, UDFUNC, RIOWA (Lines 1426-1518)¶
- Line Range: 1426-1518
- Description: Activated when MON 333 (UDMA) from ND-500
- Execution Level: Driver level
- Entry Parameters:
- B = ND-500 CPU datafield
- X = Monitor call message in 5MBBANK
- Exit Parameters:
- EXIT: Error, try again on level 1
- EXIT+1: OK, UDRxx RT-PROG started
- Comments: Lines 1415-1425
- Purpose: Handle UDMA (User DMA) monitor call from ND-500
18. NSTOPROC, STAPROC, SWITPROC (Lines 1527-1600)¶
- Line Range: 1527-1600
- Description: Process control: start, stop, and switch processes
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 cpu datafield
- Exit Parameters: Not specified
- Comments: Lines 1521-1532
- Purpose: STAPROC - start process; SWITPROC - switch process (stop current and restart another); NSTOPROC - stop process
19. M5TMOUT (Lines 1609-1678)¶
- Line Range: 1609-1678
- Description: Monitor call M5TMOUT - timeout handling
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 cpu datafield
- Exit Parameters: Not specified
- Comments: Lines 1603-1612
- Purpose: Handle ND-500 timeout monitor call, insert message in time queue
20. NINSTR, XNINSTR (Lines 1680-1682, 1817-1929)¶
- Line Range: 1680-1682 (declaration), 1817-1929 (implementation)
- Description: Monitor call DVIO and DVINST - device input string
- Execution Level: Level 12 (Driver level)
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 1807-1816
- Purpose: Handle device input string operations
21. DVIO, NOUTSTR, OSTRS, PT5RST (Lines 1688-1804)¶
- Line Range: 1688-1804
- Description: Device output and terminal driver routines
- Execution Level: Driver level (Level 12)
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 1682-1687
- Purpose: DVIO/NOUTSTR - output string to device; OSTRS - output string restart; PT5RST - restart ND-500 from terminal output driver (Level 10)
22. GERRC (Lines 1940-1954)¶
- Line Range: 1940-1954
- Description: Get error code after a programmed trap
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 1932-1939
- Purpose: Used after a programmed trap to retrieve error code
23. 5SIBMO (Lines 1965-1991)¶
- Line Range: 1965-1991
- Description: Special monitor call from SIBAS server in ND-500
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 1957-1964
- Purpose: Handle SIBAS (database) server monitor calls
24. SPRIO (Lines 2001-2038)¶
- Line Range: 2001-2038
- Description: Set priority
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 1994-2000
- Purpose: Change process priority, handle timeslicing
25. SWMC (Lines 2047-2051)¶
- Line Range: 2047-2051
- Description: Monitor call to the swapper
- Execution Level: Driver level
- Entry Parameters:
- X = Current message (=MESSAGE)
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 2041-2046
- Purpose: Activate swapper with trap information
26. XMWK (Line 2054)¶
- Line Range: 2054
- Description: XMWK stub
- Execution Level: Not specified
- Purpose: XMSG wakeup routine (implemented later)
27. A5XMSG, B5XMSG (Lines 2062-2414)¶
- Line Range: 2062-2414
- Description: XMSG interface routines
- Execution Level: Level 12 (Driver level)
- Entry Parameters:
- X = Current message
- B = ND-500 CPU datafield
- Exit Parameters: Not specified
- Comments: Lines 2055-2061
- Purpose: Handle XMSG (message system) function calls from ND-500. Supports functions 0-57 including: get/release buffers, read/write headers, open/close ports, send/receive messages, etc.
28. 5MTRANS (Lines 2440-2833)¶
- Line Range: 2440-2833
- Description: Monitor call executed on driver level for disk transfers
- Execution Level: Driver level
- Entry Parameters:
- X = Current message
- B = ND-500 cpu datafield
- Exit Parameters: Not specified
- Comments: Lines 2418-2438
- Purpose: Handle 8 different disk transfer and process control functions:
- Disk transfer, return immediately
- Disk transfer, wait until finished
- Check event, return immediately
- Check event, wait
- Check event, nowait
- Check event, wait
- Start process, return immediately
- Start process and wait
29. CHDISKADDR (Lines 2715-2745)¶
- Line Range: 2715-2745
- Description: Check if disk address is within file
- Execution Level: Not specified (subroutine)
- Entry Parameters:
- B-reg: Pointer to disk access queue element
- Exit Parameters: Not specified
- Comments: Lines 2705-2710
- Purpose: Validate disk address range for file operations
30. 5MRDTRANS (Lines 2759-2833)¶
- Line Range: 2759-2833
- Description: Driver level routine activated after transfer is finished
- Execution Level: Driver level
- Entry Parameters:
- B = Disk access queue element (removed from acc queue)
- Exit Parameters: Not specified
- Comments: Lines 2751-2758
- Purpose: Handle completion of disk transfers, restart waiting processes
31. 5ACTSWAPPER (Lines 2851-2908)¶
- Line Range: 2851-2908
- Description: Activate the ND-500 swapper process
- Execution Level: Must be called in IOF when called from levels other than driver level
- Entry Parameters:
- X = Message requiring service from swapper
- Exit Parameters:
- T, A, D regs are destroyed
- Comments: Lines 2839-2850
- Purpose: Activate swapper for page faults and swap operations
32. XTER500 (Lines 2923-2962)¶
- Line Range: 2923-2962
- Description: Routine to terminate (stop) ND-500
- Execution Level: Monitor level
- Entry Parameters:
- X = -1 (no actual message) or X><-1 (actual message)
- Exit Parameters:
- Error: ND-500 not terminated
- Exit+1: OK, ND-500 stopped
- Comments: Lines 2911-2922
- Purpose: Stop ND-500 CPU, wait for termination or timeout
33. XACTRDY (Lines 2974-3040)¶
- Line Range: 2974-3040
- Description: Activate ND-500 with this message if any CPU is idle or priority higher than current running ones
- Execution Level: Monitor level
- Entry Parameters:
- X = Message
- Exit Parameters: OK
- Comments: Lines 2964-2973
- Purpose: Schedule ND-500 message for execution based on priority
34. XACT500 (Lines 3052-3099)¶
- Line Range: 3052-3099
- Description: Activate the ND-500
- Execution Level: Monitor level
- Entry Parameters:
- B = ND-500 cpu-datafield
- X = Message
- Exit Parameters:
- T, A, D registers are destroyed
- Comments: Lines 3043-3051
- Purpose: Start ND-500 with first waiting message
35. XRSTARTALL (Lines 3113-3240)¶
- Line Range: 3113-3240
- Description: Restart all SINTRAN III programs with messages in the N500 execution queue with an error message
- Execution Level: Level 12 (Driver level)
- Entry Parameters:
- A = Error status
- B = CPU df
- Exit Parameters: Not specified
- Comments: Lines 3102-3112
- Purpose: Error recovery - restart all processes with error status (WM-400)
36. CHACTIVEQ (Lines 3252-3267)¶
- Line Range: 3252-3267
- Description: Check number of active CPUs in the system
- Execution Level: Monitor level
- Entry Parameters: None
- Exit Parameters:
- Exit: No active CPU
- Exit+1: One or more active CPUs
- Comments: Lines 3243-3251
- Purpose: Determine if any ND-500 CPUs are active
37. XKICK500 (Lines 3278-3316)¶
- Line Range: 3278-3316
- Description: Kick the ND-500 via octobus
- Execution Level: Level 12 (must be called in IOF if called from other levels)
- Entry Parameters:
- A = Kick type (in CKICKTYPE)
- Exit Parameters: Not specified
- Comments: Lines 3269-3277
- Purpose: Send octobus kick message to ND-500
38. XRS5CPU (Lines 3328-3343)¶
- Line Range: 3328-3343
- Description: Send octobus "Reset CPU" multibyte message
- Execution Level: Monitor level
- Entry Parameters:
- B = CPU df
- Exit Parameters:
- Exit: Error
- Exit+1: OK
- Comments: Lines 3319-3327
- Purpose: Reset ND-500 CPU via octobus
39. RS5CPU (Lines 3352-3369)¶
- Line Range: 3352-3369
- Description: Reset all active CPUs
- Execution Level: Level 1 (5pit)
- Entry Parameters: None
- Exit Parameters: Not specified
- Comments: Lines 3346-3351
- Purpose: Reset all active ND-500 CPUs in system
40. 5OMBREAD, I5OMBR (Lines 3453-3551)¶
- Line Range: 3453-3551
- Description: Read octobus message from the ACCP
- Execution Level: Monitor level
- Entry Parameters: None (activated by multibyte message received on reserved OMD number)
- Exit Parameters: Not specified
- Comments: Lines 3372-3452 (extensive documentation of error record structures)
- Purpose: Handle error messages from:
- ACCP (memory errors)
- 5000-MP (microprogram errors)
- MF-controller (controller errors)
41. CON5OMD (Lines 3567-3572)¶
- Line Range: 3567-3572
- Description: Connect octobus OMD
- Execution Level: Level 1 (5pit)
- Entry Parameters:
- B = Working field
- Exit Parameters: Not specified
- Comments: Lines 3554-3566
- Purpose: Connect octobus OMD number to receive multibyte error messages from MF controller, ACCP, and 5000 microprogram
42. MFPREPARE (Lines 3586-3598)¶
- Line Range: 3586-3598
- Description: Send OMD number to MF-controller
- Execution Level: Level 1 (5pit)
- Entry Parameters:
- B = Working field
- A = Destination octobus station number
- Exit Parameters: Not specified
- Comments: Lines 3575-3585
- Purpose: Inform MF-controller which OMD N100 can receive messages on. Ack/Nack answer handled by 5OMBREAD
43. CON5IDENT (Lines 3614-3634)¶
- Line Range: 3614-3634
- Description: Connect octobus Ident
- Execution Level: Level 1 (5pit)
- Entry Parameters:
- B = CPU datafield
- X = Working datafield
- Exit Parameters: Not specified
- Comments: Lines 3601-3613
- Purpose: Connect octobus Ident to receive multibyte messages/kicks from ACCP/Samson. Send 'alive' message to verify ACCP presence. Ack/Nack handled by 5OMBREAD
44. MBSUSPROC (Lines 3648-3657)¶
- Line Range: 3648-3657
- Description: Check if a process should be suspended
- Execution Level: Called from MCHANDLE
- Entry Parameters:
- B = ND-500 CPU datafield
- N5MESSAGE = Addr of actual message
- Exit Parameters: If suspended, returns to NXTMSG in main ND-500 driver
- Comments: Lines 3637-3647
- Purpose: Suspend process if system spends too much time on higher interrupt levels (more than 1 second)
45. 5GTDF (Lines 3670-3693)¶
- Line Range: 3670-3693
- Description: Get terminal data field
- Execution Level: Not specified
- Entry Parameters:
- X = ND-500 message addr
- Exit Parameters:
- Exit: Not terminal or terminal not reserved by caller
- Exit+1: A = Addr of terminal input datafield, D = Addr of terminal output datafield
- Comments: Lines 3660-3669
- Purpose: Validate and retrieve terminal datafield addresses
46. INSMONCO (Lines 3702-3713)¶
- Line Range: 3702-3713
- Description: Restart ND-500 process after input bytes written to data memory
- Execution Level: Driver level
- Entry Parameters: None (uses context from message)
- Exit Parameters: Not specified
- Comments: Lines 3696-3701
- Purpose: Handle completion of quick instring monitor call 504
47. XMWK, N5WAKE (Lines 3727-3739)¶
- Line Range: 3727-3739
- Description: Wake up ND-500 process
- Execution Level: Driver level
- Entry Parameters:
- B = ND-500 message
- Exit Parameters: Not specified
- Comments: Lines 3716-3726
- Purpose:
- XMWK: Started from xmsg when message arrives on port belonging to ND-500 process
- N5WAKE: Started from monitor call handling on 5pit
48. P12DCN (Lines 3746-3749)¶
- Line Range: 3746-3749
- Description: Driver level routine to disconnect
- Execution Level: Driver level (Level 12)
- Entry Parameters: Not specified
- Exit Parameters: Not specified
- Comments: Lines 3742-3745
- Purpose: XMSG disconnect routine
49. ST0PSYS (Lines 3759-3802)¶
- Line Range: 3759-3802
- Description: Continuation on monitor level of STOP-SYSTEM command
- Execution Level: Monitor level
- Entry Parameters: None
- Exit Parameters: Not specified
- Comments: Lines 3752-3758
- Purpose: Terminate all ND-500s (if any) and simulate power failure. Clears caches, dumps data, resets CPUs, and triggers power fail sequence
Summary Statistics¶
- Total Subroutines Documented: 49
- Main Categories:
- Driver Level (Level 12): ~30 APIs
- Monitor Level: ~12 APIs
- Level 1/2 (Interrupt levels): ~7 APIs
- Key Functional Areas:
- Process Control (start, stop, switch, restart)
- Message Handling (execution queue, dispatch)
- Monitor Call Processing (MCHANDEL and related)
- Swapper Control (page faults, disk I/O)
- XMSG Interface (message system)
- Device I/O (terminal, disk)
- Error Handling (traps, timeouts, restarts)
- Octobus Communication (kicks, error messages)
- CPU Control (activate, terminate, reset)
- System Control (histogram, power fail, stop system)
Notes¶
- Many routines require specific execution levels and interrupt states (IOF/ION)
- The file implements a complete ND-500 shadow processing system for ND-100
- Extensive use of assembly-like instructions (LDATX, STATX, etc.)
- Complex interaction between multiple privilege levels (1, 2, 10, 12, 14)
- Sophisticated error handling and recovery mechanisms
- Multi-CPU support with priority-based scheduling
Generated: 2025-10-13 Source File Path: Source Code\Sintran L\NPL\MP-P2-N500.NPL