Tree: /home/eric/Projets/Projets-Modula2/MyWork/M2compiler (git root, committed)
West: mc64/ (16bit->64bit translator + 64bit VM mcint). Locked translator:
trans8to64.mod md5 5f922946 (pristine, restored via git checkout, build rc=0
with FileIO.o Console.o; no corruption, no regression)
git: clean; mc64/SESSION.md tracked; Resources/ never tracked (per bb5e767).
Assigned: Loader2 dep-chain so Extended/Array/Local (dcnt=1, dep=STACK) run under mcint.
Attempts: several assert-first literal patches to trans8to64.mod — most aborted on
literal mismatch (no writes); ONE landed but had LONGCARD/CARDINAL type bug at the
tail (imgLen : CARDINAL), caught by build rc=1 BEFORE any image emit → git checkout
restored pristine md5 5f922946. Net: no corruption, no regression, translator verified
re-buildable, git clean.
Why stopped: the 64-bit loader binds ONE module window into slot 0 and hard-fences dcnt#0 at Loader2.mod:57. Real dep-chain = proper multi-module VM feature: (1) translator carry dcnt + dcnt*8-byte dep-name table appended at image tail
(WB (DescDepCount, dcnt); imgLen := imgLen + dcnt*8; CARDINAL-typed all the way);
(2) Loader2 chain-load a sidecar dep image into module slot 1 before slot 0
(multi-window arena);
(3) MC64 already resolves cross-module procs (nw DIV 16 = module, nw MOD 16 = proc,
Interpreter.mod:743-744 via FindModuleBase) — VM side is ready; loader link missing.
cd /home/eric/Projets/Projets-Modula2/MyWork/M2compiler/mc64
md5sum trans8to64.mod # must print 5f922946 (locked)
git status # must be clean
gm2 -fiso -o trans8to64 trans8to64.mod FileIO.o Console.o # must rc=0
Then the Loader2 dep-chain milestone above. All writes go through FileIO.o Console.o
(NOT the foreign FIO.o used in a lost earlier glob). Build rc != 0 => stop, restore.
Stack.MCD -> trans8to64 -> Stack64.MC4 -> mcint : rc=0 9-spec translator regression: Stack, Array, Local, Extended, Instruction, Loader, Console, FileIO, MCODE-stub: 8 ok / 1 skip (the translator never regresses these).