ND-10130 — Xmessage for SINTRAN-III/VS¶
Status: IN-PROGRESS — real J-version floppy decoded, complete load/start scripts recovered
| Field | Value |
|---|---|
| ND article number | ND-10130 |
| Product name | X-Message for SINTRAN III/VS |
| Functional category | Networking & Communications (inter-task messaging) |
| CPU target | ND-100 |
| Related products | ND-10373 X-Message (Inter System) — see ../ND-10373/README.md, the networked/file-transfer-capable sibling of this base single-system product. Historical note: this is XMSG version J (1985) — an early revision, superseded many times over; the current live revision this repo's XMSG reverse-engineering project (SINTRAN/XMSG/) works against is L03. This floppy predates that work by years and is unrelated to it beyond sharing the product name. |
What is known — real floppy, decoded¶
Floppy 10130J00 (downloaded via NDwiki, imaged by Torfinn "Tingo" Ingolfsen) mounts cleanly:
XMSG-IN-S-J00:COM installer command file (text, not decoded here)
XMSG-01-S-J00:COM, XMSG-02-S-J00:COM further installer command files
XCOM-L01:PROG a compiled command-processor program
XMSG-LOAD-S-J00:MODE real, decoded — loads the kernel and XROUT onto RT segments (below)
XMSG-START-S-J00:MODE real, decoded — example startup/configuration script (below)
XMSG-START-S-J00:BATC real, decoded — example batch job wrapping the above (below)
XMSG-SYSTABS-J00:SYMB, XMSG-POFTABS-J00:SYMB system/port-table symbol files
XMSG-VALUES-J:SYMB, XMSG-PL-VALUES-J:INCL constant definitions (SYMB for assembler, INCL for PLANC)
XMSG-LIBRARY-J00:BRF the programmer call library
XMSG-KE-S-CX-J00:BPUN, XMSG-XR-S-CX-J00:BPUN, XMSG-SY-S-CX-J00:SYMB kernel/XROUT/symbols, CX CPU variant
XMSG-KE-S-NX-J00:BPUN, XMSG-XR-S-NX-J00:BPUN, XMSG-SY-S-NX-J00:SYMB kernel/XROUT/symbols, NX CPU variant
XMSG-COMMAND-J00:PROG the interactive XMSG-COMMAND configuration program
Loading the XMSG kernel — real, decoded XMSG-LOAD-S-J00:MODE¶
Source: byte-for-byte decode (byte & 0x7F). [MODE]
@CC
@CC ***************************************************
@CC ** Load or reload XMSG version J. **
@CC ***************************************************
@CC *
@CC * 1) The product (BPUN) files must have been installed properly.
@CC * If not, read the Product Description Sheet supplied with
@CC * the XMSG floppy disks and install XMSG.
@CC * 2) Unless the XMSG files was copied to user UTILITY, edit this
@CC * file accordingly:
@CC * Substitute (UTILITY)
@CC * with (Name of user which has the XMSG :BPUN files).
@CC
@CC * Now you can (re)load XMSG:
@CC * 1. Load XMSG-KERNEL onto its segment
@CC * 2. Load XMSG-XROUT onto its segment
@CC * 3. Create foreground programs XROUT and XTRACE
@CC
@SINTRAN
@STOP-XMSG
@EXIT
@HOLD 0 0
@HOLD 3 2
@UNFIX 33
@RT-LOADER
CLEAR-SEGMENT 33
YES
YES
SET-PAGE-TABLE 2
NEW-SEGMENT 33,2,ND,,,,,
READ-BINARY (UTILITY)XMSG-KERNEL-J:BPUN,,,,
END
CLEAR-SEG 34
YES
YES
SET-PAGE-TABLE 2
NEW-SEG,34,2,DM,,,,
READ-BINARY (UTILITY)XMSG-XROUT-J:BPUN,,,
YES
END
SET-PAGE-TABLE 2
DECLARE-PROGRAM XROUT,,,
CHAN-RT-DESC XROUT,100,34,33,0,,,
DECLARE-PROGRAM XTRACE,,,,
CHAN-RT-DESC XTRACE,100,34,33,4,,,
END
WRITE-SEG 33,,,,,,
WRITE-SEG 34,,,,,,,,,
EXIT
@CC
@CC * 4. Patch in IMAGE and RESIDENT to flag XMSG loaded (XMSGU+4)
@CC
@LOO-AT RES
165/-1
.
@LOO-AT IMAGE
165/-1
.
@CC
@CC And now you can start XMSG by using the SINTRAN-SERVICE command START-XMSG.
@CC
Reading it: XMSG's kernel and XROUT are loaded as two RT segments (33 and 34) via
@RT-LOADER, each declared as a foreground program (XROUT, XTRACE) with CHAN-RT-DESC. A
direct memory patch (@LOO-AT RES/@LOO-AT IMAGE, offset 165, value -1) flags XMSG as loaded at
a fixed offset from the symbol XMSGU — a real, low-level SINTRAN system-table patch, not a
documented command.
Starting and configuring XMSG — real, decoded XMSG-START-S-J00:MODE¶
Source: byte-for-byte decode, in full. [MODE]
@cc
@cc ********************************************************************
@cc ** XMSG startup mode file for ND-xxx *** (XMSG-START-S-J:MODE). **
@cc ********************************************************************
@cc
@cc This is an EXAMPLE of what a typical XMSG startup file looks like.
@cc It contains a superset (in most cases) of what a user would normally
@cc require. The XMSG startup file would normally be invoked by
@cc one of the INITIAL-COMMANDs
@cc
@cc First we start XMSG and wait while the segments get fixed.
@SINTRAN
@STOP-XMSG
@EX
@HOLD 0 0
@HOLD 2 2
@SINTRAN
@START-XMSG
@EX
@HOLD 0 0
@HOLD 3 2
@cc
@cc We now get the XMSG-COMMAND program to configurate the system.
@cc
@(UTILITY)XMSG-COMMAND
SET-PRI Request XMSG to become a privileged task
''
'' Open the trace file and start tracing:
''
'OPEN-TRACE,,, Open (RT)XMSG-TRACE:DATA (10 pages contiguous)
'' Start tracing these events:
'ENA-TRA,,8 User calls to XMSG
'ENA-TRA,,9 User return from XMSG calls
''
'' Define XMSG dump files.
'' (If XMSG crash, XMSG will be dumped for post-mortem investigation)
''
'DEFINE-DUMP-FILES,,,, The files (RT)XMSG-SEGMENT-DUMP:DATA,
'' (RT)XMSG-TABLES-DUMP:DATA
'' (RT)XMSG-BUFFER-DUMP:DATA
'' are defined as dump files.
''
'' Define XMSG restart file and enable auto-restart of XMSG.
'' (If XMSG crash, the restart file will be appended to the batch queue.)
'' (Note that the output file of type OUT must exist.)
''
'DEFINE-RESTART-FILES (UTI)XMSG-START-S-J:BATC,(SYS)XMSG-START:OUT
'AUTO-RESTART-ON
''
'' We now define symbolic names of our system:
''
'DEF-REMOTE,,DOLE 284
'DEF-REMOTE,,ND-284 284
''
'' See how things are going:
''
'LIST-NAMES,,,,
''
'' Disable the trace events that we do not need at runtime.
''
'DIS-TRA,,8
'DIS-TRA,,9
''
'' Close the trace file and stop tracing:
''
'CLOSE-TRACE,,,
''
'' Terminate XMSG command-program:
''
EXIT
Reading it: real XMSG-COMMAND verbs confirmed — SET-PRI (privileged task), OPEN-TRACE/
ENA-TRA/DIS-TRA/CLOSE-TRACE (event tracing), DEFINE-DUMP-FILES (post-mortem crash dumps),
DEFINE-RESTART-FILES/AUTO-RESTART-ON (auto-restart on crash, re-queues the batch job named
below), DEF-REMOTE (defines a symbolic system name mapped to a numeric node — here DOLE/
ND-284 both mapped to node 284), LIST-NAMES. Lines prefixed '' are commented-out
explanatory text inside the script; lines prefixed a single ' are commented-out commands left
as a hint for what else is available.
The batch wrapper — real, decoded XMSG-START-S-J00:BATC¶
@ENTER SYSTEM,<password>,<project password>,<maximum time>
@cc ...
@MAC
%
% Reset output file byte pointer
%
10/ MON 143; COPY DT SD; COPY DA; COPY DD; MON 73; MON 0; MON 74; MON 0; MON 0
10!
@cc Run the XMSG startup file as a mode job.
@MODE (UTILITY)XMSG-STARTEX-J:MODE,,
@cc Terminate batch file with double ESCAPE:
This is exactly the file DEFINE-RESTART-FILES above points auto-restart at — confirms the
crash-recovery loop is real: XMSG crash -> restart file re-queued -> @ENTER SYSTEM -> runs the
startup :MODE job again via @MODE.
Documentation¶
- Product Information (PI-sheet): ../../Product-Info/ND-10130-A1-EN.md
Provenance & open items¶
- Source: one real floppy image, downloaded via NDwiki and decoded in this session
(
ndfs -t/ndtool -xfor listing/extraction,byte & 0x7Ffor all three script files). - TODO:
XMSG-IN-S-J00:COM/XMSG-01-S-J00:COM/XMSG-02-S-J00:COM(the actual product installer command files, as opposed to the load/start scripts above) were not decoded.
Parent: ../README.md (Software catalog)