ENNS0 start-net exchange - decoded JSON reference (LLE golden vs HLE)¶
Structured, decoded timelines of the ENNS0 start-net-server + DEF-NETWORK-CONN XMSG
exchange, so the native-C# HLE card can be diffed cell-for-cell against the real-68K oracle
("LLE"). Built 2026-08-10 by parse_ennS0_exchange.py (in the session scratchpad) from the two
device logs.
| File | Card | Source device log |
|---|---|---|
lle-oracle-exchange.json |
real-68K oracle (golden) | retrocore-ethii/oracle-startnet-device.txt |
hle-exchange.json |
native-C# HLE (under test) | retrocore-hle-dram/run-130792/hle-startnet-device.txt |
Each JSON has counts, the reassembled console, and a timeline[] of events:
call (XMSG func + regs/ports), record (a decoded XROUT message: serial, service-name or
status, and the parameter blocks), mailbox_kick, control, prkey. XROUT decode per
../XROUT-DIRECTORY-RECORD-TAGS-DECODE-2026-08-10.md.
Services seen (XMSG-PL-VALUES-M.INCL)¶
XSDRN=73 (define remote name), XSLEK=84 (send letter AND KICK), XSLET=65 (send a letter, NO kick), XSNAM=66 (name this port), XSNET=85 (start network server), XSGSY=75 (get routing info), XSDSY=74 (define routing for system N).
The registration BOTH cards do (identical - NOT the bug)¶
- 7x / 5x
XSDRN(DEFINE-REMOTE) -> XRSOK 0x0154XSLEK*XM-ENNS0/ENNS0p10=1 (the start KICK-letter) -> XRSOK0x5342XSNAMp1="*XM-ENNS0"(names the port) -> XRSOK <-- PRESENT IN BOTH0x0255XSNETp1=<magic>(start network server) ->0x0200XRSOK p1=3 p2=1
The ONE divergence that breaks DEF-NETWORK-CONN¶
During DEF-NETWORK-CONN, XROUT sends the network server an XSLET directory query and expects a
reply carrying the server's own sysid; it then defines the route with XSDSY:
LLE / oracle (WORKS):
0x0441 request XSLET p11=0x45B8 p1="*XM-ENNS0" p10=0x0002 <- query for remote 0x45B8
0x0400 reply XRSOK p17=0x2648 ... <- serial 4 OK, own sysid 9800
0x054A request XSDSY p1=0x45B8 p2=0x2648 <- define: remote via 9800
0x0500 reply XRSOK <- route built
HLE (FAILS):
0x0441 request XSLET p11=0x0066 p1="*XM-ENNS0" p10=0x0002 <- query for remote 0x0066 (D102)
0x0102 reply XR#2 <- serial 1, status 2 ERROR, no p17
(no XSDSY ever issued)
The HLE's answer to the XSLET query is malformed three ways: wrong serial (1, must echo the
request's 4), error status 2 instead of XRSOK, and no p17 own-sysid (0x2648). Without
the sysid, XROUT never issues XSDSY (oracle issues it 8x; HLE 0x), no route is defined, and
DEF-NETWORK-CONN reports "Unknown name of server or system".
Runtime symptom: the HLE also spins - level-12 IDENT 3281 vs 38, empty XFRRE 1524 vs 6 - the card never settles into a real blocking receive.
Fix target (chosen approach: implement the XSLET receive path)¶
The network server must answer the 0x0441 XSLET directory query with 0x0400 (echo serial 4,
status XRSOK, p17 = own sysid OwnSysid), which makes XROUT issue XSDSY and define the route.
Verify by re-running Nd100EthernetIIHleDramDumpTests.Boot_Login_EnnS0_DumpHleDram, re-parsing
its device log with parse_ennS0_exchange.py, and diffing the new hle-exchange.json against
lle-oracle-exchange.json - the 0x0441 -> 0x0400{p17} -> 0x054A -> 0x0500 block must appear.