The Message Command Interpreter (MCI) allows you to do a variety of things within messages you type. Each MCI command consists of:

  • the British pound character (£) for Commodore users, or backslash (\) for other computers

  • a command letter (can be either upper- or lowercase)

  • a number or letter

  • any arguments/parameters (additional information the command needs).

Since the parameter after a command letter is only allowed to be one character, letters are substituted for numbers as follows:
Table 1. MCI numbering system

0

5

10 j

1

6

11 k

2

7

12 l

3

8

13 m

4

9

14 n

15 o

Think of it as “extended hexadecimal.” And by the way, this next good-sized chunk was pretty extensively reworked; I think the examples in the original manual don’t always explain themselves very well.
If ever you need to output a single British pound sign (£), type two: ££. This is called “escaping” MCI. The first prepares to interpret the following character as an MCI command, the second cancels it.

In general, MCI is what “spices up” an IMAGE BBS. It allows you to add color, cursor movement, and a “personal touch” to messages or posts in the sub-boards. The MCI commands available in IMAGE BBS are:

£AxTEXT£ About

Compare MCI variable £Vx to TEXT. Notice the ending £ which delimits the comparison. (For a list of MCI variables, see the £Vx command.) The comparison result can be used with £Dx [jump line(s) on comparison not equal] or £Ex [jump line(s) on comparison equal].

1 £a3JOHN DOE££d2
2 Hello, John Doe. What do you know?£x1
3 This message is only for John Doe.

1 Compares (£a) the user’s real name (3, which is MCI variable £v3) to JOHN DOE (the second £ marks the end of the comparison). If the comparison is false, £d2 jumps 2 lines—​the current line plus the next one—​to avoid printing line 2.
2 Prints Hello, John Doe. What do you know? £x1 aborts the message, which avoids printing line 3.
3 Prints This message is only for John Doe.

£Bx Bells

Send x bell characters--CHR$(7)--to the user. If the user’s terminal supports bells, they hear them.

Speed up or slow down by using the £Sx command!

£Cx Color

Set the current display color to x, where x is from the following table:

Table 2. MCI color codes
Value Color Value Color

1

white

9

brown

2

dark red

j

pink

3

cyan

k

dark gray

4

purple

l

medium gray

5

dark green

m

light green

6

dark blue

n

light blue

7

yellow

o

light gray

8

orange

  • 0, black, is omitted since that is usually the color choice for terminal backgrounds.

  • Commodore 64/128 users can use Ctrl+1-8 or C=+1-8 instead of £Cx.

£Dx Jump if not equal

Skips x lines when the result of the last compare command (£A or £T) was not equal.

Display an appropriate message based on whether the user’s handle is or is not SYSOP:

1 £a2SYSOP££d2
2 Hello, Sysop!£d2
3 Hey, you can’t read this!
4 £x1

1 Compare (£a) user’s handle (2) to SYSOP (the second £ delimits the comparison). £d2 jumps 2 lines—​the current line and the next line—​if the comparison is not equal, to avoid printing line 2.
2 Output Hello, Sysop!. £d2 jumps 2 lines—​the current line and the next line—​to line 4, since the result of the last comparison is still false. This avoids printing line 3.
3 If the result of the comparison in line 1 is false, output Hey, you can’t read this!
4 Abort the file or message.

£Ex Jump if equal

Skip x lines if the result of the last compare command (£a or £t) was equal.

Display different messages based on whether the user’s handle is USER or not:

1 £a2USER££e2
2 Too bad your handle isn’t USER!£j2
3 Congratulations, your handle is USER!
4 £x1

1 £a2 compares £v2 (the user’s handle) to USER (the second £ marks the end of the comparison). If the user’s handle is USER, £e2 jumps 2 lines—​the current line plus the next line—​to avoid printing line 2.
2 If the user’s handle is not USER, this prints Too bad your handle isn’t USER! and £j2 unconditionally jumps 2 lines—​the current line plus the next line—​to avoid printing line 3.
3 If the comparison in line 1 is true, this prints Congratulations, your handle is USER!
4 In either case, the message is now aborted.

£F1 Clear screen

This command sends a “clear screen” character to the user.

This is chr$(147) on Commodore terminals, or chr$(12) (a form feed) in ASCII mode.

£Gx Get character

Wait until the user presses a key. The keypress is stored in MCI variable £v7 (or an$ in BASIC).

Parameters:

  • If x=1, input is converted to uppercase.

  • If x=0, input is allowed in uppercase and lowercase.

