https://gitlab.synchro.net/main/sbbs/-/commit/7bc6f244d87a80c113f2fbfc
Modified Files:
docs/zmodem_comparison.md src/sbbs3/zmodem.h
Log Message:
zmodem: note that ZF0 bit 0x08 is contested, and document two gaps
Audit of every sexyz option -- command-line, sexyz.ini and negotiated -- prompted by Escape8thBit having been inert for 21 years. The parsed
surface came out clean: all 43 ini keys and all 16 command-line options
reach something live, and the six knobs that should show up in the
negotiated ZRINIT all do (FullDuplex clears CANFDX, CRC32=false clears
CANFC32, EscapeCtrlChars sets ESCCTL, RecvBufSize sets the buffer field, Streaming=false clears CANOVIO and sets it to the block size).
MaxFileSize refuses an oversized file and RecvTimeout changes the
engine's per-read timeout. No second dead option.
The gaps are all in the negotiated layer, and two are worth writing down
in the feature table rather than leaving for the next person to
rediscover:
- We never send a ZSINIT, and a received one is ACKed with its flags and
Attn string discarded. lrzsz handles it both ways and DSZ sends one
when it has something to declare -- observed once, for sz -e -- while
zmtx never sends one either.
- As a receiver we ignore the sender's ZFILE management request and let
local policy decide, where lrz, zmrx and DSZ all honour it. DSZ
honours ours, so the asymmetry is ours alone.
And correct a misleading comment: we call ZF0 bit 0x08 CANCRY, as lrzsz
does, but Forsberg's own rzsz calls it CANRLE and his DSZ sets it on
every connection meaning "receiver can decode RLE". Say the bit is
contested rather than implying it is settled; we neither set nor honour
it under either reading.
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net