Commit Graph

16 Commits

Author SHA1 Message Date
b79e7fb31d Trim verbose block comments, add docs/API.md, sentinel cleanup on release
- ma.lock.Release now unlinks the .lck sentinel after releasing
  the OS lock (SysUtils.DeleteFile to avoid Windows API collision)
- Unit headers trimmed to standard dev-comment form (purpose only)
- docs/API.md: complete API reference with runnable examples,
  event types, locking semantics, tosser wiring, native-backend
  drop-down pattern, per-format cheat-sheet
- README links to the new doc
2026-04-15 09:34:05 -07:00
ba26309916 Multi-board Hudson sample generator + Board field on TUniMessage
- TUniMessage.Board: conference/board number preserved across
  the adapter layer for Hudson/GoldBase/EzyCom/Wildcat/PCBoard
- ma.api.Open: momCreate now ensures the parent directory exists
  before the sentinel lock tries to create itself
- tests/tools/make_hudson_sample: builds a 20-conference / 7793-
  message Hudson base at /tmp/ma_hudson_sample from real JAM
  source areas.  Respects Hudson's 32767 MsgNum ceiling.  Emits
  CONFERENCES.TXT manifest mapping board numbers to area names.
- tests/tools/verify_hudson_sample: per-board count verifier
  that cross-checks against the manifest.
2026-04-15 08:54:59 -07:00
d43f996604 Wildcat: full SDK init (InitWCglobal + LoadMakeWild + BTInitIsam); test across 7 conferences
The TWildcatBase.OpenConference was creating a TMsgDatabase without
populating the SDK globals, causing access violations on MwConfig.
Now calls the full Register sequence: InitWCglobal, LoadMakeWild,
BTInitIsam before opening; BTExitIsam + DisposeWCglobal on close.

test_wildcat reads conferences 0..6 from vendored testdata (copied
to /tmp/ma_wildcat so the source tree stays read-only).
2026-04-15 08:41:02 -07:00
c68a225ad9 Tests + examples: 11 tests passing, full 6-target build matrix
- ma.api: add per-instance FOpCS critical section to serialise Do*
  calls (fixes racing writers that dropped 8/100 messages)
- .uni adapters: momCreate pre-creates empty format files
- example_read/example_write/example_tosser
- tests: test_read (samples), test_roundtrip (all 5 storage formats),
  test_lock (4 threads/100 msgs), test_batch (5 pkts*10 msgs/3 threads)
- run_tests.sh: single-command test runner
- build.sh: per-target binutils (i386-linux, i386-freebsd12, i386-emx)
2026-04-15 08:29:37 -07:00
c3da26c0da Wildcat: full adapter + $MODE TP on wcmisc; ma.batch concurrent tosser; 9/9 backends 2026-04-15 07:33:04 -07:00
0f05c1d63a Wildcat backend stubbed behind ENABLE_WILDCAT until SDK $H+ cleanup 2026-04-15 05:12:24 -07:00
8f8431af7f Add PKT, PCBoard, EzyCom, GoldBase adapters; PacketRecord+VersionNum+FlagsToFido in ma.types 2026-04-15 05:07:40 -07:00
102df47432 Add JAM, Squish, MSG adapters; case-insensitive *.MSG open; verified vs real samples 2026-04-14 19:38:22 -07:00
800526452a Add Hudson adapter + example_read; writers lock, readers coexist on RO FS 2026-04-14 14:55:32 -07:00
3bc4cb7bec Add ma.api: TMessageBase abstract class, factory, format autodetect 2026-04-14 14:34:50 -07:00
90da74ccf7 Add ma.paths: per-format path derivation, case-insensitive resolution, lock file naming 2026-04-14 14:32:41 -07:00
d6ad22c3c1 Add ma.lock: layered lock — TRTLCriticalSection + fpFlock/LockFileEx/DosSetFileLocks 2026-04-14 14:31:38 -07:00
2d9dfb8192 Add ma.events: thread-safe TMessageEvents, hook list, default console log 2026-04-14 13:47:04 -07:00
336a6a7a15 Add ma.types: TUniMessage, attr+date conversions, build script for 6 targets 2026-04-14 11:31:41 -07:00
234cfeabae Vendor WildCat 4 SDK as src/wc_sdk/, add to fpc.cfg search path 2026-04-14 10:45:31 -07:00
ccdaa7dc90 Copy format units from allfix as ma.fmt.* (verbatim, unit names renamed) 2026-04-14 10:44:42 -07:00