• src/conio/cg_cio.h cg_cio.m cg_events.msrc/build/Common.gmake src/coni

    From Deucе@VERT to Git commit to main/sbbs/master on Mon Mar 16 12:11:08 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/fef47097a992813a7b89a8af
    Added Files:
    src/conio/cg_cio.h cg_cio.m cg_events.m
    Modified Files:
    src/build/Common.gmake src/conio/CMakeLists.txt Common.gmake GNUmakefile ciolib.adoc ciolib.c ciolib.h src/syncterm/CHANGES CMakeLists.txt COMPILING HACKING.md Manual.txt bbslist.c syncterm.c syncterm.man.in src/xpdev/CMakeLists.txt Common.gmake xpbeep.c xpbeep.h
    Log Message:
    Add native macOS Quartz display backend and CoreAudio sound

    Replace SDL dependency on macOS with native AppKit/Core Graphics for
    display and CoreAudio AudioQueue API for sound. Quartz and SDL are
    mutually exclusive (both need the main thread); CMake and gmake
    automatically disable SDL when Quartz is enabled.

    Display backend (cg_cio.m, cg_events.m):
    - NSWindow/NSView rendering via CGBitmapContext and CGContextDrawImage
    - Internal scaling (xBR) with 1:1 backing pixel mapping on Retina
    - External scaling via CG interpolation (no SyncTERM CPU overhead)
    - vstat stores backing pixels; point conversion at NSWindow boundary
    - macOS virtual keycode to AT Set 1 scancode translation
    - Option = Alt for BBS keycodes; Cmd+Q/Cmd+V as macOS conventions
    - Native NSMenu (SyncTERM, Edit, View) with keyboard shortcuts
    - NSPasteboard clipboard, NSBitmapImageRep icon, NSCursor support
    - applicationDidFinishLaunching: synchronization via semaphore
    - applicationShouldTerminate: and windowShouldClose: enter quit loop

    Audio backend (xpbeep.c):
    - CoreAudio AudioQueue output with triple-buffered playback
    - Callback-driven architecture matching existing xpbeep pattern
    - Auto-detected on macOS; disable with WITHOUT_COREAUDIO

    Build system:
    - CMake: OBJC language, -framework Cocoa/Carbon, WITH_QUARTZ define
    - gmake: .m compilation rules, framework linking, feature detection
    - WITHOUT_QUARTZ option to disable; AUTO mode prefers Quartz on macOS

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

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