Table of Contents

Menu Files

Menu files displayed to the remote terminal client / user are stored in the text/menu directory.

Menu files that have been translated to alternate languages (represented by ctrl/text.lang.ini files) are stored in their text/menu/lang directory.

Other display files (mainly used during the terminal server's new user registration process), are stored in the text directory.

Menu files may have one of the following file suffixes / extensions:

Extension Description of expected contents
.asc ASCII characters (CP437 characters, optionally)
.msg ASCII/CP437 characters 1)
.seq PETSCII characters and control-sequences
.ans ASCII/CP437 characters and ANSI X3.64 Terminal control-sequences
.mon ASCII/CP437 characters and ANSI X3.64 Terminal control-sequences suited for monochrome displays
.rip ASCII/CP437 characters and RIPscrip Terminal control-sequences

All of these file types may contain Ctrl-A Codes color/attribute codes and/or @-Codes.

Although you may have multiple menu files with the same base filename and different suffixes/extensions, only one menu file will be selected and displayed to the terminal user based on their configured or auto-detected terminal type/capabilities. The menu/display file selection priority is as follows (the highest-priority file type that exists on disk will be displayed to the user):

ANSI / CP4372) ANSI / ASCII
Priority RIP Color Mono Color Mono PETSCII TTY / CP437 TTY / ASCII
1 .rip .ans .mon .ans .mon .seq .msg .asc
2 .ans .msg .ans .asc .ans .msg .asc .msg
3 .msg .asc .msg .msg .asc .asc
4 .asc .asc .msg

Each of these file types may be preempted by a terminal-width specific file with a name ending in .Xcol.ext where X is the exact number of screen columns required to display the file correctly (e.g. 40, 80, 132) and .ext is one of the supported file extensions from the above list. To specify a minimum number of screen columns for a display file, use filenames ending in .cX.ext where X is the minimum number of screen columns to display the file correctly.

If you only have one display file for any particular base filename, it should have either a .msg or .asc extension and contain no terminal-control sequences (e.g. ANSI, PETSCII, or RIP).

See the Menu Directory in git for default menu files and their contents.

Most menu files are loaded/displayed by a command shell, so the name and location (e.g. sub-directory) of those files may depend on which command shell is in use by the users of your terminal server.

Defaults

Default menu file names and descriptions:

Base filename Displayed ByDescription
allmail readmail.cppSysop's reading all mail on system menu
attr writemsg.cppCtrl-A code help for use within the Synchronet internal message editor
batchxfr bat_xfer.cppBatch transfer menu
batflag listfile.cppBatch flag command key menu
chat chat_sec.js Chat section menu
e-mail default.src E-mail section menu
editor writemsg.cppSynchronet internal editor commands and line editing keys
exempt useredit.cppExemption flag descriptions for use within User Edit
flagsx useredit.cppFlag set (x is 1 through 4) descriptions for use within User Editor (sysop to modify)
logoff execfunc.cppLogoff screen (not displayed on fast logoff)
logon logon.js Logon screen (logon1, logon2, logon3, etc. also supported)
mailread readmail.cppReading mail menu
main default.src Main section menu (the most commonly viewed menu)
maincfg default.src Main configuration menu
maininfo default.src Main information menu
msgscan scansubs.cppMessage reading/scanning menu
multchat chat.cpp Multinode chat menu
privchat chat.cpp Private node-to-node chat menu
qwk qwk.cpp QWK Packet configuration and transfer menu
restrict useredit.cppRestriction flag descriptions for use within User Edit (sysop to modify)
sentmail readmail.cppReading sent mail menu
sysmailr readmail.cppSysop additional commands while reading mail
sysmain default.src Sysop additional commands for main section
sysmscan readmsgs.cppSysop additional commands while message reading/scanning
syssmail readmail.cppSysop additional commands while reading sent mail
sysxfer default.src Sysop additional commands for transfer section
tempxfer tmp_xfer.cppTemporary directory commands menu
transfer default.src File Transfer section menu
uedit useredit.cppUser Edit menu
xfercfg default.src File Transfer section configuration menu
xferinfo default.src File Transfer section information menu

Optional

Optional menu file names and descriptions (these file do not exist by default):

Base filename Displayed ByDescription
batdprot str.cpp Batch download transfer protocols (displayed instead of dynamically generated list)
batuprot str.cpp Batch upload transfer protocols (displayed instead of dynamically generated list)
biprot str.cpp Bidirectional transfer protocols (displayed instead of dynamically generated list)
dlprot str.cpp Download transfer protocols (displayed instead of dynamically generated list)
ulprot str.cpp Upload transfer protocols (displayed instead of dynamically generated list)
upload shell_lib.js Displayed before the prompt for user-supplied filename to upload
grps execmsg.cpp Message Group listing (displayed instead of dynamically generated list)
subs<x> execmsg.cpp Message Sub-board listing, <x> is the (one-based) group number
libs execfile.cppFile Library listing (displayed instead of dynamically generated list)
msglist msglist.jsUsed by Message List
msgview msglist.jsUsed by Message List
msgtabs writemsg.cppInternal message editor tab bar
dirs<x> execfile.cppFile Directory listing, <x> is the (one-based) library number
xtrn_sec_head xtrn_sec.js External Program Sections header
xtrn_sec xtrn_sec.js External Program Sections (displayed instead of dynamically generated list)
xtrn_sec_tail xtrn_sec.js External Program Sections footer
xtrn<x>_head xtrn_sec.js External Program list header, <x> is the (one-based) section number
xtrn<code>_head xtrn_sec.js External Program list header, <code> is the section code
xtrn_head xtrn_sec.js External Program list header (global)
xtrn<x> xtrn_sec.js External Program listing, <x> is the (one-based) section number
xtrn<code> xtrn_sec.js External Program listing, <code> is the section code
xtrn/<code>xtrn_sec.jsMessage displayed just before executing the external program represented by <code>
xtrn<x>_tail xtrn_sec.js External Program list footer, <x> is the (one-based) section number
xtrn<code>_tail xtrn_sec.js External Program list footer, <code> is the section code
xtrn_tail xtrn_sec.js External Program list footer (global)
text_sec text_sec.cppText File Section listing (displayed instead of dynamically generated list)
text<x> text_sec.cppText File listing, <x> is the (one-based) text file section number
chan chat.cpp Multinode Chat Channels (displayed instead of dynamically generated list)
tmessage default.src Displays when the user enters the transfer section
tpolicy str.cpp File transfer policy (displayed instead of text.dat strings: TransferPolicyHdr, TpUpload, TpDownload)
random<x> logon.js Random logon screen (e.g. random1, random2, random3, etc.)

See Also

1)
the main difference between .asc and .msg files are their selection priority, with .asc files targeting plain-ASCII terminals
2)
ANSI/CP437 would be the most common BBS terminal-type encountered