1 Press a key: £g1
2 You pressed: £v7

1 Prompt the user to Press a key: and waits for one keypress (which is converted to uppercase).
2 Print You pressed: and echo the character they pressed.

£Hx Backspace/delete

Display x backspaces/deletes (depending on the user’s terminal type).

1 Apple£h5Banana

1 Display Apple, immediately erase it with five backspace/delete characters (£h5), then display Banana in its place.

£Ix Line input

Pauses output, allowing the user to input a line of text. The input is stored in MCI variable £v7 (an$ in BASIC).

  • If x=0, input can be typed in uppercase and lowercase.

  • If x=1, input is converted to uppercase.

1 Enter your name: £i1
2 Hello, £v7!

1 Prompts the user Enter your name:, then accepts input (£i) which is converted to uppercase characters (1).
2 Print Hello, the user’s input (£v7), and !.

£Jx Jump

Do not display the next x lines of the message or file.

1 Displayed£j2
2 Not displayed
3 Displayed again

1 Prints Displayed, then jumps 2 lines (the current line is counted as the first line to jump).
2 Line 2 is not displayed.
3 Prints Displayed again.

£Kx Kolorific mode

Changes the color of each character output.

  • If x=0 (zero), Kolorific mode is turned off.

  • If x is any other color code (see £Cx), Kolorific mode is enabled, starting with £Cx.

£k2This is a test£k0
  • Turn Kolorific mode on (£K), starting with the color red (2, since £C2 is the color red).

  • Displays This is a test, then turns Kolorific mode off (£K0).

£Lx Output to Printer

Control the printer attached to the BBS, if online.

  • If x=0, printed output is stopped.

  • If x=1, printed output is started (or resumed).

Printed output stops at the end of each line; you must include £L1 on each line to be printed.
£L1Hello

Print Hello on the printer.

£M<x Set Left Margin

Every carriage return output is followed by n spaces. The values for n are 0 to 9 and j-o (j=10, k=11, l=12, etc.)

£M>x Set Right Margin

Same as £M<x, except it sets the right margin. This causes the BBS to word wrap text as if the user’s screen width was n characters less than it really is. Text indents from the right side.

The use of £M<x and £M>x together allows you to make “block indents” of text that appear correct regardless of the user’s screen width.

1 .c80
2 £m<o£m>o
3 Left and right margins are now set to 15 characters and this will word wrap.
4 .m

1 Set .Columns to 80 (this allows line 3 to be entered all on one line without creating two separate lines of text).
2 £m< sets the left margin, and £m> sets the right margin to 15 (o) spaces.
3 Enter this line to give the BBS something to word-wrap.
4 .MCI Read the message. This demonstrates the new margin settings:
               Left and
               right
               margins
               are now
               set to 15
               characters
               and this
               will word
               wrap.

£Nx New line

Display x carriage returns (and linefeeds, if the user’s terminal requires them).

£Ox Repeat character

This command repeats a character 19 times. It is useful for making menus, etc.

Parameters: Replace x with the character wanted.

*£o-£o-*

Displays the following:

*--------------------------------------*

£Px Print mode

Sometimes referred to as “cursor dancing,” print modes allow each character output to be displayed in a variety of ways. They can move the cursor, or perform “special effects.”

Parameters: Replace x with the print mode number. The print mode is set back to 0 (normal print mode) at the end of each line.

There are thirteen very powerful print modes in IMAGE BBS. We suggest trying to come up with interesting ways to use them—​it is possible to create an entire “movie” file entirely within the IMAGE BBS editor with these commands!

ASCII

Number Print mode type

0

normal printing

1

character, backspace, character

2

character, 8 spaces, 8 backspaces

3

character, backspace

4

space, character, 2 backspaces, character

5

character, bell

Commodore Color/Graphics or ANSI

Number Print mode type Displays

6

character, 2 cursor lefts

!drawkcab

7

character, cursor left, cursor up

up

8

character, cursor left, cursor down

down

FIXME: add the rest, 4 diagonals

£Qx Reset MCI defaults

Turns off the following features:

  • Printer mode (see £Lx)

  • Reverse mode (see £Rx)

  • Uppercase mode (see £Ux)

The current print mode (see £Px) and print speed (see £Sx) are set to 0 for normal output at the fastest speed.

Parameters:

  • If x=0, then the current color is set to the default color.

  • Otherwise, the default color and current color are set to £Cx.

£Rx Reverse mode

