CGTerm3.0
GitHub

BBS · demoscene · legacy · 2026

CGTerm 3.0

Terminal for Commodore 64 bulletin boards

PETSCII-native terminal for Commodore 64 bulletin boards: Telnet, file transfers, disk images, cross-platform SDL2 builds for macOS, Linux, and Windows. MagerValp’s CGTerm, carried forward as this scene edition.

< ABOUT >

CGTerm is the client MagerValp’s vision deserves on today’s machines: real C64 boards over Telnet, PETSCII on the glass, transfers and disk images done the way sysops and callers still expect, with SDL2 builds for macOS, Linux, and Windows. Many of us learned the network by watching characters crawl across the screen at 9600 baud, greeting demos before the menu, trading files and mail in a culture that treated knowledge as something meant to move freely. Bulletin boards, the demoscene, and the old curiosity-driven scenes are part of how all of this began; nothing that came later, not even the wave of AI we have now, erases that root. This project exists to keep the line open and the legacy breathing.

The original code is MagerValp’s; this scene edition is a deep refresh by m00p and Genesis*Project, with sysops, swappers, and callers who still think in blocks. I take no credit for MagerValp’s foundation. This release is for the community, the build many of us were waiting for, so BBSing stays a little easier and the people keeping lines up stay visible. New hands at the keyboard are welcome. We stand at the edge of powerful AI and vast clouds, but the glow of this era is still the beginning we build from. That legacy should never die.

Code
m00p (Genesis*Project)
Music
Mr.Death
Support
mermaid
QA
Larry, Jucke, SkyHawk
Original
MagerValp

For callers and sysops (transport security): typical BBS access uses Telnet (cleartext). Traffic can be observed on untrusted networks, as with historical dial-up paths converted to TCP. Use strong, unique passwords per board where possible, and treat the session like any unencrypted terminal connection.

< FEATURES >

Demo splash

Demoscene-style intro in the spirit of greet disks and party screens: vectorballs, plasma, rotozoom, wireframe morph, XM module, sine scroller, greetings; CRT-style power-down when you exit.

Modem sim

Optional connection theatre: green-phosphor look, AT sequence with phone book, dial tone, DTMF, and carrier-style audio (approximate V.34-era line). For anyone who still remembers pacing the scroll at 9600 baud. Toggle from the menu.

Transfers

Multi Punter (batch), Rainbow, XMODEM variants (checksum, CRC, 1K), and Punter. Progress UI, optional hex view, cancel with confirmation, free-space checks, and host-side filename conversion between PC extensions and C64 comma types (e.g. .prg,p).

Disk images

Open D64, D71, and D81 images like folders; set an image as download target; extract and inject PRG/SEQ/USR with PETSCII-aware names and block accounting.

Fonts

Ten header and nine body pixel fonts, selectable in settings, plus support for adding converted TTF/OTF assets through the project’s usual pipeline.

Keyboard

Swedish, US, and German-oriented layouts on macOS, Linux, and Windows; keyboard test screen with PETSCII mapping; clipboard paste and macro record/playback for long sequences.

UI

Categorized menus, colour-distinguished file selector (directories, disk images, files), consistent accent theme, and visible transfer path so download and upload directories stay obvious.

Bookmarks

Forty entries with host, port, alias, and terminal mode fields; per-board notes file; numeric quick-connect where configured; connection history log.

Hardening

Bounded string handling on sensitive paths, filename validation for downloads, protocol length limits, Telnet IAC separated from raw transfer mode, and warning-clean builds on GCC and Clang.

Platforms

Windows portable archive; Linux via make and optional make install; macOS built from source with SDL2 and optional libopenmpt (see README). MinGW cross-compile from Unix hosts is documented for developers.

< SCREENSHOTS >

Click a thumbnail for fullscreen. Keyboard: Tab to move focus, Enter to open, Escape to close the viewer.

< CHANGELOG >

cgterm@localhost:~$ cat CHANGELOG

CGTERM 3.0 / SCENE EDITION full changelog / nfo Genesis*Project · 2026

─── what is this release ───

Major update to the C64 BBS terminal MagerValp gave the scene. Same heart: real boards, PETSCII on glass, files in motion. The codebase is cleaned and lifted onto SDL2; the polish nods to demoscene intros, modem-era mood, batch transfers, disk tools, and UI work for people who still enjoy watching bytes.

─── file transfers & disk images ───

  • [+]Punter: classic C64 BBS protocol (send + receive)
  • [+]Multi Punter: batch download + upload, filename announce, C*BASE-style batch end, drain between files
  • [+]Rainbow: upload and download where the BBS supports it
  • [+]XMODEM: checksum, CRC, and 1K block variants
  • [+]Interactive transfer UI: progress, live hex feed, cancel with confirm, PC ↔ 1541 style cues
  • [+]D64 / D71 / D81: open as directories, pick image as download target, extract / inject PRG/SEQ/USR, PETSCII-aware names, block-free checks
  • [+]Filename conversion: e.g. .prg,p for C64 naming
  • [+]Temp files: mkstemp / Windows temp APIs for uploads & downloads

