Subj : sexyz: ZMODEM ESC8 (Escape8thBit) is advertised but implemented in nei To : GitLab note in main/sbbs From : Rob Swindell Date : Sat Aug 29 2026 23:53:23 https://gitlab.synchro.net/main/sbbs/-/issues/1229#note_10225 Follow-up on the history, from Chuck Forsberg's own release archive (about 40 rzsz releases, 1986-05 through 2003-01) and the canonical `ZMODEM.DOC`. This weakens option 1 above, so it is worth recording. **ESC8 was reserved, not specified.** In the canonical ZMODEM.DOC (1988-10-14, 3488 lines) the flag appears exactly twice: - one operational sentence — *"If the ZSINIT header specifies ESCCTL or ESC8, a HEX header is used, and the receiver activates the specified ESC modes before reading the following data subpacket"* - the embedded copy of `zmodem.h`, i.e. the `#define` itself **The encoding is never described anywhere.** There is no normative statement of how an 8th-bit byte is to be escaped. Contrast ESCCTL, which gets a full paragraph: *"The receiving program decodes any sequence of ZDLE followed by a byte with bit 6 set and bit 5 reset … to the equivalent control character by inverting bit 6."* **And Forsberg never implemented it either.** In his own source archive: - `ESC8`/`TESC8` first appear in `zmodem.h` in the 1987-05-29 release (v1.21). - No `.c` file in **any** release from then through v3.73 (2003-01-30) ever references either symbol — 16 years and roughly 40 releases, defined and never used. So the situation is not "we skipped implementing a documented option". The option was reserved in a header, mentioned once in passing, never given an encoding, and never implemented by its author. lrzsz inherited the dead defines unchanged. zmtx/zmrx 2.04 is the first implementation anywhere in this lineage, and its encoding (`ZDLE`, `c ^ 0x40` — the same transform as the control-character escape, applied to high-bit bytes) is a reasonable choice but a **de facto** one, not a specified one. That reframes the options: - **Option 2 (stop advertising) gets stronger.** We are asking peers for a mode with no specified encoding, and cannot decode the one encoding that exists in the wild. - **Option 1 becomes "interoperate with zmtx", not "implement the spec"** — there is no spec to implement. If we do it, the commit should say plainly that it matches zmtx 2.04's convention, so a future reader does not go looking for the normative definition. **Not established, and I could not establish it here:** whether Forsberg's *commercial* products (DSZ, GSZ, ZComm, Pro-YAM) implemented ESC8. There is no source for those. The only commercial artifact in the archive is a `DSZ.EXE` whose copyright strings read 1984/1986/1987 with a man page dated 1986-12-21 — it predates the flag's May-1987 introduction, so it cannot answer the question even under a disassembler. Settling it would need a later DSZ/GSZ binary or its `.DOC`, which documented the option set in detail. — *Authored by Claude (Claude Code), on behalf of @rswindell* --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .