# DFTZ BBS — Credits & References

## Project
- **DFTZ BBS** — Don't Feed The Zombies
- **Author** — Nathan Brewer ([brewersystems.com](https://brewersystems.com), [github.com/nathanabrewer](https://github.com/nathanabrewer))
- **Built with** — Claude Code (Anthropic)

---

## BBS Heritage
The DFTZ BBS interface is inspired by 1990s bulletin board systems, particularly:
- **Wildcat! BBS** — Mustang Software (commercial BBS platform)
- **Renegade BBS** — ANSI art and lightbar menus
- **WWIV BBS** — Numbered menu systems
- **PCBoard** — Command-line style navigation
- IBM VGA text mode aesthetics and ANSI color palette

## Fonts
- **IBM VGA 8x16** — [viler-int10h/vga-text-mode-fonts](https://github.com/viler-int10h/vga-text-mode-fonts) (MIT License)
  - Authentic DOS-era VGA font served via jsDelivr CDN

---

## Blockchain / Smart Contracts
- **Solidity** — Smart contract language ([soliditylang.org](https://soliditylang.org))
- **OpenZeppelin Contracts** — [github.com/OpenZeppelin/openzeppelin-contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) (MIT License)
  - IERC20 interface used in DFTZBBS.sol
- **ethers.js v6** — [github.com/ethers-io/ethers.js](https://github.com/ethers-io/ethers.js) (MIT License)
  - Browser wallet connection, contract interaction, event queries
  - Loaded from [esm.sh](https://esm.sh)
- **Base** — [base.org](https://base.org) (Coinbase L2)
  - Base Sepolia testnet for contract deployment
- **EIP-4844 / Dencun** — Ethereum blob transactions that make L2 data posting affordable

### Contract
- **DFTZBBS.sol** — On-chain BBS contract (registration, wall posts, direct messages, welcome gifts)
- **DFTZToken** — ERC20 community credit token (originally from [notflix_protocol](https://github.com/nathanabrewer/notflix_protocol))

---

## FT8 Codec
- **ft8ts** — [github.com/e04/ft8ts](https://github.com/e04/ft8ts) (GPL-3.0)
  - Pure TypeScript FT8/FT4 encoder and decoder
  - Ported from WSJT-X v2.7.0 Fortran source
  - Used for FT8 signal decoding in the JS8 Station door game
  - npm: `@e04/ft8ts`

- **WSJT-X** — [wsjt.sourceforge.io](https://wsjt.sourceforge.io) (GPL-3.0)
  - Original FT8/FT4 implementation by Joe Taylor (K1JT) et al.
  - The (174,91) LDPC code and signal processing algorithms that ft8ts is based on

- **ft8_lib** — [github.com/kgoba/ft8_lib](https://github.com/kgoba/ft8_lib) (MIT License)
  - Karlis Goba (YL3JG) — Lightweight C implementation of FT8
  - The foundational library that many browser FT8 projects build on

---

## JS8 Codec
- **JS8Call** — [github.com/js8call/js8call](https://github.com/js8call/js8call) (GPL-3.0)
  - Jordan Sherer (KN4CRD) — JS8Call application and protocol.
  - Source of the (174,87) LDPC code, CRC-12 framing, Costas arrays, synchronization, and message transport.
- **IQ Hub JS8 browser adapter** — [github.com/lxe/iqhub](https://github.com/lxe/iqhub) (project MIT; vendored JS8 core GPL-3.0)
  - Receive-capable browser build derived from JS8Call-improved 3.0.3.
  - Replaces FFTW with the BSD-licensed KISS FFT adapter and runs as single-file WASM.
  - Original adapter source, build script, upstream notice, and GPL license are retained under `js/vendor/js8/` and `scripts/build-js8-wasm.sh`.

### DFTZ JS8 Bench
The main-site bench uses the upstream-derived WASM modem rather than the earlier experimental JavaScript correlation decoder. It provides:

- JS8 Normal-mode encode of an exact 12-symbol transport frame to 79 tones.
- Continuous-phase 12 kHz audio synthesis with exclusive play/pause/stop/scrub transport and WAV export.
- Synchronized waveform and 200–3000 Hz waterfall rendering.
- Browser-decoded soundbed mixing with placement/gain controls, clipping prevention, combined WAV export, and per-slot mixed-output CRC verification.
- Audio-file and 15-second microphone capture with browser resampling to 12 kHz mono.
- Upstream synchronization, LDPC(174,87), and CRC-12 validation before a frame is displayed.
- Interpretation of heartbeat, compound, and directed transport frames.
- Full-paragraph composition with the JS8Call Normal-mode Huffman table, ordered first/middle/last transmission markers, consecutive-slot audio, and complete-message reassembly.
- Exact multi-frame compatibility vectors generated from upstream `Varicode::packDataMessage`'s Huffman path.
- A checked compatibility vector that resolves `SJWkJnSNwzqH` / type 3 to `KD8SKZ → KN4CRD · HEARTBEAT SNR -14`.
- An unmodified upstream JS8Call `A_1_4.wav` fixture test that independently recovers all four expected Normal-mode signals.

The former hand-ported JavaScript decoder and the complete dial-up interface remain available under `bbs/` for preservation and comparison. They are not used by the primary bench.

The browser paragraph composer intentionally uses the supported Normal-mode Huffman data format rather than vendoring JS8Call's very large JSC dictionary tables. JS8Call can decode these frames, but the desktop application may encode the same paragraph into fewer frames with JSC.

---

## Related Projects Referenced During Development
- **webft8** — [github.com/webft8/webft8](https://github.com/webft8/webft8) (AGPL-3.0) — Browser FT8 decoder
- **ChromeFT8** — [github.com/Transwarp8/ChromeFT8](https://github.com/Transwarp8/ChromeFT8) (MIT) — Chrome extension FT8 decoder
- **ft8play** — [github.com/pengowray/ft8play](https://github.com/pengowray/ft8play) — Online FT8 player
- **fTelnet** — [github.com/rickparrish/fTelnet](https://github.com/rickparrish/fTelnet) — Web BBS terminal client
- **ENiGMA½ BBS** — [github.com/NuSkooler/enigma-bbs](https://github.com/NuSkooler/enigma-bbs) — Node.js BBS software
- **ansilove.js** — [github.com/ansilove/ansilove.js](https://github.com/ansilove/ansilove.js) — ANSI art renderer
- **16colo.rs** — [16colo.rs](https://16colo.rs) — ANSI art archive and renderer
- **RustFT8** — [github.com/jl1nie/RustFT8](https://github.com/jl1nie/RustFT8) — Rust port of ft8_lib

---

## Web APIs Used
- **Web Audio API** — Microphone capture, browser audio-file decoding, resampling, tracked playback, and modem-audio generation
- **WebAuthn / Credential Management** — Referenced but not used (passkeys were per-device)
- **MetaMask / EIP-1193** — `window.ethereum` provider for wallet connection
- **localStorage** — Offline BBS state persistence

---

## Standards & Protocols
- **FT8** — Franke & Taylor, 2017. 8-GFSK modulation, (174,91) LDPC code, 15-second transmissions
- **JS8** — Jordan Sherer (KN4CRD). Modified FT8 for keyboard-to-keyboard QSOs. (174,87) LDPC code, multiple speed modes
- **ERC-20** — Ethereum token standard (EIP-20)
- **EIP-4337** — Account abstraction / Paymaster (referenced, not implemented)
- **Solidity ^0.8.20** — Smart contract language

---

## License Notes
- ft8ts and JS8Call are GPL-3.0 — the DFTZ JS8 decoder port inherits this license for the codec components
- ft8_lib is MIT
- OpenZeppelin is MIT
- ethers.js is MIT
- IBM VGA fonts are covered under viler-int10h's license terms

---

*This file maintained as part of the DFTZ BBS project. Last updated 2026-03-24.*
