https://gitlab.synchro.net/main/sbbs/-/commit/c9fb4003646dcbbaf56bb784
Modified Files:
docs/zmodem_comparison.md
Log Message:
docs/zmodem: re-measure zmtx/zmrx at 2.05, which fixes both reported defects
Deuce released 2.05 the day after this document reported two defects
against 2.04, and fixed both, plus implemented the ESC8 encoding the DSZ investigation had recovered. Re-measure everything the document claims
about zmtx/zmrx.
ESCCTL is fixed (82be5ad). CR is folded into the control class --
action = TX_ESCAPE_CONTROL | TX_ESCAPE_CR -- with the '@' conditional
kept as a separate test, which is the same shape as our own fix six days earlier. zmtx 2.05 now transfers byte-identically to lrz -e, to sexyz
-e and to its own zmrx -e, putting 5,245,010 bytes on the wire where
sexyz puts 5,245,034 and lsz 5,245,032 for the same file. The
32,400-byte shortfall, which was the unescaped CR count, is gone.
The retry budget is fixed (6e32e97). The gate at 3e-6 goes from 0 of 5
to 3 of 5 and the rate sweep now completes where 2.04 failed from 5e-7
up. Still the weakest of the three -- sexyz manages 10 of 10 and lrzsz
7 of 10 -- but no longer structurally unable to finish.
And ESC8 now interoperates (399e3b6). The commit adopts Forsberg's
encoding rather than inventing one; its comment names DSZ.EXE's
ZMODEM-90 seven-bit encoder and the code emits SO followed by the byte
with bit 7 cleared, which is what the known-plaintext capture recovered. Verified against the 1997 binary both ways on a 16 KiB file: zmtx 2.05
to DSZ rz -E and DSZ sz to zmrx -b both arrive identical. So a de facto normative ESC8 now exists, with two implementations agreeing on it,
where days ago there were two encodings and no agreement.
The features cost the sender something: 0.38 CPU-seconds per 256 MiB at
2.04, 0.48 at the 2.05 tag, 0.44 after dfa97f0 "Recover standard
transfer performance", which is measured here because that commit lands
after the tag. Still the cheapest sender measured, but the margin over
lsz narrowed from 2.5x to 2.2x.
The 2.02 and 2.04 measurements are kept throughout rather than
overwritten, since they are how the encoding was established and why the options are the way they are.
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)