─── terminal, ansi & keyboard ───

  • [+]PETSCII + ANSI (80 cols in ANSI), toggle from menu
  • [+]Telnet IAC for chat mode; raw bytes for protocols so 0xFF isn’t eaten
  • [+]Clipboard paste, macro record/playback
  • [+]Keyboard profiles (US / SE / DE) + keyboard test view
  • [+]PETSCII modifiers: Commodore key, control colours

─── ui / scene polish ───

  • [+]Demo-style splash: vectors, plasma, rotozoom, wireframe morph, scroller, greetz; tracker music on supported builds; CRT power-off on quit
  • [+]Modem theatre: phosphor, fake AT dial, phone book, V.34-ish audio (menu toggle)
  • [+]Menus by category; pink / cyan / neon theme
  • [+]File selector: colour hints for dirs, disk images, files; path line in menu
  • [+]Font system: header + body pixel fonts, in-app picker, TTF/OTF pipeline

─── bookmarks & session ───

  • [+]40 bookmark slots: host, port, alias, term mode
  • [+]Per-bookmark notes (separate file)
  • [+]Quick connect: number keys 0–9
  • [+]Connection history logging

─── security & stability ───

  • [+]Downloads: filename validation; block .., slashes, controls, Windows reserved devices (CON, COM19, …)
  • [+]Punter: bounded handshake; block length clamped to internal buffer
  • [+]Multi-Punter: bounded remote filename
  • [+]Config: hostname/alias/port validation; safer path joins
  • [+]net_connect: reject empty host; close socket on failed resolve (no FD leak)
  • [+]Bookmarks: rollback host alloc if alias malloc fails
  • [+]ANSI: clamp CSI params against pathological repeat loops
  • [+]Prefer bounded string APIs; clean build on GCC/Clang

─── networking ───

  • [+]Non-blocking TCP connect: ESC can cancel
  • [+]Unix: getaddrinfo + AI_ADDRCONFIG → IPv4
  • [+]Windows zips may use legacy resolver; still IPv4-first for BBS interop

─── audio / music ───

  • [+]Windows: SDL_mixer + libmikmod path (XM/MOD/IT) where enabled
  • [+]macOS/Linux: libopenmpt + SDL when built with those deps
  • [+]Volume control; graceful fallback if audio init fails

─── platforms & build ───

  • [+]Windows: portable ZIP
  • [+]Linux: make + optional sudo make install
  • [+]macOS: from source, SDL2 + optional libopenmpt
  • [+]Cross-compile: MinGW from Unix documented

─── docs & help ───

  • [+]In-app help: shortcuts, transfers, ANSI, C*BASE user cheatsheet, sysop hints

─── known limitations ───

  • [!]BBS = classic Telnet, cleartext on the wire. Trust your network; don’t reuse critical passwords.
  • [!]Roadmap (not promised): TLS where boards support it, file digests, sandboxing; see GitHub issues/PRs.

─── greetz & credits ───

Respect forever to MagerValp for the original CGTerm and the BBS culture it stands for. Scene Edition: code m00p (Genesis*Project), music Mr.Death, support mermaid, QA Larry / Jucke / SkyHawk, and every sysop still running a C64 (or bridge) board.

< DOWNLOAD >

Windows

Portable archive · no installer

Extract the zip and run cgterm.exe. Dependencies ship with the archive as documented in the bundle.

CGTerm-3.0-win32.zip

macOS

Build from source

Apple Silicon and Intel: install SDL2 and libopenmpt (see README), clone or unpack the source, then make. Creating an application bundle is optional and up to your packaging preference.

Source tarball Clone on GitHub

Linux

Makefile install

tar xzf CGTerm-3.0-source.tar.gz
cd CGTerm-3.0
make && sudo make install
CGTerm-3.0-source.tar.gz

< WEB TERMINAL >

In-browser session to Frozen Floppy BBS via fTelnet. The widget loads only after you press the button below (external script; allow it if your browser blocks third-party content).

bbs.retrohack.se:64128

fTelnet is not loaded until you request it, to keep the page fast and avoid unnecessary third-party requests.

Native client: cgterm bbs.retrohack.se 64128

< GREETZ >

  • Abyss Connection
  • Arsenic
  • Booze Design
  • Camelot
  • Cosine
  • Crest
  • Danish Gold
  • Dutch Cracking Team
  • Dynamic Duo
  • Eaglesoft
  • Eclipse
  • Excess
  • Fairlight
  • Finnish Gold
  • FLT
  • Genesis Project
  • Hitmen
  • Hokuto Force
  • Ikari + Talent
  • Laxity
  • Nostalgia
  • Onslaught
  • Razor 1911
  • Red Sector
  • Remember
  • Software of Sweden
  • Success + TRC
  • Swedish Cracking Crew
  • The Sharks
  • The Silents
  • The Supply Team
  • Triad
  • TRSI
  • West Coast Crackers
  • Information that moves freely
  • Demoscene craft
  • Curiosity in the old exploration tradition
  • Every sysop still holding a line open

Feedback and discussion welcome on the board: telnet://bbs.retrohack.se:64128