• src/conio/ciolib.c ciolib.h cterm.adoc cterm.c cterm.h src/syncterm/te

    From Deuc¿@VERT to Git commit to main/sbbs/master on Tuesday, March 17, 2026 22:37:37
    https://gitlab.synchro.net/main/sbbs/-/commit/a9097117205e8010151f5c49
    Modified Files:
    src/conio/ciolib.c ciolib.h cterm.adoc cterm.c cterm.h src/syncterm/term.c
    Log Message:
    Implement ECMA-48 screen content readback via SSA/ESA/STS

    Standard ECMA-48 selected area transmission mechanism:
    - ESC F (SSA): mark start of selected area
    - ESC G (ESA): mark end of selected area (inclusive)
    - ESC S (STS): trigger transmission of selected area content

    Transmission modes (ANSI SM/RM):
    - FETM (mode 14): INSERT=attributed stream with SGR, EXCLUDE=text only
    - TTM (mode 16): CURSOR=end before cursor, ALL=full SSA-to-ESA region
    - SATM/MATM/GATM permanently locked at recommended reset defaults

    Response framed as SOS CTerm:STS:<N>: <content> ST where N=0 (INSERT)
    or N=1 (EXCLUDE). Content is linear cell sequence in presentation
    order with SGR minimal diffs, doorway encoding for C0/DEL in cells,
    and OSC 8 for hyperlink changes.

    SSA/ESA invalidated by margin changes, origin mode toggle, and RIS.
    Works with origin mode + margins for rectangular area readback.

    Also adds:
    - response_cb on cterm struct for unbounded response output
    - cterm_respond()/cterm_respond_printf() helpers
    - ciolib_get_hyperlink_params() API
    - DECRQM for ANSI modes 1,14,15,16,17 (discoverability)
    - retbuf flush before STS for correct response ordering
    - Save/restore response_buf for re-entrant cterm_write

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net