Boot-sector creation - laying the page-0 bootstrap onto a bootable device¶
Scope: how the raw bootstrap machine code at the front of page 0 of a
SINTRAN III directory device is produced, per device class, so an external
"create-directory" tool can emit a bootable image for floppy, SMD, Winchester,
or SCSI. This is the boot half of making a device. It is separate from the
filesystem-structure creation (label / extended info / bit file / object file /
user file), which is documented in create-directory.md.
The two are independent steps writing to disjoint parts of page 0 - see
on-disk-format/boot-sector.md for the page-0
map and the boot-format detector.
Rule of evidence (same as the rest of the filesystem docs):
- VERIFIED - proven from real disk-image bytes, the ND-100 opcode table / disassembly, or official ND documentation.
- INFERRED - deduced from a driver source or a secondary source, not yet byte-proven from a real boot image of that exact device class.
- OPEN - not resolvable from the artifacts on hand; needs a specific missing image or file.
All ND-100 values are octal; on-disk multi-byte values are big-endian
(the ND-100 is a big-endian machine). The disassembler nd100-dis is
little-endian, so disk words are byte-swapped before decode; the swap is a tool
artifact only and never appears on disk.
1. Two independent steps: boot vs filesystem¶
Page 0 (2048 bytes / 1KW) is shared:
| Byte range | Word (octal) | Owned by | This document |
|---|---|---|---|
| 0 .. 1999 | 0B .. 1747B | boot code (BPUN / FLOMON / raw binary bootstrap, or zero) | yes |
| 2000 .. 2015 | 1750B | extended-info block (checksum, capacity) | no - see create-directory.md |
| 2016 .. 2047 | 1760B | master block / directory label | no - see create-directory.md |
A device can be:
- filesystem + bootable - both halves written (a system disk, e.g.
PACK-ONE); - filesystem, not bootable - boot area zero or space-filled (a data disk);
- bootable, no filesystem - e.g. a stand-alone FLOMON floppy that carries a bootstrap but no directory.
So the boot area is written by its own mechanism, quite apart from
@CREATE-DIRECTORY. The rest of this document is only about bytes 0 .. 1999.
2. The hardware that consumes the bootstrap (why the format is what it is)¶
The ND-100 CPU firmware (the OPCOM / operator's-communication microprogram) is what actually loads the bootstrap. There are exactly two hardware load formats (ND-06.014.2A, §4.2.5, "Bootstrap Loaders", VERIFIED):
- Binary format load (bit 13 = 0). Reads an ASCII-preamble +
!+ binary load record stream from a character/tape-style device (the floppy controller presents itself this way). This is the BPUN / FLOMON family. - Mass storage load (bit 13 = 1). "1K words will be read from mass storage address 0 into main memory starting in address 0. After a successful load, the CPU is started in main memory address 0." (ND-06.014.2A §4.2.5.2, VERIFIED). This is the raw binary bootstrap family (SMD / Winchester / SCSI hard disks).
Which one runs is chosen by the Automatic Load Descriptor (ALD) thumbwheel
(or the typed <addr>& / <addr>$): bit 13 = mass-storage vs binary, bits 0-10 =
the controller's lowest device address (ND-06.014.2A §4.2.5.3). VERIFIED ALD
presets (ND-06.014.2A p.232, cross-checked against the nd100x emulator
src/cpu/cpu_types.h ALD table):
| ALD | Octal value | Load type | Device |
|---|---|---|---|
| 14 | 1560 |
Binary load from 1560 | Floppy (BPUN/FLOMON) |
| 13 | 20500 |
Mass-storage load from 500 | Winchester disk |
| 12 | 21540 |
Mass-storage load from 1540 | SMD disk |
| 6 | 101560 |
Binary load from 1560 | Floppy (SCSI systems often boot via a floppy first) |
The consequence for the format (VERIFIED):
- A hard-disk bootstrap must be a raw ND-100 program occupying page 0,
because the firmware copies exactly 1KW to address 0 and jumps to address 0.
There is no header, no checksum - word 0 is the first instruction executed.
That is why every hard-disk boot area begins with
PIOF/IOF(disable interrupts + paging) before touching the controller. - Only 1KW is loaded by firmware. A full system is far larger than 1KW, so the page-0 program is a first-stage loader: it programs its own controller to read the second-stage loader/system from later disk blocks into memory and jumps to it.
- A floppy bootstrap is a BPUN stream (preamble +
!+ load record), because the firmware runs the binary-format loader against the floppy controller.
3. SMD hard disk - REAL bytes (SMD0.IMG / PACK-ONE)¶
VERIFIED from ~/repos/nd100x/SMD0.IMG (volume PACK-ONE). The page-0 boot
program is byte-identical in the sibling images SMD0-org.IMG and
SMD0-L.IMG (all three are PACK-ONE).
3.1 Extract it¶
# page 0 = first 2048 bytes; boot code = bytes 0..1999 (label starts at 2000)
dd if=SMD0.IMG of=smd_p0.bin bs=2048 count=1
# byte-swap to little-endian for nd100-dis (tool requirement only; NOT on disk)
python3 -c "d=bytearray(open('smd_p0.bin','rb').read());d[0::2],d[1::2]=d[1::2],d[0::2];open('smd_p0.le','wb').write(d)"
nd100-dis -a -o -b 0 smd_p0.le
3.2 HEX BLOB (big-endian, exactly as stored on disk)¶
First 512 words (1024 bytes) of the boot region. The live boot program actually runs on to ~word 1061B; this half-page covers the prologue and the full controller I/O sequence and is the embeddable "boot sector". (Zero runs are the in-body parameter/scratch area the loader fills at runtime.)
0000: d105 d001 f10a d043 f100 d049 f13f a802
0010: 4813 d04a d048 580f 4e0c 0e0c b5fe 4809
0020: 600c 0807 580b 4e05 0e26 b5fe aa01 fd5e
0030: 00c0 fe00 ff5e 3f00 02f0 fd10 4839 cc6b
0040: 501f f6ff c006 a806 f5c4 cc69 f100 21c8
0050: a818 f6ff c006 a806 f5d2 cc69 f100 21c8
0060: a810 f6ff c006 a80d f222 ba08 a8fe a8fe
0070: a808 007e 8273 0000 0100 7f83 0000 0001
0080: 58f9 51ff d806 48fb cc2e 28f6 baf7 a8f9
0090: a802 a80b 080c d086 d086 d086 d086 eb64
00a0: fa15 a8fa 4804 a8f3 c789 aa03 0000 fde1
00b0: 45a5 0000 0200 0012 005a 0336 0335 0008
... (mostly zero scratch / parameter words) ...
0180: 31e6 19e9 a801 cc65 09c1 f13f 71e6 b202
0320: cd8d 602b cc6f 49d5 cc41 c1b8 09d5 cc4d
0360: d10f 41d2 0000 49c2 700b 09c2 29e7 59e9
(Full blob = the first ~1000 words of page 0 of any PACK-ONE image; pull it with
the dd above.)
3.3 Annotated disassembly - what it does¶
Prologue and controller detect (addresses/opcodes octal):
000000 150405 PIOF ; word 0: interrupts + paging OFF - mandatory boot prologue
000001 150001 TRA STS ; save/settle status
000002 170412 SAA 12 ; \
000003 150103 TRR PCR ; > set paging control / clear internal regs
000005 150111 TRR LCIL ; /
000013 054017 LDX 17 ; \
000014 047014 LDA I ,X 14 ; > clear a table in low memory (loop, JNC -2)
000016 132776 JNC -2 ; /
...
000113 150206 MCL PID ; clear the priority-interrupt-detect (x4)
000117 165544 IOX 1544 ; SMD Read Status - probe the controller
000124 143611 IDENT PL11 ; identify on level 11 (disk interrupt level)
The disk-read core (the second-stage loader) - the five SMD register operations:
000324 044703 LDA ,B -75 ; control word (unit | opcode Read)
000325 165545 IOX 1545 ; SMD Load Control Word -> START operation
000326 165544 IOX 1544 ; SMD Read Status -> poll
000327 175025 BSKP ZRO 20 DA ; test "ready for transfer"
...
000743 044732 LDA ,B -46
000744 165543 IOX 1543 ; SMD Load Block Address I (disk sector, low)
000750 044731 LDA ,B -47
000751 165543 IOX 1543 ; SMD Load Block Address II (disk sector, high)
000753 044425 LDA ,B 25
000754 165541 IOX 1541 ; SMD Load Core Address (memory dest, low)
000755 044426 LDA ,B 26
000756 165541 IOX 1541 ; SMD Load Core Address (memory dest, high)
000757 044706 LDA ,B -72
000760 165547 IOX 1547 ; SMD Load Word Count (transfer length)
000761 044745 LDA ,B -33
000762 165547 IOX 1547 ; SMD Load Word Count II (ECC control)
000765 165544 IOX 1544 ; SMD Read Status -> completion poll
Decode (VERIFIED):
- Word 0 =
PIOF(150405) - the raw-bootstrap signature. - Every I/O is a literal
IOXin the octal device window 1540-1547 - the SMD/ECC controller register bank (nd100-dislabels it "SMD1"). NoIOXT(150415) appears, so this is not a SCSI bootstrap. -
Register roles (SMD/ECC controller, VERIFIED against the
nd100-disregister annotations):IOX (octal) SMD register Boot use 1541Load Core Address destination memory address for the transfer 1542Read Seek Condition seek-complete / ECC status 1543Load Block Address I / II source disk sector (low / high) 1544Read Status poll active / ready / error 1545Load Control Word unit select + opcode (0 = Read) + Active = start 1547Load Word Count / ECC transfer length + ECC control
- Load address / count / sector are taken from an in-page parameter block
(the
,B-relative words the loader initialises - e.g.,B 25/,B 26hold the destination core address). The exact second-stage entry is reached through the loader's in-body subroutine-dispatch table (P-relative-indirectJMP I), i.e. it is parameter-driven, not a single fixed constant in the image.
What it does, in one line (VERIFIED): firmware (mass-storage load) copies this
1KW to address 0 and jumps to 0 -> PIOF prologue -> probe/clear the SMD/ECC
controller -> program Block Address + Core Address + Word Count -> start a Read
via the Control Word -> poll status -> jump into the freshly loaded second stage.
Load device = SMD/ECC base 1540B; the firmware entry and image load base are
both memory address 0.
A second, non-standard SMD image:
~/repos/nd100x/SMD-BSD.IMGalso starts withPIOFbut then drives the console (IOX 303/IOX 305), not the SMD registers - it is a custom BSD-project monitor/loader, not a stock SINTRAN SMD bootstrap. TreatSMD0.IMGas the canonical SMD bootstrap.
4. Floppy - REAL bytes (FLOMON, 250305L07-XX-01D.IMG)¶
VERIFIED from ~/repos/nd100x/250305L07-XX-01D.IMG (volume
250305L07-XX-01D, 616 pages). The floppy is booted by the binary-format
loader (ALD 1560), so page 0 carries a BPUN stream, not raw code.
4.1 The real preamble + load record bytes¶
0000: 0030 002f 0032 000d 000a 0032 0021 0000
0010: 0000 0000 0040 0003 ...
Decoded (each ASCII char is right-justified in a 16-bit big-endian word):
| Bytes | Value | Meaning |
|---|---|---|
| 0x00-0x0B | '0' '/' '2' CR LF '2' |
ASCII preamble (free text / octal digits) |
| 0x0C-0x0D | 00 21 |
! (0x21) - start-of-binary delimiter |
| 0x0E-0x0F | 00 00 |
load record Address = 0 |
| 0x10-0x11 | 00 00 |
load record Count = 0 |
| 0x12-0x13 | 00 00 |
load record Checksum = 0 |
Address = Count = Checksum = 0 after ! is the FLOMON signature: "no program
to load - hand control to the floppy monitor". (A populated BPUN record would
carry a real Address, Count, Count*2 data bytes, a Checksum = 16-bit sum of the
data words, and a 2-byte Action code; see boot-sector.md §3.)
4.2 Binary-format load record layout (the general case)¶
From ND-06.014.2A §4.2.5.1 (VERIFIED) and the NDFS reader:
A Preamble : any bytes except '!' (0x21). Optional octal number B, terminated CR.
B (opt) octal number -> start address, terminated CR.
C (opt) octal number -> terminated by '!'.
! 0x21 start-of-binary delimiter.
E Block start address : 2 bytes, most-significant byte first (big-endian).
F Word count : 2 bytes, big-endian (E, F, H not counted in F).
G Data : F words, each 2 bytes big-endian.
H Checksum : 2 bytes = 16-bit arithmetic sum of the G words.
I Action code : 0 = start at address B; non-zero = return to OPCOM.
A FLOMON floppy is exactly this with E = F = H = 0. The floppy controller can
also "load BPUN-files of maximum 64 Kwords directly from the floppy by pressing
LOAD" (../Devices/SCSI/ND-11.021.1 EN-Floppy and Streamer Controller 3106 3112.md).
~/repos/nd100x/FLOPPY.IMGhas its boot area space-filled (all0x40) and is therefore not bootable - a useful negative control.
5. Winchester - DERIVED (no real Winchester directory image)¶
We have no real Winchester boot image, so there are no Winchester bytes to copy. What is known (VERIFIED from the docs / ALD table, INFERRED for the exact register block):
- Winchester boots via mass-storage load exactly like SMD: firmware copies
page-0 (1KW) to address 0 and jumps to 0. So a Winchester boot area has the
same shape as the SMD one -
PIOFprologue, then controller I/O, then a second-stage read + jump. - Controller device window = 500-507B (and 510-517B) (VERIFIED: ALD preset
20500= "mass-storage load from 500", ND-06.014.2A + nd100xcpu_types.h; the boot-format detector uses the same window,boot-sector.md§5.2). So a Winchester bootstrap uses literalIOX 50xwhere the SMD one usesIOX 154x. - What differs from SMD is only the controller I/O block (device window and the specific register offsets of the Winchester controller). The prologue, the 1KW-at-address-0 contract, and the "read stage 2 + jump" structure are identical.
To get real Winchester bytes you need one artifact: a Winchester system disk
image (page 0 with a PIOF + IOX 50x bootstrap), or the Winchester
bootstrap MODE/load file shipped by ND. Until then the Winchester register
sequence stays INFERRED.
6. SCSI - DERIVED (no real SCSI directory image)¶
We have no real SCSI boot image either. What is known:
- SCSI hard disks also use mass-storage load (1KW -> address 0 -> jump 0), so
the boot area is again a raw
PIOF-prologue program. -
The distinguishing feature is the I/O instruction: SCSI/NCR-5386 controllers are addressed with the single-word
IOXT(150415), which takes the device address from the T register at runtime, instead of a literalIOX. VERIFIED from the SCSI driverSINTRAN/NPL-SOURCE/NPL/IP-P2-SCSI-DRIV.NPL: every controller access isT := HDEV + <reg>; *IOXT(e.g. line 123T:=HDEV+RSTAU; *IOXT), whereHDEVis the hardware device base. The NCR-5386 register offsets (VERIFIED from the same source):Symbol Offset Register RNDAT40 Read NCR data register WNDAT41 Write NCR data register RNCOM42 Read NCR command register WNCOM43 Write NCR command register RNCNT44 Read NCR control register WNCNT45 Write NCR control register (
IP-P2-SCSI-DISK.NPLadds the disk-level read/write logic on top of this driver.)
- Consistent with this, the ALD table has no dedicated mass-storage SCSI preset;
SCSI systems commonly boot from a floppy first (ALD 1560, the nd100x
cpu_types.hnote "SCSI boot use this setting..?"), which then loads the SCSI system - so a pure page-0 SCSI mass-storage bootstrap may not even be the normal boot path on those systems. This is OPEN.
To get real SCSI bytes you need a SCSI system disk image whose page 0
begins with PIOF + IOXT and drives the NCR-5386, or the ND SCSI bootstrap
load file. Until then the SCSI boot sequence is INFERRED from the driver.
Note - driver vs bootstrap I/O style. The stock SMD driver (
IP-P2-DISK-START.NPL) also uses*IOXT(T-relative) for its normal I/O, yet the SMD bootstrap inSMD0.IMGuses literalIOX 154x. The bootstrap hard-codes its device because it runs before any datafield/T setup exists; the driver is written device-relative. Do not infer the bootstrap I/O style from the driver source alone.
7. How SINTRAN writes the bootstrap (the mechanism)¶
7.1 Floppy - VERIFIED operator command¶
@DEVICE-FUNCTION ... DUMP-BOOTSTRAP <file> writes a BPUN file onto page 0 of
a floppy (ND-60.128.5 p.97, VERIFIED):
"Dump a bootstrap onto page 0 (the first page) of a floppy. The floppy monitor can then be loaded ... by pressing MASTER CLEAR and typing 1560&." Rule: "Allowed only on floppy disk."
Operator flow (ND-10022S "SINTRAN UTILITY PROGRAMS", VERIFIED):
$DEV-FUNCTION,<floppy peripheral name>,DUMP-BOOTSTRAP,FLOPPY-MON
Where the code originates: a shipped :BPUN file - FLOPPY-MONITOR:BPUN
(program LDR-2010F, "FLOPPY-MON") - i.e. a normal absolute-binary load file, not
a ROM copy. DUMP-BOOTSTRAP simply copies that BPUN stream into page 0. To make a
FLOMON floppy you emit the empty-record BPUN stream of §4 directly.
7.2 Hard disk (SMD / Winchester / SCSI) - the raw bootstrap¶
There is no DUMP-BOOTSTRAP for hard disks (it is floppy-only). The 1KW
page-0 program is what the mass-storage-load firmware reads and runs (§2). It
gets onto the disk as part of installing the system image:
- The hard-disk boot area is a raw ND-100 program (the "mass-storage
bootstrap" / first-stage loader) written at page 0 of the system disk when
the system pack is built - historically by a stand-alone pack-to-pack /
mass-storage copy program (e.g.
COP-VERIFY, ND-10022S: "to copy pages between mass storage devices", booted itself byMASTER CLEAR, 1560&), which copies page 0 (and the rest) verbatim from a master pack. - The origin of the code is therefore a prebuilt boot program, not a live SINTRAN routine and not a checksum-wrapped BPUN. For an external tool the practical, honest answer is: copy a known-good real SMD page-0 blob (§3.2) into your image, or assemble a first-stage loader that obeys the §8 contract.
- OPEN: the exact ND utility/MODE file that originally authored the SMD page-0 program (as opposed to copying it pack-to-pack) is not pinned down in the manuals on hand. What is fully VERIFIED is the consumer contract (§2) and the real bytes (§3), which is what an emitter needs.
The @DUMP / @DUMP-REENTRANT commands referenced in ND-10022S (e.g.
@DUMP "DUMPFL-2327A" ...) produce BPUN files with bootstrap + checksum (the
NRL/loader "octal-coded bootstrap", 44 octal locations - ND-60.066.04 Relocating
Loader) - that is the BPUN/binary-load path (character devices), not the
raw hard-disk mass-storage path.
8. Format spec per device class (to generate, not just copy)¶
8.1 Raw hard-disk bootstrap (SMD / ECC / Winchester / SCSI)¶
A raw ND-100 program occupying page 0. Firmware loads 1KW to address 0 and jumps to 0, so:
- Prologue (mandatory): word 0 =
PIOF(150405) (interrupts + paging off) or at minimumIOF(150401) (interrupts off). Nothing else may legally start a raw bootstrap - this is the detector signature. - Controller load block - the only part that differs by controller:
- SMD / ECC / Winchester: literal
IOX= 164000B + device number in the low 11 bits.- SMD/ECC base 1540B (
IOX 1541Load Core Addr,1543Load Block Addr,1545Load Control Word = start,1544Read Status,1547Load Word Count). VERIFIED (§3). - Winchester base 500B (
IOX 50x). INFERRED (§5).
- SMD/ECC base 1540B (
- SCSI / NCR-5386: single-word
IOXT(150415) with the device address in the T register; register offsetsRNDAT=40 ...WNCNT=45 (§6). INFERRED.
- SMD / ECC / Winchester: literal
- Second-stage read + jump: program Block Address (source sector), Core Address (destination memory), Word Count (length); start a Read; poll status; then jump into the loaded second stage.
Only the device window / register block changes between SMD, Winchester, and SCSI; the prologue and the "load 1KW at 0, read stage 2, jump" structure are identical.
8.2 Floppy BPUN / FLOMON (punched-tape load format)¶
Character/tape-style stream consumed by the binary-format loader:
<preamble bytes, no 0x21> [octal B <CR>] [octal C] '!'(0x21)
Address(2, big-endian) Count(2) Data(Count*2) Checksum(2) Action(2)
- FLOMON terminator:
Address = 0, Count = 0, Checksum = 0immediately after!- the "hand control to the floppy monitor" convention (three zero words). - Populated BPUN: real Address/Count/Data, Checksum = 16-bit sum of the data words, Action = 0 (start at B) or non-zero (return to OPCOM).
9. "To build a bootable image yourself" - checklist per device¶
Common: write the boot bytes into page 0 bytes 0..1999; leave bytes
2000..2047 for the extended-info + label written by your filesystem step
(create-directory.md). Multi-byte values are
big-endian. The two steps do not overlap.
SMD / ECC (REAL, reproducible now):
1. Emit the real 1KW page-0 blob from §3.2 (or dd bs=2048 count=1 from a
PACK-ONE image) into bytes 0..1999.
2. Ensure your second-stage system is at the disk sectors that blob's parameter
block reads (or author your own first stage per §8.1 using IOX 154x).
3. Bootable via ALD 21540 (mass-storage load from 1540).
Floppy (REAL, reproducible now):
1. For FLOMON: write the preamble + ! + three zero words (§4.1); or copy the
FLOPPY-MONITOR:BPUN stream.
2. For a self-loading floppy: emit a populated BPUN record (§8.2) with a valid
Checksum and Action = 0.
3. Bootable via ALD 1560 (binary load from 1560).
Winchester (DERIVED - shape only):
1. Same raw-bootstrap shape as SMD but with IOX 50x controller I/O.
2. You cannot copy real bytes (none available); you must author the first
stage or obtain a Winchester boot image.
3. Bootable via ALD 20500.
SCSI (DERIVED - shape only):
1. Same raw-bootstrap shape but with IOXT (150415), device base in T, NCR-5386
register offsets 40..45.
2. No real bytes available; author from the driver or obtain a SCSI boot image.
Note many SCSI systems boot from a floppy first (ALD 1560).
10. Status summary - VERIFIED / INFERRED / OPEN¶
| Claim | Status | Evidence |
|---|---|---|
| Firmware loads 1KW to addr 0 and jumps to 0 (mass storage) | VERIFIED | ND-06.014.2A §4.2.5.2 |
Binary-format load record layout (preamble+!+Addr/Count/Data/Cksum/Action) |
VERIFIED | ND-06.014.2A §4.2.5.1 |
| ALD presets (1560 floppy, 20500 Winchester, 21540 SMD) | VERIFIED | ND-06.014.2A p.232 + nd100x cpu_types.h |
SMD bootstrap = PIOF + IOX 1541/1543/1544/1545/1547, reads stage 2 + jumps |
VERIFIED | SMD0.IMG disassembly (§3) |
SMD boot blob byte-identical across SMD0/SMD0-org/SMD0-L |
VERIFIED | md5 of page 0 |
Floppy FLOMON = preamble 0/2 CR LF 2 ! + 3 zero words |
VERIFIED | 250305L07-XX-01D.IMG (§4) |
DUMP-BOOTSTRAP writes a :BPUN file to floppy page 0 (floppy only) |
VERIFIED | ND-60.128.5 p.97 + ND-10022S |
Floppy bootstrap origin = shipped FLOPPY-MONITOR:BPUN (LDR-2010F) |
VERIFIED | ND-10022S |
SCSI uses IOXT, NCR-5386, device in T, regs 40..45 |
VERIFIED (driver) / INFERRED (bootstrap) | IP-P2-SCSI-DRIV.NPL |
Winchester uses IOX 50x, otherwise SMD-shaped bootstrap |
INFERRED | ALD 20500 + detector window; no real image |
| Hard-disk page-0 blob is copied pack-to-pack when the system is installed | INFERRED | ND-10022S COP-VERIFY; no explicit "author" utility found |
| The utility/MODE file that originally authored the SMD page-0 program | OPEN | not pinned in manuals on hand |
| SCSI normal boot path (floppy-first vs page-0 mass-storage) | OPEN | nd100x note + ALD table |
What is still missing to close Winchester / SCSI:
- Winchester: a real Winchester system disk image (page 0 =
PIOF+IOX 50x), or the ND Winchester bootstrap MODE/load file. Then §5 becomes VERIFIED with real bytes and an annotated disassembly like §3. - SCSI: a real SCSI system disk image whose page 0 is
PIOF+IOXTdriving the NCR-5386, or the ND SCSI bootstrap load file. Then §6 becomes VERIFIED.
References¶
- Real images:
~/repos/nd100x/SMD0.IMG,SMD0-org.IMG,SMD0-L.IMG(SMD, real);250305L07-XX-01D.IMG(FLOMON floppy, real);FLOPPY.IMG(space-filled, not bootable);SMD-BSD.IMG(custom BSD monitor, non-standard). - Firmware / load formats:
../../Reference-Manuals/ND-06.014.2A EN ND-100 Reference Manual.md§4.2.5 (Bootstrap Loaders), p.232 (ALD). - Operator command:
../../Reference-Manuals/ND-60.128.5 EN SINTRAN III Reference Manual.mdp.97 (DEVICE-FUNCTION DUMP-BOOTSTRAP);../../Reference-Manuals/ND-10022S SINTRAN UTILITY PROGRAMS.md(FLOPPY-MON, COP-VERIFY). - Drivers:
../NPL-SOURCE/NPL/IP-P2-DISK-START.NPL(SMD/disk),../NPL-SOURCE/NPL/IP-P2-SCSI-DRIV.NPL+IP-P2-SCSI-DISK.NPL(SCSI/NCR-5386). - Emulator boot classification:
~/repos/nd100x/src/cpu/cpu_types.h(ALD table),src/machine/machine_types.h(BOOT_FLOPPY/BOOT_SMD,DRIVE_SMD/DRIVE_FLOPPY). - Disassembler:
~/repos/nd100-tools/nd100-dis/nd100-dis(little-endian). - Related on-disk docs:
on-disk-format/boot-sector.md(page-0 map + boot-format detector),create-directory.md(the filesystem-structure half),README.md. ```