Controls displaying text in normal or reverse modes.

Parameters:

  • If x=0, reverse mode is turned off

  • If x=1, reverse mode is turned on

Reverse mode turns off at the end of every line.
Commodore 64/128 users can also use Ctrl+9 for Reverse On and Ctrl+0 for Reverse Off.

£Sx Print speed

Delay each word output by x tenths of a second.

Parameters:

x ranges from 1-J (.1 to 1.6 seconds)

£TxTEXT£ Test variables

Tests a variable, here comparing it to TEXT (similar to £a). The ending £ delimits the comparison. Used in conjunction with £d (jump if comparison is false) and £e (jump if comparison is true).

If x=1, tests user input (£Gx or £Ix; in BASIC, an$).

If x=2, tests access group (in BASIC, ac%).

1 £t29££d2
2 Hi, sysop! Welcome!£x1
3 £v2, this function is only for sysops.

1 Compare (£t) the user’s access group (2) to 9 (£ is the end of the comparison). £d2 jumps two lines—​the current line plus the next line—​to avoid printing line 2 if the comparison is false (access level is not 9).
2 Display Hi, sysop! Welcome!. £x1 aborts the message.
3 Display handle, this function is only for sysops.

£Ux Uppercase mode

Set the screen case. The screen case reverts to uppercase/lowercase at the end of the message.

Parameters:

  • x=1: on. The screen displays uppercase and graphics characters.

  • x=0: off. The screen displays uppercase and lowercase characters.

£Vx MCI variables

Display the desired MCI variable.

Parameters: x is MCI variable number:

Table 3. MCI variables
Variable Purpose BASIC variable

£v0

Current date and time

d1$

£v1

Last call date of user

ld$

£v2

User’s handle

na$

£v3

User’s real name

rn$

£v4

User’s email address

ph$

£v5

Name of BBS

bn$

£v6

Board number during board entry, caller number during login

b$

£v7

User input

an$

£v8

Board name during board entry

d2$

£v9

Last user on BBS

d3$

£vj

Dividing line justified to user’s screen width

ak$

£vk

True last call date

d5$

£vl

Current protocol

d4$

£vm

Access group name

ag$

£vn

Login identifier

cc$

£vo

Login identifier + ID

dd$

£Wx Wait

Delay x seconds before proceeding, similar to £Sx.

Parameters: x ranges from 1-J (1 to 15 seconds)

£X1 Abort file

Skips the rest of the lines in a file or message, not displaying anything contained in those lines.

The number of lines skipped is actually limited to 255; I discovered this while re-writing the BBS editor help menu file.

£←xx Tab

This command tabs the cursor from the left column, to column #xx (00-39 are valid).

Use the back-arrow key () to the left of the 1 key.
To tab over less than ten columns, use a leading zero (£←05, £←08).
If the tab-to column specified is less than the cursor’s current column where the cursor is now, any text after the tab command is displayed directly after the current cursor position.
These next few commands are probably only useful if you’re programming modules for Image BBS in BASIC.

£#x Leading characters

When you use £%v (below), this specifies either:

  • The number of digits to display

  • To use leading zeroes or spaces

Parameters:

  • When x is a number between 1 and 5, x sets the number of digits to display a numeric value with.

  • When x equals zero, as many digits are in the number are displayed.

  • When x is a space character, leading spaces are used, but the number of digits to display is not affected.

See the examples for £%v, below.

£%v Display integer variable

Display the value of any one-letter integer variable with or without leading characters.

The periods in the examples are not shown in actual use of this command; they only illustrate how many leading spaces are used.
Example 1
£#4£# £%a

Display 4 digits of a%, with leading spaces

If a%=1, this displays …​1

Example 2
£#2£%a

(Display two digits of a%)

If a%=1, this displays 01

If a%=23, this displays 23

If a%=789, this displays 89, the rightmost two digits.

Example 3
£#0£%a

(Disable leading characters, display up to 5 digits)

If a%=1, this displays 1

If a%=42, this displays 42

£$x Display string variable

Display any one-letter string variable (a$, for example).

£$a

Display the contents of the string variable a$.

£!a Display floating point variable

Display as many digits are in a floating point (non-integer, i.e., 3.14) variable.

Screenshot 2021 03 15 171804
vice screen 20210315170158212580
Figure 1. Example BASIC program, and running on the BBS

π is displayed in the BBS with as many significant digits as the BASIC interpreter stores.

Setting leading spaces or leading characters as with £%a is not supported.