• src/conio/cterm.adoc cterm.c cterm.h src/syncterm/termtest.c

    From Deucе@1:103/705 to Git commit to main/sbbs/master on Wednesday, March 18, 2026 16:58:48
    https://gitlab.synchro.net/main/sbbs/-/commit/bcca49315f5257a349289df7
    Modified Files:
    src/conio/cterm.adoc cterm.c cterm.h src/syncterm/termtest.c
    Log Message:
    Implement vertical line tabulation, scroll verification, ANSI mode reporting

    Vertical tabs (ECMA-48):
    Add VTS (ESC J) to set line tabulation stops at fixed row numbers.
    Fix CVT (CSI Pn Y) to advance to the Pn-th next line tab stop
    (preserving column) instead of incorrectly acting as horizontal CHT.
    When no line tab stop exists, CVT scrolls up and moves to the last row.
    Extend TBC: Ps=1 clears line tab at current row, Ps=4 clears all
    line tabs, Ps=5 now correctly clears both character and line tabs.
    Line tab stops are at fixed row numbers, unaffected by scrolling,
    with no defaults set. VT (0x0B) remains a displayable CP437 glyph.

    Scroll content verification (tests):
    Add scroll_witness_setup/check_up/check_down helpers for verifying
    that screen content actually moves during scroll operations.
    Strengthen SU, SD, RI_scroll, LF_scroll, DECSTBM_scroll, and CVT
    tests to verify content shifted, not just cursor position.
    Add SU_margins, SD_margins, SL_margins, SR_margins tests verifying
    content inside margins scrolls while content outside stays put.

    ANSI mode DECRQM (CSI Ps $ p):
    Report all 20 ECMA-48 standard modes: 1-13/15/17/18 permanently
    reset (Pm=4), 14/16 changeable (Pm=1/2), 21 GRCM and 22 ZDM
    permanently set (Pm=3).

    Test count: 145 -> 149, all passing.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)