Question for the GOD LLM - our 0xFD does not tear the session down (100 answers DUMM, not DCON)¶
Context¶
The connect-to login now works end to end (MOTD -> SYSTEM/SYSTEM -> menu -> Time/Date/Echo), on a FRESH 100 (Reachability at Flags1 0x0000). The remaining break is menu choice 4 (Disconnect): we print "--- DISCONNECTING ---" and send the 0xFD session-notification, 100 ACKs both, but then 100 sends a DUMM keepalive and the session stays up - it never sends DCON and never closes. On the terminal the user sees "--- DISCONNECTING ---" and then nothing (still connected).
All bytes below are from the runner log (102 = us, 100 = the connect-to host).
What we send for choice 4¶
Frame 1 (terminal data, XMCSM 0x01080000): BDAT "\r\n--- DISCONNECTING ---\r\n"
tx 102->100 a=0x89 2113000E 0064 0066 0013 0108 DC F9 210096 00 ... 01080000 001B 01 19 0D0A 2D2D2D20444953434F4E4E454354494E47202D2D2D 0D0A
(Flags1=0x0013 counter=0xF9 proto=DC frameFlags=0x96 role=0x00 ; BDAT only)
tx 102->100 a=0x09 2113000E 0064 0066 0014 0006 DD FA 210082 54 0066 0156 00060000 0002 FD 00
(Flags1=0x0014 counter=0xFA proto=DD frameFlags=0x82 role=0x54 ; TAD 0xFD, empty)
rx 100->102 Ack Flags1=0x0013 (acks the DISCONNECTING text)
rx 100->102 Ack Flags1=0x0014 (acks the 0xFD)
rx 100->102 Data proto=Dc Flags1=0x0012 XMCSM=0x01080000 role=0x94 -> TAD DUMM (0x18) <-- a keepalive, NOT a DCON
Our hypothesis (please confirm or correct)¶
The documented teardown ladder (TAD-Message-Formats.md ~line 1194-1196 / 1363) is longer than what we send. For a normal host-initiated logout it is:
H->>C: 7BDAT(final text) + 7CESC 00
H->>C: 7BMMX 000000 + 7ECKM 00 + 7CESC 00
H->>C: 7BDAT("\r\n--EXIT--\r\n") + 7SYCN 000B <-- SYCN 000B = LoggedOut
H->>C: 7CESC 01
H->>C: 7FD (0x0006 class)
BDAT("--- DISCONNECTING ---") then 0xFD - we skip the SYCN 000B (LoggedOut)
signal, the CESC 00/CESC 01 transitions, and the BMMX 000000 + ECKM 00 reset. Our INFERENCE
is that 100 will not initiate DCON until it receives the SYCN 000B logout (mirroring how it needed
SYCN 000A to consider us logged IN), so our bare 0xFD is ignored as a teardown trigger and 100
just keepalives.
Questions¶
- What is the EXACT minimal frame sequence 100 needs from the host to make it send DCON and close
the connect-to session? Is
SYCN 000B(LoggedOut) the required trigger, or is it the0xFD, or the combination, and in what order? - Do the
CESC 00->CESC 01transitions and theBMMX 000000 + ECKM 00reset matter for the teardown, or are they cosmetic (echo/break-mode restore) and safe to omit? - Our
0xFDframe: Flags1 0x0014 lands at epoch 1 for class 0x0006 (baseLow = seed 0x14 - 0x06 = 0x0E; 0x14 -> epoch 1), so it rode channelDDwith counter 0xFA, frameFlags 0x82, role 0x54. Is that the correct channel/counter/role for the0xFD, or does the teardown notification need a specific channel (e.g. DE at epoch 0)? - After the host's teardown, does 100 send a single DCON we must ACK, and should the responder then stop (close its session state), or keep the LAPB link up for the next connect?
What we need back¶
The exact host-side teardown ladder (frames, opcodes, SYCN value, channels, order) that makes 100
send DCON and close the session, and confirmation of whether our bare BDAT + 0xFD is simply
missing the SYCN 000B logout step. Mark inferred vs capture-verified, cite capture frames.