• More Wildcat! @-codes

    From Rob Swindell@1:103/705 to GitLab note in main/sbbs on Thu May 21 20:31:00 2026
    https://gitlab.synchro.net/main/sbbs/-/issues/941#note_8997

    Audited the Wildcat! 4 macro reference (System Information, User Record Information, Connection variables, Screen control codes, Color codes — from the `Wildcat-4.pdf` manual) against the Synchronet sources (`atcodes.cpp` value-codes and `putmsg.cpp` display-control codes).

    The large majority of Wildcat! `@`-codes are already supported under the same name (`@BBS@`, `@USER@`, `@PHONE@`, `@CLS@`, `@PAUSE@`, `@NOSTOP@`, `@STOP@`, `@NOCODE@`, `@PROTOCOL@`, the `@DOWNK@`/`@UPK@`/`@KBLEFT@`/`@MAXDL@` family, etc.).

    ### Aliases added (`atcodes.cpp`) — codes that already existed under a different name

    | Wildcat! code | Synchronet code |
    |---|---|
    | `@ACCBAL@` | `@CREDITS@` |
    | `@USERID@` | `@USERNUM@` |
    | `@CALLID@` | `@CID@` |
    | `@CONNECT@` | `@CONN@` |
    | `@ID@` | `@QWKID@` |
    | `@ENTER@` | `@PAUSE@` (approximate — Wildcat! waits for Enter, Synchronet's pause is hit-any-key) |

    (Builds clean; commit pending review.)

    ### Genuinely missing — no equivalent
    - `@CONFOP@` — sub-board operator name
    - `@INCHAT@` — number of users active in chat
    - `@MAXRATIO@` — maximum download ratio
    - `@NETBAL@` — netmail balance

    ### Not applicable to Synchronet's model
    - `@FAX@` — no fax field in the user record
    - `@MODEM@` — modem name from MDM file (telnet-era / N/A)
    - `@YNDEF@` — per-language default Yes/No characters (handled differently)
    - `@ELSE@` / `@ENDIF@` / `@IFSEC [sec]@` — Wildcat!'s IF/ELSE/ENDIF block model; Synchronet uses `@SHOW:@` for conditional display instead
    - `@NOPREV@` — no previous-page toggle in Synchronet's pause model

    Color codes (`@BF@` hex background/foreground format) are a separate topic from the @-codes above; Synchronet's `@XON@`/`@XOFF@` already toggle PCBoard/Wildcat-style color-code interpretation.
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell@1:103/705 to GitLab note in main/sbbs on Thu May 21 22:17:16 2026
    https://gitlab.synchro.net/main/sbbs/-/issues/941#note_9000

    Follow-up: implemented `@IFSEC=ars@` / `@ELSE@` / `@ENDIF@` conditional display blocks (commit 60a19b084), so these are no longer "N/A".

    Rather than Wildcat!'s named security profiles, the argument is a Synchronet **Access Requirement String** (e.g. `SYSOP`, `LEVEL40`, `FLAG1A`); both `@IFSEC=ars@` and `@IFSEC:ars@` are accepted. Implemented in `putmsgfrag` alongside the other Wildcat! display-control codes, reusing the same output-suppression flag as `@SHOW@`/`@SYSONLY@`.

    Differences from Wildcat!:
    - The codes may appear anywhere in a line (not only column 0) and share a line with other text/codes.
    - Blocks do not nest (same restriction Wildcat! documents).

    Verified live against a level-50 reader. Documented at https://wiki.synchro.net/custom:atcodes#conditional_display_ifsec

    Still genuinely missing (no equivalent): `@CONFOP@`, `@INCHAT@`, `@MAXRATIO@`, `@NETBAL@`.
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)