Table of Contents
Mystic BBS Terminal Screen Design (ANSI + MCI)
This page documents how to create a terminal-style interface inside Mystic BBS, similar to MRC (Multi Relay Chat).
The goal is to create a reusable ANSI template + MPL script system that can be used for:
* Chat clients (MRC style) * External messaging systems * Terminal dashboards * Chickadee integration * Node monitoring tools * Live data feeds
Mystic does not use GUI widgets. Instead it uses:
* ANSI art for the screen layout * MCI codes for dynamic fields * MPL scripts to control logic and user input
β
Architecture Overview
Typical layout used by Mystic terminal programs:
+-------------------------------------------------------------+ | Title Bar | +-------------------------------------------------------------+ | Status / Info Line (Room, Topic, Users, etc.) | +-------------------------------------------------------------+ | | | | | Chat / Message Area | | | | | | | +-------------------------------------------------------------+ | Input Line | +-------------------------------------------------------------+ | Help / Command Line | +-------------------------------------------------------------+
Example usage:
* MRC Chat * IRC client * Packet BBS console * Real-time BBS tools
β
Components of a Mystic Terminal Screen
Mystic terminal programs typically use three parts:
| Component | Purpose |
|---|---|
| ANSI screen file | Draws the interface layout |
| MPL script | Handles input/output logic |
| External program | Network / background processing |
Example (MRC architecture):
User Terminal
β
ANSI screen (layout)
β
MPL script
β
Temp message files
β
Python client
β
Network server
β
ANSI Screen Files
Mystic loads ANSI screens to draw the interface frame.
Example files from MRC:
* `mrcmain.ans` β main chat screen * `mrcscrl.ans` β scrollback screen
These files contain:
* box drawing characters * color codes * Mystic MCI variables * cursor positioning
Example ANSI layout:
|CL |19ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ |19β |15Multi Relay Chat |19β |19ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
`|CL` clears the screen.
β
Important Mystic MCI Codes
Mystic uses MCI codes to control colors and screen behavior.
Common ones used for terminal screens:
| Code | Meaning | |
|---|---|---|
| ` | CL` | Clear screen |
| ` | XY` | Move cursor |
| ` | XX` | Set foreground color |
| ` | [X##` | Set X cursor position |
| ` | [Y##` | Set Y cursor position |
| ` | CR` | Carriage return |
Example:
|[X01|[Y01|15Mystic Terminal
This moves the cursor to column 1 row 1.
β
Designing the Chat / Output Area
The main message area is usually left blank in the ANSI file.
Example:
|19β β |19β β |19β β |19β β
The MPL script later writes messages into this region.
Typical chat area:
* rows 5β20 * width 70β78 characters
β
Input Line
A typical input prompt appears near the bottom.
Example:
|[X01|[Y23|10Say > |07
User input is captured by the MPL script.
β
Status Line
Many terminal programs include a live status bar.
Example fields:
* room name * topic * latency * users online
Example:
Room >>> General Topic >>> BBS Chat Users >>> 12 Latency >>> 32ms
These are updated dynamically by MPL.
β
Scrollback Screen
Many Mystic terminal tools include a secondary screen.
Example:
`mrcscrl.ans`
Purpose:
* browse old chat lines * page up/down * search logs
Typical commands:
| Key | Action |
|---|---|
| β β | scroll |
| PgUp | page up |
| PgDn | page down |
| ESC | return |
β
MPL Script Responsibilities
The MPL script handles:
* keyboard input * message display * command parsing * updating MCI variables * launching external programs
Typical tasks:
load ansi screen position cursor read keyboard input write message to temp file refresh message area
β
Example Terminal Workflow
Example message flow:
User types message
β
MPL script writes temp packet file
β
External program sends packet
β
Server replies
β
External program writes new message file
β
MPL reads file and displays text
This allows real-time chat inside the BBS.
β
Applying This to Chickadee
Chickadee could use the same architecture.
Example layout:
Chickadee Terminal ββββββββββββββββββββββββββββββββββββββββ Channel >>> #general Users >>> 8 Server >>> amigaz.org --- (chat messages here) --- > type message here > >
Possible features:
* cross-BBS chat * private messaging * file sharing * bot commands * status notifications
β
Recommended File Layout
mystic/
ββ ansi/
β ββ chickadee_main.ans
β ββ chickadee_scroll.ans
β
ββ mpl/
β ββ chickadee_terminal.mpl
β
ββ data/
β ββ chickadee/
β
ββ scripts/
ββ chickadee_client.py
β
Tips for Terminal Screen Design
* Design ANSI art using 80×25 * Keep the chat area fixed * Avoid writing over the frame * Use consistent colors * Reserve bottom rows for input
Useful ANSI tools:
* PabloDraw * Moebius * Mystic built-in editor
β
References
Mystic documentation:
Relevant sections:
* MCI Codes * ANSI Screens * MPL Scripting * External Programs
β
Notes
Terminal-style screens are ideal for:
* chat systems * live dashboards * message relays * sysop monitoring tools
The MRC client is a good reference implementation for this architecture.
