• src/doors/termgfx/charset.c charset.hsrc/doors/syncretro/main.c syncre

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun Jul 12 05:11:38 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c46bebea7d2cf8b738363e4f
    Added Files:
    src/doors/termgfx/charset.c charset.h
    Modified Files:
    src/doors/syncretro/main.c syncretro.h syncretro_door.c syncretro_io.c src/doors/termgfx/CMakeLists.txt
    Log Message:
    syncretro: dress the pause/help screen, and stamp it with the door version

    The screen a player actually reads -- pause, '?', or any unbound key -- was
    a wall of monochrome text with no version on it. Frame it, color it, and
    sign it:

    * a double-ruled box, centered in the terminal's real grid (the door knows
    it: sr_io_grid()), with the door name and the CONSOLE in the top rule and
    the PAUSED badge riding its right end rather than costing a row;
    * the cartridge under the title, because a player who paused twenty minutes
    ago should not have to remember what he put in;
    * key names in bright cyan against their descriptions in gray, so the list
    reads as two columns instead of one paragraph;
    * the version on the bottom rule: "v0.1 <hash> <date> synchro.net", the
    shape the sibling doors use. SR_VERSION is bumped by hand per release;
    the hash and date come from git_hash.h (the shared synchronet_gitinfo()
    CMake helper), so they stamp THIS build.

    Every row is cursor-addressed and none is newline-terminated: a \r\n on the last row of the page scrolls the box off the top of the screen it just drew.

    THE GLYPHS FOLLOW THE CLIENT, which is the part that needed a new module. A door writes RAW BYTES -- Synchronet hands a native door its socket through a passthru thread and converts nothing on the way out -- so a hardcoded 0xC9 draws a corner on SyncTERM and mojibake on a UTF-8 ssh client, and both dial in. The BBS already knows which and writes it down in
    $SBBSNODE/terminal.ini; termgfx/charset.c reads it and hands back a box-glyph set to match. Verified both ways: 199 CP437 bytes and no UTF-8, or 199 UTF-8 glyphs and no CP437, never a mix.

    SyncDuke and SyncDOOM each carry their own copy of that same terminal.ini probe; they can drop theirs onto this one whenever someone is next in those files.

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