• src/conio/ciolib.c ciolib

    From Deuc¿@VERT to Git commit to main/sbbs/m on Sunday, August 10, 2025 23:27:00
    https://gitlab.synchro.net/main/sbbs/-/commit/7743c93401adce46b0b0b15a
    Modified Files:
    src/conio/ciolib.c ciolib.h src/syncterm/CHANGES ripper.c
    Log Message:
    More RIP improvements for Stack'Em

    Add a duppixels() ciolib function
    Implement STW/RTW and SCB/RCB RIP commands
    Fix pixel color matching broken with Mode7/Prestel support

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Friday, December 05, 2025 21:21:00
    https://gitlab.synchro.net/main/sbbs/-/commit/84b3b39e2d32e4c37d95fd5b
    Modified Files:
    src/conio/ciolib.c ciolib.h sdl_con.c x_cio.c x_cio.h src/syncterm/bbslist.c src/uifc/uifc32.c
    Log Message:
    Implement kbwait() in conio

    Now we don't need to spin... only implemented for X11 right now.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, January 01, 2026 15:23:00
    https://gitlab.synchro.net/main/sbbs/-/commit/f1732d3cfd0399cda4cf82e1
    Modified Files:
    src/conio/ciolib.c ciolib.h win32gdi.c
    Log Message:
    Fix mouse in GDI mode.

    Add ciolib_ungetch_byte() which will *not* convert 0xe0 to a literal
    0xe0 when it ungets it.

    With kbwait(), in GDI mode, a single byte was read from the pipe, then
    passed to ungetch(). The mouse key is a two-byte sequence starting
    with 0xe0. It would read the 0xe0, then unget it which would end up
    doing hilarious things.

    No short wrapper or driver override for this function since it's just
    for this specific purpose.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Tuesday, March 17, 2026 22:37:00
    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