A unified Free Pascal library for reading / writing BBS-side
file-area databases across multiple BBS systems. Sibling to
fpc-msgbase and fpc-ftn-transport; same vendoring model.
Initial high-priority backend list (per consumer ask):
- RemoteAccess (RA)
- Maximus
- Synchronet
- Renegade 1.4
Secondary (Allfix already has type defs to lift from):
- PCBoard
- ProBoard
Skeleton only -- no concrete units yet. Repo layout:
README.md family pitch + scope summary
docs/scope.md what's in / out, cooperative boundaries
docs/architecture.md layered design + cooperation diagram
with fpc-ftn-transport's tt.tic.* for the
full fileecho-toss flow
build.sh multi-target cross-compile harness
run_tests.sh x86_64-linux test runner
fpc.cfg default compiler config
.gitignore standard FPC artefacts
Next session: bbs.api (abstract TBbsBase) + bbs.types
(TFileArea / TFileEntry / etc.) so the first concrete adapter
has a target shape to fill in.
Reference for adapter ports: ~/Source Code/originalallfix/AllFix.1/
TPFILES/ALLFIX/ -- 92 .PAS files, ~56K lines. PCBoard
(_PCBOARD.PAS + PCBTYPES.PAS), ProBoard (PROBOARD.PAS), TAG
(TAG.PAS), Synchronet (SYNCHNET.PAS), and the file-area
plumbing (FILECHO.PAS, FILEBONE.PAS, FAREA.PAS, DOSCAN.PAS) are
the primary lift sources.
TIC processing intentionally NOT in this repo -- TIC is a
wire / file-echo concern, lands in fpc-ftn-transport as
tt.tic.* modules. Same logic that put PKT in fpc-ftn-transport
rather than fpc-msgbase.
4.2 KiB
fpc-bbs — scope
This document defines what fpc-bbs owns versus what lives in sibling libraries. Core principle: BBS-side storage of file areas, configs, and (eventually) user databases lives here. Wire / queue / TIC processing lives in fpc-ftn-transport. Message-base storage lives in fpc-msgbase.
In scope
File-area databases
| Concern | Notes |
|---|---|
| FILES.BBS / DIR.LST per-area listings | BBS-specific format variants (PCBoard, ProBoard, RA, Maximus, Synchronet, Renegade 1.4) |
| File-area metadata | Area name / description / path / passwords / sysop / Magic / etc. |
| Add / remove / list file entries | Per-BBS write semantics (some are flat text, some are binary databases) |
| File flags | New-file marker, hatch source, sysop-only, free-download, etc. |
| Long descriptions | Multi-line file descriptions per FSC-0046 / vendor extensions |
BBS configuration readers
| Concern | Notes |
|---|---|
| Per-BBS main config | RA CONFIG.RA, Maximus MAX.PRM, Synchronet *.cnf, PCBoard PCBOARD.DAT, ProBoard cfg, Renegade *.dat |
| File-area config | Where FILES.BBS lives, area sec levels, conf number, etc. |
| Path resolution | BBS-relative path conventions, drive remapping (DOS heritage) |
User databases (deferred)
| Concern | Notes |
|---|---|
USERS.BBS / USER.DAT reads |
Lifted into a fpc-bbs sub-library only when an actual consumer needs it. Allfix doesn't, NetReader doesn't, Fimail doesn't. Adding speculatively is scope creep. |
Out of scope (lives elsewhere)
| Concern | Lives in |
|---|---|
| Message bases (Hudson / JAM / Squish / etc.) | fpc-msgbase |
| FTN transport (PKT / BSO / ArcMail / FilQueue / DBridge) | fpc-ftn-transport |
| TIC file format (FSC-0087) | fpc-ftn-transport (tt.tic.format) |
| TIC file processing (validate, toss, forward) | fpc-ftn-transport (tt.tic.processor) |
| BinkP session, EMSI, ZModem | comet / nova |
| Net mailer / outbound polling | comet / nova |
| BBS user authentication / dial-in | not our concern (each BBS owns its login flow) |
Cooperative boundaries
with fpc-ftn-transport
A typical fileecho toss flow:
comet/ mailer drops inbound.ticand the corresponding file into the inbound dirtt.tic.processorvalidates the .TIC against the area password table, sniff the file for integritytt.tic.processorcalls intofpc-bbs's appropriate backend to:- Resolve the destination file area path for this echo (per BBS config)
- Move the file into that area
- Append the FILES.BBS / DIR.LST entry
- Mark new-file flag
tt.tic.processorthen forwards the .TIC to downlinks via BSO, hatching new .TIC files for each subscriber
fpc-bbs is the seam where transport hands off to BBS storage.
Same shape as fpc-msgbase is the seam where transport hands
off to message storage.
with fpc-msgbase
No direct dependency. A consumer (Allfix, future tossers) may use both in parallel: fpc-msgbase for netmail / echomail handling, fpc-bbs for fileecho handling.
with comet
No direct dependency. comet handles BinkP sessions; produces inbound files that tt.tic.processor picks up and tt.tic.processor calls into fpc-bbs.
Naming
Unit prefix bbs. —
| Namespace | Owner |
|---|---|
bbs.api |
top-level facade, abstract TBbsBase, factory |
bbs.types |
shared types: TFileArea, TFileEntry, TBbsConfig, etc. |
bbs.events |
TBbsEvents mirroring TMessageEvents shape |
bbs.fmt.<vendor> |
per-BBS adapter (PCBoard, RA, Maximus, etc.) |
Decision log
-
2026-04-18 — Repo bootstrapped. Initial high-priority backend list: RemoteAccess, Maximus, Synchronet, Renegade 1.4. Secondary: PCBoard, ProBoard (Allfix already has type defs). Allfix v6 source tree (~/Source Code/originalallfix/) is the primary reference.
-
2026-04-18 — TIC processing kept in fpc-ftn-transport (as
tt.tic.*modules) rather than fpc-bbs. TIC is a wire / file-echo concern, not BBS-side storage. Same logic that put PKT in fpc-ftn-transport rather than fpc-msgbase. -
2026-04-18 — User database support (
USERS.BBS,USER.DAT) deferred indefinitely. No consumer demand; speculative scope.