fpc-bbs
A unified Free Pascal library for reading and writing BBS-side file-area databases across multiple BBS systems.
Sibling to fpc-msgbase (message-base storage)
and fpc-ftn-transport (FTN wire / queue
/ bundle). Same vendoring model: each library is its own repo,
its own tests; consumers vendor it via cp / rsync; bug fix →
commit here → consumers make pull-fpc-bbs at their convenience
→ rebuild → deploy.
Scope
| Concern | Owned by |
|---|---|
| Message storage (Hudson, JAM, Squish, MSG, PCBoard, EzyCom, GoldBase, Wildcat) | fpc-msgbase |
| FTN transport (PKT, BSO, ArcMail, FilQueue, DBridge) | fpc-ftn-transport |
| TIC processing / file echo (FSC-0087) | fpc-ftn-transport (tt.tic.*) |
| BBS file-area databases (FILES.BBS, DIR.LST, per-BBS variants) | fpc-bbs |
| BBS config readers (per-BBS .CFG / .DAT / .PRM / .CTL formats) | fpc-bbs |
| BBS user databases (USERS.BBS, USER.DAT) | fpc-bbs (when needed) |
Initial backends (priority order)
| BBS | Priority | Reference |
|---|---|---|
| RemoteAccess (RA) | high | RA's CONFIG.RA + FAREA.RA |
| Maximus | high | Maximus PRM + AREA.DAT |
| Synchronet | high | SBBS XSDK conventions |
| Renegade 1.4 | high | Renegade 1.4 binary configs / file area files |
| PCBoard | secondary | PCBoard 14/15 + Allfix's PCBTYPES.PAS head start |
| ProBoard | secondary | ProBoard CFG + Allfix's PROBOARD.PAS head start |
Allfix v6 (~/Source Code/originalallfix/AllFix.1/TPFILES/ALLFIX/)
is the primary reference — its file-area handling already covers
several of these, and the migration is the practical motivation
for this library.
Status
See CHANGELOG.md for the full release history
and docs/backlog.md for the per-release
cadence through the v0.1.0 API freeze. Downstream consumers
pin by the latest vX.Y.Z tag, not commit hash.
The framework (bbs.types / bbs.events / bbs.api) shipped
in v0.0.2. Individual BBS adapters land one family per minor
release. Re-read CHANGELOG before integrating any specific
backend -- status per family is recorded there with the release
that landed it and any known limitations.
Naming
Unit prefix: bbs.<category>.<name>.pas —
| Namespace | Owner |
|---|---|
bbs.api |
top-level facade + abstract TBbsBase |
bbs.types |
shared types (TFileArea, TFileEntry, etc.) |
bbs.events |
event hooks (mirrors mb.events / TMessageEvents) |
bbs.fmt.<vendor> |
per-BBS adapter |
bbs.fmt.<vendor>.uni |
unified-API adapter (when warranted) |
All units use {$mode objfpc}{$H+}{$modeswitch advancedrecords}.
Building
Once units land:
fpc -Fusrc -Fusrc/formats examples/example_filearea_list.pas
fpc.cfg covers the multi-target build (i386-go32v2,
i386-win32, i386-linux, i386-os2, x86_64-linux).
Layout
src/ bbs.api, bbs.types, bbs.events
src/formats/ bbs.fmt.<vendor>.pas
docs/ architecture, scope, format notes
tests/ regression tests, sample data
examples/ small CLI programs that double as smoke tests
Documentation
docs/architecture.md— layered designdocs/scope.md— per-concern boundariesdocs/format-notes/— per-BBS quirks
Family
| Library | Concern | Status |
|---|---|---|
comet |
Comet daemon (session/WFC/routing; wraps fpc-binkp + fpc-comet) |
shipped (1.2.2) |
fpc-log |
Shared TLogProc logger interface for every fpc-* lib |
shipped (0.1.0) |
fpc-crypto |
Shared crypto primitives — MD5 (go32v2-safe), SHA-256/384/512, Ed25519 | shipped (0.1.0) |
fpc-msgbase |
Message-base storage (8 formats) + mb.address leaf |
shipped (0.7.0) |
fpc-ftn-transport |
FTN transport tier (PKT / BSO / FilQueue / DBridge / Filebox / ArcMail) | shipped (0.6.0) |
fpc-binkp |
BinkP/1.1 + Argus / binkd extensions (CRYPT / NR / ND / PLZ / EXTCMD-GZ / ED25519 / DES-CBC / TRF / FREQ) | shipped (0.2.1) |
fpc-comet |
Native Comet protocol (FSP-COMET-001; X25519 + ChaCha20 + Ed25519 via fpc-crypto) |
shipped (0.2.0) |
fpc-filexfer |
XMODEM / YMODEM / ZMODEM / SEAlink / Hydra / Janus / nova | shipped (0.1.1) |
fpc-emsi |
EMSI / WaZOO / FTS-1 / IEMSI session handshakes + dispatcher (MD5 via fpc-crypto) |
shipped (0.1.3) |
fpc-bbs |
BBS file-area databases | shipped (0.0.5, modernized + RA family + Max3), this repo |
fpc-ftpmail |
FTP / SFTP server lib (file-tree provider) | proposed — open slot |
fpc-dbapi |
DB abstraction | in progress (Fastway) |
fpc-filebase |
(folded into fpc-bbs as the file-area-database side) |
— |
The tt.tic.* modules (file-echo TIC handling per FSC-0087) live
in fpc-ftn-transport -- TIC processing is transport-tier and
rides BSO/ArcMail rails. fpc-bbs is the BBS-side storage that
the tosser writes into after .TIC validation.