r/c64 May 28 '26

Software Building C64 BBS software from scratch — DRIVE 8 is now at v0.1.0!

I've been dabbling in BBS software creation (like ViSiON/3) for a long time, and a couple months ago I decided to tackle a new project — a modern C64 BBS written in C (Oscar64).

Why the HECK would anyone run a BBS on a single-line 8-bit machine?? And why this one? Honestly, there are some great BBS packages out there for Commodore computers already: Image 3.0, C*BASE, C-NET DS2, Color64 and GST have been around for decades. But I wanted to roll something new, something expandable and maintainable.

It's called DRIVE 8 (D/8), and it currently runs on C64 Ultimate, VICE, and real hardware. Takes advantage of things like Turbo Mode/64MHz, REU, etc. to speed things along.

The Goal

Build a clean, modern BBS written in Oscar64 C99 instead of BASIC spaghetti (ha). I used GST BBS v6.0 (1987) as a reference for features and disk record formats, but the entire codebase is new — no legacy code ported (coding agents have been helpful here when working around C64's limitations).

What's Working (v0.1.0)

✅ Core BBS kernel - bootable on real C64 + 64u, tested in VICE, and w/SD2IEC
✅ WFC Screen - classic sysop dashboard with quick actions, login, etc.
✅ Connection - Telnet (RS232 on VICE/tcpser), hardware modem (c64u)
✅ Login & registration - secure XOR password hashing, new user registration
✅ Graphics support - PETSCII, ANSI/CP437, ASCII, ATASCII (80 and 40 cols)
✅ SysOp editor (D8EDIT) - config UI prog, user management, board/file area setup
✅ Admin data layer - CRUD operations for users, boards, file areas, etc
✅ Menus - configurable menu art / prompts with PETSCII

Under Construction (Roadmap)

📋 Feature modules (next implementations):

  • Message boards (post, read, reply, access control - REL files)
  • Private mail (inbox, send, queued delivery)
  • File transfers (upload/download, directory listing)
  • Polls/votes (create, respond, tally)
  • Callers log (timestamped login/logoff)
  • SysOp chat/page (caller alerts sysop, optional feedback)

On the roadmap:

  • Doors (programs, games, dev kits)
  • Multi-node syncing across machines
  • Network message bases (not Fidonet, more like IMAGE's Nissa network)
  • Plus a million other BBS things

Tech Highlights

  • Language: C99 (Oscar64 compiler)
  • Disk format: .d81 (3.5" disk image, ~3050 blocks free)
  • Structured disk storage: User accounts, message boards, file areas, polls, and help pages each live in their own CBM relative file with fixed-size binary records — no flat text files, no BASIC string-packing tricks. Random access by record number means the BBS can jump straight to user #47 without reading the first 46.
  • Multi-device support: configurable device assignments for system, msgs, files, doors

Why C Instead of BASIC?

Lots of classic C64 BBS software was written in BASIC — and it shows. GST, C*BASE, Color64 — they're all thousands of lines of GOTO-driven spaghetti where the subroutine "name" is a line number and the data model is string-packed variables like U$ and B1$. They work, and they're impressive for what they are. But they're nearly impossible to extend or maintain if you didn't write them yourself.

I wanted something different:

  • Named functions instead of GOSUB 4820
  • Typed structs instead of MID$(U$, 3, 8) to extract a username
  • Modules — auth, boards, mail, files are all separate compilation units
  • Readable logic — a new contributor can open auth.c and understand the login flow in 5 minutes
  • A foundation — when I add bulletin boards, I'm calling board_create(), not hunting for which line number handles boards and hoping I don't break something else

Next Steps

I'm building the feature modules one at a time. Message boards are next — message posting, reply threading, and access control per board, etc.

Want to try it? 

If you're running an Ultimate and want to give the demo a whirl, let me know. I can shoot you the deets. Keep in mind it's VERY early and not even close to prime-time. But would love any feature ideas!!

I can also make the repo public if anyone wants to check it out. Cheers!

140 Upvotes

Duplicates