Expand description
Front-end independent core of the BadTerm BBS client: CP437 handling, ANSI-BBS terminal emulation, the telnet protocol, the dialing directory and connection sessions (telnet, raw TCP, SSH, RLogin and modems) with file transfers.
Re-exports§
pub use ansi::Encoding;pub use ansi::TermEvent;pub use ansi::Terminal;pub use dialer::Directory;pub use dialer::Entry;pub use dialer::Protocol;pub use screen::Cell;pub use screen::Color;pub use screen::Screen;pub use session::AuthPrompt;pub use session::NetEvent;pub use session::PromptKind;pub use session::Session;pub use session::SessionConfig;pub use session::SessionEvent;
Modules§
- ansi
- ANSI-BBS / ANSI X3.64 terminal emulation.
- atascii
- Atari 8-bit BBSes: ATASCII, on the 40x24 screen of the Atari’s text mode, light text on blue.
- audio
- SyncTERM’s audio APCs (
ESC _ SyncTERM:A;... ESC \), as CTerm documents them: 256 slots of sound (16-bit stereo at 44.1 kHz) filled from files in the cache or sent inline (WAV, AIFF, VOC and Ogg Opus are decoded here), or synthesized; and 16 channels the BBS queues them on, with fades, loops, crossfades and volume. Synchronet’s doors play their sound effects and music this way. - autologin
- Logging in with the entry’s stored user name and password: answering the BBS’s prompts by itself, or one step at a time on the user’s request (Alt-L).
- avatar
- AVATAR (AVT/0 and AVT/0+): the compact screen codes of Opus, Maximus and other FidoNet-era BBSes, interpreted alongside ANSI.
- cp437
- IBM code page 437 <-> Unicode conversion.
- dialer
- The dialing directory: saved BBS entries, stored as TOML, with import and
export in SyncTERM
.lst, CSV, JSON and TOML formats. - export
- Turning screen contents back into files or clipboard text: plain text,
and ANSI as BBS art viewers and editors expect it (CP437 bytes for
.ansfiles, or Unicode for pasting). - kermit
- Kermit file transfers, as C-Kermit, G-Kermit and Kermit-95 speak them, in both directions.
- modem
- Dialing out with a real modem on a serial port (or anything that acts like one: a USB modem, a WiFi modem, tcpser).
- music
- ANSI music: the BASIC
PLAYlanguage that BBSes send betweenESC [ M(orESC [ N,ESC [ |) and Ctrl-N, turned into tones to play. - palette
- Color definitions: the 16-color CGA/VGA palette plus the xterm 256-color extension and 24-bit RGB used by modern BBS software.
- petscii
- Commodore 64 BBSes: PETSCII, on a 40x25 screen in the C64’s colors.
- rip
- RIPscrip 1.54 graphics: the vector scenes, buttons and clickable mouse regions of RIPterm-era BBSes, drawn on a 640x350 EGA canvas under the 80x43 text screen.
- sauce
- SAUCE, the record at the end of most ANSI art: title, artist, group, date, the width it was drawn at, its font and whether it uses iCE colors, plus any comment lines (https://www.acid.org/info/sauce/sauce.htm).
- screen
- The character-cell screen model: a grid of CP437 glyphs with attributes, a cursor, a scrolling region and a scrollback buffer.
- session
- A live connection to a BBS: protocol decoding, terminal state, ZMODEM
transfers and session capture. Networking lives in
crate::transport. - sixel
- Sixel graphics:
DCS p1 ; p2 q <data> ST, as DEC’s VT340 drew them and SyncTERM (CTerm) and xterm do today. Decoded here to anImage, which the screen places at the cursor (seecrate::screen::Screen::place_image). - syncterm
- SyncTERM’s Application Program Commands (
ESC _ SyncTERM:... ESC \), as CTerm documents them: a cache of files the BBS stores on this machine, pictures (PPM and JPEG XL, from the cache or sent inline) drawn anywhere on the screen with clipping, flips, zoom and masks, and copying and pasting pixels. Synchronet’s graphical doors (SyncDoom and the like) draw with these. - telnet
- Telnet protocol (RFC 854) with the option negotiation a BBS client needs: BINARY (RFC 856), ECHO (857), SGA (858), TERMINAL-TYPE (1091) and NAWS (1073).
- tls
- Telnet over TLS (“TelnetS”, usually port 992), on rustls with the same ring crypto as SSH.
- transfer
- File transfers: ZMODEM here, XMODEM and YMODEM in
crate::xmodem, and Kermit incrate::kermit. - transport
- Network transports. Each connection runs on its own background thread
and reports
NetEvents through a callback; the caller writes through theWriterhanded over inNetEvent::Connected. - update
- Checking for a newer BadTerm: one HTTPS request for the newest release on the project’s Forgejo, made only when the user has turned the check on. It sends nothing but the request itself (with a “BadTerm/x.y.z” user agent).
- xmodem
- XMODEM (checksum, CRC and 1K) and YMODEM (batch, and the streaming YMODEM-G) file transfers, for the BBSes and doors that offer them.