CPU TYPE: three different things with the same name¶
The question this answers: when you install SINTRAN and run NEW-SYSTEM, it
asks for a CPU NUMBER and a CPU TYPE. What is the CPU TYPE, and does it
affect anything?
Short answer: we did not find a use for it. Nothing in the kernel reads it, and it is not consumed at boot either - on an ND-110/120, boot writes it. It is an identity code from ND's order form, stored so it can be displayed and exported. Answering it or pressing RETURN makes no difference to how the system runs.
It is not "boot information". The only ways the value leaves the kernel are
the @LIST-TITLE banner and MON 262, which copies the whole system-info table to
any program that asks. So if anything uses it at all, that something is outside
the kernel - a utility or a layered product. See section 5.
The two other things called "CPU type" are both detected automatically and are heavily used.
Investigated 2026-08-28. Companion to
03-CPU-DETECTION-AND-INITIALIZATION.md,
which covers SYSEVAL, GCPUNR and the full HWINFO layout.
1. The three meanings, side by side¶
| Where it comes from | Values | Read by the OS? | |
|---|---|---|---|
HWINFO(0) high byte |
Probed at every boot - VERSN plus deliberately executing illegal instructions and catching the level-14 trap |
0-7 (NORD-10 / ND-100 / ND-110 / ND-120, x 48- or 32-bit float) | Constantly - 12 branch sites |
HWINFO(2) |
Typed at NEW-SYSTEM, or from the backplane PROM on ND-110/120 |
100, 102, 500, 502, 503, 5561 ... | Never |
5CPUTYPE |
Probed from the ND-100 bus - which coprocessor interface answers | OLD500=1, SAMSON=3 |
Yes - selects the transport |
Only the middle one is ever typed by a human, and it is the only one nothing depends on.
2. HWINFO(2) - the one NEW-SYSTEM asks for¶
2.1 The prompt¶
From (SYSTEM)NEW-SYSTEM:PROG, strings carved from VSXL3.IMG
(tools/boot-floppy/INSTALL-PROCEDURE.md) [VERIFIED]:
> Give CPU number (in Decimal):
> Give CPU type (in Decimal):
The NEW-SYSTEM sub-command that does it is CPU-UPDATE - "update CPU number
and CPU type" (L-version release information). On older media the job had its own
program, CPU-TYPE:PROG (H-version floppies, 1984).
It is optional. The System Supervisor manual walks through an installation on
two named example machines - SAMBA, an ND-570/CX running VSX, and MAMBA, an
ND-100 running VSE (ND-30.003.007, line 4827). In the SAMBA walkthrough the
installer presses RETURN at the CPU type prompt, and the manual says:
"If ND has given you a CPU type (see your SINTRAN order), then you must give this as input here! The CR given above means that no CPU type was assigned for SAMBA!"
So a machine could be shipped with no CPU type assigned at all - which is itself evidence about how much the field mattered.
The CPU number prompt is not optional in the same dialogue; the manual marks the entered value as "the correct CPU number for SAMBA".
2.2 The whole life of the value¶
operator types a number
|
v
33CPU generation symbol, beside 33CPN for the number
|
v
HWINF+2/ 33CPU assignment in START-PATCH-FILE:MODE
|
v
HWINFO(2) word 3 of the system-info array, address 004054B
|
+--> @LIST-TITLE prints "CPU TYPE: <n>"
+--> MON 262 GetSystemInfo copies the whole 12-word table out
From NPL-SOURCE-2/BOUT-6.SYMB, verbatim:
"-33CPN; 33CPN:005551 % CPU NUMBER
"-33CPU; 33CPU:000146 % CPU TYPE
000146B = 102 decimal, an ND-100 dual-CPU system type. The generation program
clears both so the installer is asked - NPL-SOURCE/NPL/0.SIN-GEN.NPL:
% STANDARD SYSTEM, FORCE NEW-SYSTEM TO ASK FOR CPU-NUMBER
)KILL 33CPU 33CPN
33CPU=0; 33CPN=0
2.3 On an ND-110 or ND-120, the PROM overwrites it¶
SUBR GCPUNR in PH-P2-OPPSTART.NPL - "ROUTINE TO GET CPU NUMBER FROM BACK
WIRING PROM. CALLED ONLY IF 110/120 CPU" - reads three values from the
backplane PROM, not one:
IF INF3><52652 THEN EXIT FI % wrong PROM, give up (52652B = 0x55AA)
IF INF0><-1 THEN
A=:SYSNO=:FCPUN; 1=:PRFLAG % CPU NUMBER (PRFLAG is used by NEW-SYSTEM)
FI
IF INF1><-1 THEN A=:HWINFO(2) FI % CPU TYPE
IF INF2 SHZ -10><377 THEN A=:NLEGU FI % NUMBER OF LEGAL USERS
So on a 110/120 with a programmed PROM, whatever was typed at NEW-SYSTEM is
replaced at every start-up. Note the third item: the same PROM carries the
number of legal users.
2.4 Three separate proofs that nothing uses it¶
-
One write, zero reads. Across roughly 70 NPL source files in two SINTRAN versions (
NPL-SOURCEfor L/M,NPL-SOURCE-2for J),HWINFO(2)appears exactly twice: the descriptive comment, and the single store inGCPUNR. No comparison, no branch, no table indexed by it. -
The J-version source says so.
NPL-SOURCE-2/NPL/23-WINCHESTER-POF.NPL:% 2 HWINFO(1) NOT USED % 3 HWINFO(2) NOT USED -
~~A real machine runs with nonsense in it.~~ WITHDRAWN 2026-08-28 - this was my error.
SINTRAN-STRUCTURES.mdrecords a live image withHWINFO(2) = 023233B= 9883 decimal, and I called that "not a valid system type". It is valid: 9883 = ND-110 Satellite model T9, per the value table in ND-830053.3 (section 2.6 below). The field was correctly set and the machine was a Satellite T9. This is not evidence of anything.Proofs 1 and 2 stand on their own and are unaffected.
Its only consumers are display and export. The carved analysis of MON 262
(tools/sintran-segment-carver/.../262B-GetSystemInfo/) shows the worker CPUST
is a range check plus two MOVEW block copies - it inspects no individual field.
2.6 What the values mean - the authoritative table¶
ND-830053.3 EN, "SINTRAN III How to order it", November 1988, section 1 CUSTOMER INFORMATION, defines the field. Verbatim:
- CPU type: This is the CPU type of the system. You will find the CPU type stated on your order confirmation. [...] The symbol mark generated is 33CPU.
- CPU no.: The system number must be filled in. It will identify the SINTRAN III later on when a new SINTRAN III needs to be installed. The symbol mark generated is 33CPN.
So CPU TYPE is a hardware model code, taken from the order confirmation, and
its only stated product is the generation symbol 33CPU.
The "some common values" table from that manual (digit noise from OCR marked ?):
| Code | Machine |
|---|---|
| 3080 | ND-110 Compact model A0 |
| 3095 | ND-110/CX Compact model B |
| 3740 | ND-110/CX system |
| 5230 | ND-5200 ES model L |
| 5700 | ND-5700 ES model L |
| 5800 | ND-5800 ES model L |
| 5904 | ND-5900 ES model L4, four CPUs |
| 9883 | ND-110 Satellite model T9 |
A representative handful. The full catalog of 98 codes - with configurations, where each is documented, and how many machines carry it - is ../../History/machines/TYPES.md. It is kept in one place on purpose; this document does not duplicate it.
These are the same codes as the product numbers catalogued in
History/machines/TYPES.md and the type column of History/machines/MACHINE-LIST.md.
The /SCSI pairs and the Compact/System split explain several codes that catalog
could not resolve.
Two things this settles:
- The machines COMSON-A and COMSON-B carry type
5795- so they were ND-5700 Compact model B1 machines. 3740, against NODEA, NODEB and INTERCOM on the machine list, is an ND-110/CX system.
And one negative worth recording: in all 76 pages of the order manual, CPU type and CPU number appear only in the customer-information header. They are not among the SYSTEM PARAMETERS (RT-PROG, SEGM, SEMAPHORE, INTERNAL DEVICE, DEVICE BUFFER and so on) that actually size the generated system. Nothing in the manual says CPU TYPE changes any generated code.
2.6b A note on @LIST-TITLE¶
The output changed between versions. On SINTRAN III/VSX it prints a full
banner, verbatim from Installation/Installation-Description/ND-211297-1-EN.md:
@LIST-TITLE
SINTRAN III - VSX/500 K HANS
STANDARD CONFIGURATION: E
BETA TEST (WORK MODE NO.): 312B
REVISION (PATCH FILE NO.): 8000B
CPU TYPE: 100
CPU NUMBER: 1644
GENERATED: 13.14.00 15 SEPTEMBER 1987
On the older NORD-10/S documentation (ND-60.128.01) the whole output is a
single identification string, NORD-10/S - 781012, with no separate CPU type
line. So the CPU type became visible to the operator somewhere between the two.
2.7 The CPU number itself encodes the type¶
From the archive's own column legend:
"CPU no - The CPU number of a given ND computer. Usually tttt.nnnnn where tttt is the computer type or model, and nnnnn is the actual CPU number."
So a full ND system number carries the model as a prefix - which is why the
SINTRAN order-form archive is filed in 100, 500, 900 and xxx sets by that
prefix.
2.5 Observed real values¶
| Value | Machine | Source |
|---|---|---|
| 100 | "HANS", VSX/500 K | Installation/Installation-Description/ND-211297-1-EN.md |
| 102 | generation symbol default | BOUT-6.SYMB |
| 503 | "SNORRE", ND-570/CX | Reference-Manuals/SINTRAN III Haandbok for driftsansvarlig.md |
These are system-type codes, the same family of numbers as the type column in
History/machines/MACHINE-LIST.md and the catalog in History/machines/TYPES.md.
3. HWINFO(0) - the CPU type the kernel actually uses¶
Never asked for. SUBR SYSEVAL works it out at every start-up by probing:
T:=0; A:=1; *NLZ 20- 32- versus 48-bit floating pointCPSTA/\10000 SHZ -13+T SH 10- NORD-10 versus ND-100, from the status register- illegal-instruction traps on level 14 (
CLEV14) around140130(BFILL),142700(GECO),143500(SLWCS),ICLEP,WGLOB- fingerprinting the instruction set by seeing which instructions fail *VERSN- microprogram version intoHWINFO(1), andIF T BIT 17 THEN A+1000=:CHWINFO FI % ND-120?
This one is load-bearing. PH-P2-OPPSTART.NPL:314:
IF HWINFO(0)/\377 < 2 THEN CALL ERRFATAL FI % MUST BE ND-100/CX, ND-110/CX OR ND-120/CX
plus branches at lines 313, 315, 1197, 1516, 2591, 2613, in PH-P2-RESTART.NPL
(631, 647, 653, 1041), 12-EX-MRES-SINA.NPL:1386 and 14-MRES-SEGADM.NPL:926.
There is also a bit test for a Rask CPU in CC-P2-N500.NPL:714:
1HWINF; *RASK@3 BLDA DA % K-bit set if Rask-cpu (RASK=000012)
Full value tables are in 03-CPU-DETECTION-AND-INITIALIZATION.md section 6.2.
4. 5CPUTYPE - detected from which coprocessor interface answers the bus¶
A third, unrelated field, in the ND-500 CPU datafield. It is not a processor identity - it is the identity of the interface found on the ND-100 bus, from which the coprocessor generation follows.
SUBR CH5CPUPRESENT, PH-P2-OPPSTART.NPL lines 3893-3943:
T:=HDEV+RSTA5; *TRA IIC % arm IOX error handling
A:=200; *TRR IIE; IOXT; TRA IIC % read the DMA status register
IF A=0 THEN % no IOX error = the 3022 answered
CPUAVAILABLE/\140000\/OLD500 % set CPU type to OLD500
A BONE 5ALIVE
MIN COLD
ELSE
...
T:=100406; *IOXT; TRA IIC % read Octobus status at 100406
IF A=0 THEN % no IOX error = octobus answered
...
CPUAVAILABLE/\140000\/SAMSON % set CPU type to SAMSON
So:
| Probe | Answers? | Result |
|---|---|---|
DMA status register at HDEV+RSTA5 - the PCB 3022 bus interface |
yes | OLD500 |
Octobus status at IOX 100406 |
yes | SAMSON |
| neither | - | not present |
RSTA5 is offset +2 in the 3022 register map, "Read Status Register" - so the
first probe is literally the 3022 board answering.
Notes that matter when reading this:
- It names the interface, not the processor. An ND-500/1 and an ND-500/2 both
read as
OLD500. Samson and Rallar both sit on octobus, so Rallar also reads asSAMSON. - The routine loops over up to four CPU datafields (
S5CPUDFtoE5CPUDF) with two short-circuits: if a SAMSON was already found the DMA probe is skipped, and if DMA was found first the octobus probe is skipped. A system is assumed to be all one kind. -
Unlike
HWINFO(2), this is read later -MP-P2-N500.NPL:265:IF CPUAVAILABLE/\5CPUTYPE><SAMSON THEN % DMA interface?plus around nine more sites in
MP-P2-N500.NPL,RP-P2-N500.NPL,PH-P2-RESTART.NPL(100, 112) andMP-P2-PERF-SAMP.NPL(370, 488).
The same detect-by-probing philosophy appears three times over: illegal
instructions for the CPU, IOX errors for the coprocessor bus, and a magic word
(52652B) for the backplane PROM. ND's way of identifying hardware is to try it
and see what fails.
5. So what IS it for? - the honest position¶
No purpose was found. That is the finding, and it should not be dressed up.
What can be said positively:
| Question | Answer |
|---|---|
| Is it read during boot? | No. On ND-110/120 boot writes it from the PROM |
| Is it read by the kernel at all? | No. Zero read sites in ~70 NPL files, two versions |
| Is it needed for the system to run? | No. A live image has an invalid value and runs fine |
| Can anything read it? | Yes - @LIST-TITLE prints it, MON 262 exports it to any program |
| Do we know of anything that does? | No |
Because MON 262 hands the whole table to user programs, any consumer would be outside the kernel - and the kernel is the part we hold as source. That is the one honest gap.
What the defining manual says it is for: identifying the system. The CPU number entry says it "will identify the SINTRAN III later on when a new SINTRAN III needs to be installed" - i.e. these fields exist so ND can tell which machine a given SINTRAN belongs to. That is a records purpose, not a runtime one, and it fits everything observed.
Candidates for a runtime use, all unverified, listed so nobody has to re-guess them:
- Licensing. The strongest hunch, and still only a hunch. The number of legal users sits in the same backplane PROM immediately beside the CPU type, and the value itself comes off ND's order form - the same paperwork that records what was purchased. A licence check asking "which model is this?" via MON 262 would fit the shape. No such check has been found.
- Service and inventory. The value matches the confirmed order and is printed
by
@LIST-TITLE, which is what a field engineer would read out. This needs no code at all, and would explain why nothing consumes it. - A layered product - SIBAS, COSMOS, NOTIS - gating a feature on system type.
How to settle it: search the carved binaries of NEW-SYSTEM:PROG,
S3-CONFIG and the layered products for a MON 262 call that then tests bytes 6:7
of the returned table. Nothing else will close it.
6. Practical answer¶
- Answer the CPU TYPE prompt if ND gave you one on the order form; otherwise press RETURN. Nothing in the kernel behaves differently either way.
- The CPU NUMBER is different - it is load-bearing.
MP-P2-1.NPL:232branches on it (IF A=SYSNO THEN AREG; EXITA FI % LOCAL CONNECTIONS ALWAYS OK), so it matters for COSMOS and XMSG routing. - On an ND-110 or ND-120 the backplane PROM supplies the CPU number, the CPU type and the number of legal users, and overrides what was typed.
7. What is still unverified¶
- The kernel is what we hold in NPL.
NEW-SYSTEM:PROG,S3-CONFIGand layered products - SIBAS, COSMOS, licence checks - exist here only as carved binaries. A utility could still readHWINFO(2); nothing in the kernel does. - Licensing is the one plausible remaining consumer. The number of legal users sits beside the CPU type in the same backplane PROM, which makes a licence check a reasonable place to look next.
- No document found anywhere states an enumeration of legal CPU TYPE values. The
list
(100, 102, 500, 502, 5561..)is a comment in the source, ending in "..".
8. Sources¶
Primary ND documents (in this repo):
Operations/SINTRAN/ND-30.003.007 EN SINTRAN III System Supervisor.md- the install dialogueReference-Manuals/ND-820023-1-EN SINTRAN III-VSX System Documentation.md- the system-info arrayReference-Manuals/ND-860228-2-EN SINTRAN III Monitor Calls.md- MON 262 GetSystemInfoSINTRAN/Release-Documentation/- K, L, M and N release information,CPU-UPDATEReference-Manuals/SINTRAN III Haandbok for driftsansvarlig.md- the Norwegian twin
Source code:
SINTRAN/NPL-SOURCE/NPL/PH-P2-OPPSTART.NPL-SYSEVAL,GCPUNR,CH5CPUPRESENTSINTRAN/NPL-SOURCE/NPL/0.SIN-GEN.NPL- the generation blankingSINTRAN/NPL-SOURCE-2/BOUT-6.SYMB-33CPUand33CPNSINTRAN/NPL-SOURCE-2/NPL/23-WINCHESTER-POF.NPL- the "NOT USED" annotation
Carved and derived:
tools/boot-floppy/INSTALL-PROCEDURE.md- prompt strings from the binarytools/boot-floppy/patches/README.md-HWINF+2/ 33CPUSINTRAN/ND500/ND500-ND5000-INTERFACE-COMPREHENSIVE-GUIDE.md- the detection flowSINTRAN/SINTRAN Structures/SINTRAN-STRUCTURES.md- the live image with 023233B
See also: 03-CPU-DETECTION-AND-INITIALIZATION.md for the full HWINFO layout and detection flowcharts, and ../../History/machines/TYPES.md for what the system-type numbers mean as product codes.