TERM

command

Fullscreen telnet-style terminal. Menu and status colours follow the OPTION THEME palette (same as the other themed apps). The terminal pane and letterbox background are always black. Incoming text defaults to VGA grey, not the theme foreground. A block cursor is on when a session starts; the host can hide or show it with CSI ?25l / ?25h.

TERM [host$, port] TERM REPLAY “file$” [, speed] TERM SESSIONS

host$ - IP/DNS, or “demo” / “replay” for local/QEMU helpers port - TCP port file$ - TERM LOG capture path for REPLAY speed - optional replay rate: 0 (default) as fast as possible, 1 real

time from the log's ms stamps, 2 double speed

TERM SESSIONS lists saved logs (see below)

With no arguments TERM starts disconnected; use Alt+T and Bookmarks to connect from a saved favourite or add a new one. With host$ and port it connects at once (up to about 25s for DNS+TCP). Failures say Network not available, DNS failed, TCP timeout, or TCP refused.

Default is an 80-column pane centred on a black background (boxed, MODE 14 960x540). Terminal-menu View cycles Full -> Boxed -> 80x25 -> Full, and its label names the current one. Boxed stays on MODE 14 with an 80-column letterbox. Full restores the MODE that was active when TERM started and uses that framebuffer width with no letterbox. 80x25 is the bookmark-manager fullscreen mode: MODE 2 640x400, a full 80x25 pane, NAWS 80x25, and the 8x14 EGA fallback on short displays (see below). The choice is for this TERM session only.

Incoming TCP (and TERM replay) writes a 512KB ring, then the ANSI parser reads that ring. CSI/IAC state spans bytes; an IAC at the read cursor waits until the next byte arrives. Each poll drains the socket into the ring; an empty recv yields and retries so a short idle gap does not stop a burst. The parser yields while reading so TCP ACKs keep the window open, and TERM drains again after the HDMI blit. Stopping at the first empty read starves BBS art and leaves a prompt such as Enter your password stuck until the sender retransmits.

HDMI present is the terminal pane, not unused letterbox. Drawing uses opaque 8x16 cells on PAGE 2, copied to PAGE 0. TERM is a character-cell app, so its pane, menu, and dialog rows stay top-down even under OPTION Y_AXIS UP. A line scroll updates the cell buffer and redraws the pane so a burst of BBS ANSI newlines is one present, not a pixel shift per line.

