# astro tree in-tree toolchain pins — 2026-10-01

The AR1972/astro tree @ `91e0bc1f5cd213a6e682294e2f628f3f3d99ffe4` ships the
complete toolchain used to build it, under `c6ers/tools6/bin` + `c6ers/tools6/lib`.
This makes "reproduce the compiler output" executable rather than hypothetical:
pin these binaries by hash, run under DOS emulation, compare .OBJ contributions.

All sha256 computed on raw.githubusercontent.com blobs at the pinned commit.

## Compiler — Microsoft C 6.00A (retail "C Professional Development System 6.0")

`c6ers/tools6/bin/readme.doc` = verbatim "Release Notes for the Microsoft(R) C
Professional Development System, Version 6.0". Embedded build stamps:

- cl.exe  — "C 6.00A Sep  6 1990 21:36:07" — sha256 `9f452b39…36da`
- c1.exe  — front-end — sha256 `286cee7f…0b6507`
- c1l.exe — front-end (large) — sha256 `d01c20b4…5c731`
- c2.exe  — "C 6.00A Sep  7 1990 09:28:09" — sha256 `1b370eb8…4059d7`
- c3.exe  — "C 6.00A Sep  6 1990 20:51:00" — sha256 `224727d5…079344`

## Linker — Microsoft Segmented-Executable Linker 5.10

- link.exe   — "Microsoft (R) Segmented-Executable Linker 5.10", `@(#)L.5.10.DSI`
  — sha256 `163d8b86…babb07`
- link386.exe — 32-bit variant — sha256 `4aafab49…a09c2d`
- lib.exe — sha256 `418aec41…336ff3`

## Assemblers — four versions side by side

- masm.exe    — MASM **5.10A** "Jan 16 11:10:15 1989" — sha256 `245b608e…5e20391`
  (this is the `asm=masm` default invoked by tools.ini)
- masm5.exe   — MASM **5.10B** "Apr 07 11:50:10 1989" — sha256 `e8a09ca1…2ffc3d`
- masm500.exe — MASM **5.00**  "Aug 06 11:42:19 1987" — sha256 `085e0758…92f1b87`
- masm400.exe — MASM **4.00** — sha256 `6a32bdaf…4c52`

## Build driver + utilities

- nmake.exe    — MS NMAKE (runtime 1992) — sha256 `0d3dc093…f1b87`
- cvpack.exe   — Debug Information Compactor — sha256 `3b02810b…f7f062`
- exehdr.exe   — EXEHDR 2.01 — sha256 `278e6def…20b94d`
- compress.exe — setup file compressor — sha256 `712c2835…a08da3c`

Also present (not pulled): bind.exe, cv.exe (CodeView), symdeb.exe, rc.exe,
implib.exe, exe2bin.exe, exemod.exe, reloc.exe, mkimage.exe, ilink.exe +
ilinkstb.ovl (incremental linker), qh.exe (QuickHelp).

## Canonical build switches — `c6ers/tools6/bin/tools.ini`

```
asm    = masm            aflags = -Mx -t -W2 $(extasw)     ainc = -I.
cc     = cl              cflags = -Os -Zp -W3 $(extcsw)    cinc = -I.
link   = link            exelink = /E
compress = compress
```

`.c.obj` rule: `cl -c -I. -Os -Zp -W3 <file>.c`
`.asm.obj` rule: `masm -I. -Mx -t -W2 <file>.asm`
Per-component makefiles override via `extcsw`/`extasw`.

## Libraries — `c6ers/tools6/lib` (23 files)

slibc7/mlibc7/llibc7/clibc7.lib (C7-suffixed DOS+OS/2 runtime families),
slibce/mlibce/llibce.lib (DOS-only), crtcom.lib, api.lib, libw.lib, lzexpm.lib,
shell.lib, extsup.lib, GRAPHICS.LIB; objects binmode/setargv/rmfixup/fileinfo.obj.

## Environment — `BUILD.BAT` / `C5.BAT` / `C6.BAT` (repo root)

`C6.BAT` sets `C:\ASTRO\C6ERS\TOOLS6\{BIN,LIB,INCLUDE,TMP}`; `C5.BAT` switches to
the `TOOLS\` (C 5.1-era) tree; `BUILD.BAT` builds c6ers with C6 then messages
with C5.1 — i.e. the tree is authored dual-toolchain, C6-primary for utilities.

## Scope caveat (honest boundary)

This is the DOS-5.0-beta-era ("astro", PROJ=500) build environment. DOS 6.00
retail (1993) may have been built with a later revision — the in-tree binaries
are authoritative for reproducing output of sources **in this tree** (the stated
file.c / infparse.c candidates), and a strong prior for retail DOS 6.x work;
they are not yet evidence about the retail DRVSPACE build chain itself.