ANSI/VT100 (SGR colours, cursor on/off, CUB/CUF, ED/EL/ECH) plus telnet TTYPE=ANSI and DA/DSR replies for BBS autodetection. Erasing keeps the current SGR background (Background Color Erase), so full-width bars such as irssi’s status line fill to the edge. NAWS reports 80 columns when boxed and the Full MODE width when full. ESC ( B charset sequences are eaten so they do not print a stray B. OSC strings time out. Glyphs are IBM VGA 8x16 (CP437), so box drawing and shade characters 176-178 match a DOS VGA terminal.

Alt+X exits and restores the previous MODE. F10 opens the Terminal menu (WORDPAD-style: the top bar is a full-width menu colour only while the menu is active). The status bar (Alt-X, F10 Menu, Echo, host) is shown only while that menu is open. Echo ON backspace only erases characters typed since the last newline. While a remote session is connected, Ctrl+A (and other control chords) is sent to the remote so GNU screen, tmux and friends get their prefix; use F10 for TERM’s own menu there. A real USB Alt+X still exits.

Scrollback keeps the last OPTION TERM SCROLLBACK lines (default 200) above the pane. Once lines have scrolled off, Page Up / Page Down page through history, Home/End jump to the oldest line or back to live, and q returns to the live pane. Up/Down are sent to the session as normal cursor keys. Press / to search back for text (case insensitive), Enter jumps to the newest match, then n and N step to older and newer matches. The status row shows SCROLL -n while you are back in history; typing any other key returns to the live pane first. Set OPTION TERM SCROLLBACK 0 to disable history.

Terminal menu: Bookmarks, Echo ON/OFF, View: Full/Boxed/80x25, Download folder, Exit. Bookmarks persist in C:/.termconfig (A: if no SD). New/Edit/Delete/Connect; Alt+S saves, Alt+C cancels. Connect drops the current session and applies the bookmark host, port, echo, letterbox, and optional 80x25 mode (MODE 2 640x400, full pane, no letterbox, NAWS 80x25). The status bar is shown only while that menu is open, so 80x25 uses all 25 rows for the terminal. When the display is too short for 25 rows of the 8x16 VGA face (for example a Chromebook at MODE 20, 683x384), TERM keeps that mode, switches to the 8x14 EGA CP437 face, and centres the grid with the leftover rows and columns as margin. Displays that fit 25 rows are unchanged.

ZMODEM downloads are automatic: when a BBS starts a ZMODEM send, TERM sees the ZRQINIT header (ZPAD ZPAD ZDLE) and receives the file into the download folder. The folder defaults to the current drive/folder; Download folder opens a directory browser (Use/Up/Cancel) and stores the choice per console in C:/.termconfig. Received names are stripped to a basename and a collision is saved as NAME-1.EXT rather than overwriting. CRC-16 and CRC-32, ZDLE escaping, ZCRCW/ZCRCQ/ZCRCG/ZCRCE subpackets, ZNAK/ZRPOS retries, and ZFIN cleanup are handled; a failed or cancelled transfer deletes its partial file. A progress line shows on the status row while a file is arriving. Press Esc to abort a transfer, or Alt-X to abort and leave TERM. Uploads are not implemented.

Esc is sent to the host; press Esc twice or wait briefly to flush a lone Esc. USB Backspace (DEL) is sent as DEL (^?) over telnet, matching Linux getty and login erase; local demo sessions still get BS.

Telnet IAC (255) is recognised only when the next byte is a real command (WILL/WONT/DO/DONT, a known SB option, NOP-GA, or another 255). Other 0xFF bytes are CP437 glyphs so BBS art does not freeze the pane. A subnegotiation that never sees IAC SE is dropped after a short cap.

Line mode with local echo until the server sends IAC WILL ECHO. Hosts that never negotiate (many MUDs) keep local echo so typed text is visible. Toggle Echo from the Terminal menu when a host echoes anyway or hides input. In character mode (SGA) Enter sends CR only (not CR LF). USB Enter (LF) is sent and logged as CR so a serial CR LF pair is not a second key on the wire.

TERM “demo”, port runs a local demo (no TCP). TERM “replay”, port talks through the QEMU serial proxy to a live host (see harness/term_replay.py). TERM REPLAY “file$” plays a TERM LOG capture from disk through the same RX ring as live TCP. IAC T records are skipped; typed T pauses for a keystroke. With a speed, records are paced from the log’s own ms clock so a saved session replays at a readable rate; while replaying, + and - halve or double the rate and space pauses. TERM SESSIONS lists saved logs (files ending .termlog or .log) in the current folder and on the root of C: (A: if no SD).

QEMU Circle TCP needs -device usb-net and OPTION ETHERNET ON; otherwise Network not available. Live TCP (Ethernet or Wi-Fi) does not dump the pane over serial; HDMI is the screen. Serial then prints compact !NET lines: connected, fail, hangup, and rx/tx/parsed/ring/parser counters. OPTION WIFI DEBUG ON repeats those counters while data arrives and prints serial-only !TCP snapshots (Circle Receive bytes/zero/err, leftover, conn/rxrdy). HDMI stays the session.

OPTION TERM LOG ON writes C:/.termlog (A: if no SD) with incoming (R) and typed (T) hex plus ms since log start, flushed every 10 seconds. T lines include byte count so a session can be replayed later. OPTION TERM AUTOLOG ON starts a fresh log for each new TERM session. OPTION TERM SCROLLBACK n sets how many lines of history are kept (default 200, 0 disables).

Example:

TERM "demo", 23
TERM "replay", 23
TERM REPLAY "C:/.termlog"
TERM REPLAY "C:/.termlog", 1
TERM SESSIONS
TERM "192.168.1.10", 23

Source: docs/help/term.txt inmmcore. On the computer, typeHELP TERM.