home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
comm
/
rbcomm32.zip
/
RBCOMM.DOC
< prev
next >
Wrap
Text File
|
1990-07-29
|
76KB
|
1,824 lines
RBcomm v3.21 Copyright (c) 1989, 1990 Ralf Brown
You may redistribute this program provided that you provide unmodified
copies of all files, and do not charge any fee for making the copy.
RBcomm is a lean and mean comm program which will run in 41K without file
transfer capability or 65K with file transfer and shell-to-DOS capability.
Since it is so lean, you will not get a lot of the fancy features of other
comm programs, though there are plenty of features to let you get your work
done (I've been using it exclusively for over two years, and have added
features as I've found that I could be more productive with them than
without).
Features:
small (runs in as little as 41K [65K with DSZ, 66K with Puma])
DESQview-aware
pop-up menus
seamless file transfer using DSZ, PCZ, or Puma
Zmodem and Puma autodownload (others easily added)
shell to DOS, using less than 1K while shelled
keyboard reassignment, powerful keystroke macros
20-number dialing directory
ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
132-column support
supports the 16550A FIFOs
Registration:
Continued use of DSZ requires registration with Omen Technology, Inc.
See the DSZ documentation for details.
If you like RBcomm, send me a picture postcard of some sight in your
area. If you don't like RBcomm, feel free to send me a postcard
anyway, telling me what you don't like.
Support:
none (after all, I'm not getting any money for this). I will try to
fix bugs as time allows.
DISCLAIMER: This software is distributed AS IS. The author disclaims all
responsibility for any damages which might be incurred as the result
of using the program. The software is not guaranteed to work on any
system other than the author's own.
Ralf Brown
School of Computer Science
Carnegie Mellon University
Pittsburgh, PA 15213
ARPA: ralf@cs.cmu.edu
UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
BIT: ralf%cs.cmu.edu@cmuccvma
FIDO: Ralf Brown 1:129/3.1
Files in distribution:
RBCOMM.DOC this file
COMM.COM the RBcomm main program
RBCONFIG.COM the configuration program
MACRO.COM the keyboard macro compiler/decompiler
R?-PIF.DVP DESQview program information files
*.MAC keyboard macro definition sources
*.RBM keyboard macro definition files
*.HLP help screens for corresponding macro files
Availability:
The newest version is always available on:
Doctor's WOC Inn 1:129/53 File Requests
(412)881-7757
24 hours, USR HST 9600
NorthStar Pitt 1:129/81 (same computer, different modem)
(412)881-1749
1200/2400
CS.CMU.EDU [128.2.222.173]
directory /afs/cs.cmu.edu/user/ralf/pub
You must change directly to this directory due to the way our
anonymous FTP works.
New versions will also be available here within a few days of release:
Rosedale Dataline
(301)866-4554
24 hours, USR HST 9600
TP Board
Fidonet nodes participating in DVNet
WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
directory PD:<MSDOS2.MODEM>
System Requirements:
at least 41K free memory (65K for file transfers)
one or more serial ports
DOS 2.0 or higher
64K disk space for swap file
-------------------------------------------------------------------------------
Installation
------------
Before you use RBcomm for the first time, you need to tell it where to find
its support files and how to talk to the modem. To do so, copy the RBcomm
files to the directory in which you wish to install them, change to that
directory, and type
RBCONFIG COMM.COM
(if COMM.COM is not in the current directory, use the full path, i.e.
C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
Please do not use your original copy. If you forget to run RBCONFIG, you
will be told to do so when you attempt to run COMM.COM.
You will now be asked (via a menu) to fill in several groups of information.
Press 'D' to set the directories and extensions to use.
RBcomm dir: where the keyboard macro files and dialing directory are stored
Swap directory: where to store the swap file when running DSZ or COMMAND.COM
a RAMdisk is ideal for storing the swap file
Macro file extension: default extension to apply to keyboard macro files
Default macro file: keyboard macro file to load on startup and hangup
if this file does not exist, RBcomm will use a built-in set
of default key bindings
Press 'S' to select the serial port to use. You may setup
configurations for "COM1" through "COM4", as well as the default port to
use when not otherwise indicated in the dialing directory. The values
given for "COM3" and "COM4" need not bear any relationship to the
numbering of the actual serial ports in your system (you could, for
example, set them up to be the same as "COM1" except for the length of
the break signal). RBCOMM does check that "COM1" and "COM2" exist
according to the BIOS data area, however, to avoid running in a DESQview
window which has incorrect settings for supporting serial
communications. You may specify a separate setup string for each port.
The setup string needs to ensure that the modem echos back any commands
it is sent, and asserts carrier detect only while actually connected
with another modem (for Hayes-compatible "AT" command sets, "E1&C1")
Press 'M' to define the modem setup. In this section, you need to enter
several strings to be sent to the modem. Note that you may enter a ^M
(carriage return) by pressing Alt-M (hold down the Alt key and press M),
an Esc by pressing Alt-E, and a control-H by pressing Alt-H, and a DEL
(ASCII 127) by pressing Alt-D.
Press 'R' to define the modem's responses. These should be the minimum
substring that uniquely identifies the response.
Press 'P' to setup dialing parameters. You may specify the name of the dialing
directory, how long to try before declaring a time-out, how long to wait before
trying again, and the break length. Break length specifies the length of the
signal that is sent when you give the break command (default Alt-B) in
multiples of the standard clock tick of 55ms.
Press 'Z' to set the parameters for Zmodem transfers. There are three sets of
parameters for sending files with Zmodem, allowing you to tailor the best
throughput under up to three separate sets of conditions. I use the "fast"
set for BBSs, and the "medium" set for my Unix account. The "slow" set is
configured by default for a system which can't handle full streaming.
Note that PCZ will work just fine in place of DSZ if you set the program
pathname to PCZ instead of DSZ, and provide sufficient memory (PCZ needs more
memory than DSZ).
The general DSZ parameters (second item on submenu) allow replacable
parameters introduced by a percent sign. See the EXEC macro command for
details. The replacable parameters are expanded each time DSZ is invoked.
Note that the default "portx" will cause DSZ to report the port as COM9,
but it will still use the correct serial port.
Press 'C' to set the colors you want RBcomm to use. You may select the
default and "underlined" colors, as well as the colors to use on menus.
Press 'V' to determine whether 132-column mode should be enabled, whether to
start in 132- or 80-column mode, and the register values needed to set 132-
column mode. When running under DESQview, RBcomm can tell DESQview to set
the virtual screen size to 132 columns if you specify zero for AX.
Press 'T' to adjust a number of toggles.
"Local echo" allows you to turn on half-duplex operation by default.
"Verbose" sets whether to include terminal control sequences in a log file.
Visual bell specifies whether to flash the screen or sound a beep when a
^G is received (internally-generated beeps always use sound).
"Check for enhanced keyboard" determines whether RBcomm will use the
enhanced keyboard BIOS calls if it thinks those calls exist. Some
systems incorrectly indicate support for those calls. Set this to
'N' if RBcomm appears to hang your system.
"Allow RBcomm to change NumLock" determines whether RBcomm will change the
state of the NumLock key when it receives the "keypad numeric mode" or
"keypad application mode" commands. Disabling the NumLock changes is
useful for laptop users without a separate number pad.
"Should backspace send delete" specifies whether the values sent by
backspace and control-backspace should be exchanged.
Finally, press 'O' for miscellaneous options.
"Time between sends in idle mode" determines how often Idle mode (see
Alt-I) sends some characters to keep the connection alive.
"Answerback message" allows you to specify the string which RBcomm will
send when it receives a ^E.
On choosing "Quit" from the menu, you will be asked whether to save the
new configuration to disk. If you specify that you want to save the changes,
the executable on disk will be updated.
---------------------
DESQview Installation
---------------------
After performing the file copy and configuration described in the previous
section, you need to install RBcomm on the DESQview Open Window menu. In
DESQview, tap the Alt key to bring up the DESQview menu, then press "O" for
the Open Window menu, and "AP" to add a program. Select "Other", then fill
in the directory in which you've placed the RBcomm files and press Enter.
You will be given the choice of RBcomm, RBcomm plus DSZ, and RBcomm 132col;
select one or more and press Enter. Now use "CP" from the Open Window menu
to change the paths and/or the keys for starting RBcomm.
The only difference between "RBcomm" and "RBcomm + DSZ" is that the former
allocates the minimum amount of memory for RBcomm to run (41K), which is not
enough to invoke DSZ, but does save 25K when you do not need file transfer
capability. If your environment is particularly large, you may need to use
Change a Program to increase the window sizes by a K or two. With certain
screen sizes, you may also need to give RBcomm 1K of system memory (on the
advanced options screen).
"RBcomm 132col" and "RBcomm + DSZ" are the same except that the former defines
the maximum screen size to be 20 columns (this is not a mistake, it reduces
the DESQview overhead) and gives RBcomm sufficient system memory to store the
132x25 screen (be sure to tell RBCONFIG to allow 132-column mode!). If you are
not interested in the reason, skip the rest of this paragraph. DV normally
reuses the same section of memory when resizing the virtual screen. However,
resizing it beyond the maximum defined by the .DVP (and "Change a Program"
only allows 127 columns) causes an entire new buffer to be allocated. Thus,
minimizing the "maximum screen size" also minimizes the DESQview overhead by
reducing the size of the screen buffer which gets discarded.
RBcomm is sufficiently DESQview-aware to ask DV for the size of the screen.
If you want a 120x60 screen, just set the maximum window size to 120 columns
and 60 rows. DESQview will display as much as it can on your screen, but
RBcomm will use the full size. If you have enabled 132-column mode with
RBCONFIG, RBcomm will also switch to 132 columns by the given number of rows
when it receives the sequence "<Esc>[?3h".
RBcomm refuses to load itself twice on the same serial port when running
under DESQview. However, when shelled to DOS, you can load another copy
in a different window, but make sure to exit the second copy before
returning from the DOS shell, or the first copy will abort.
Finally, RBcomm returns the rest of its time-slice to DV if it doesn't need a
full slice. This improves the performance of programs in other windows.
-----------------------------------------------------------------------------
Dialing Directory
-----------------
The dialing directory is a plain text file, containing up to twenty entries
(any additional entries will be ignored). Each entry consists of two lines,
looking like this, with no blank lines between entries:
Doctor's WOC Inn
14128817757|4800N81|B|OPUS|password|\\N2
The first line contains the description which will be used in the dialing
directory and when dialing. The second line contains six fields separated by
vertical bars. These fields are
1. number to dial (direct connection if empty)
2. modem parameters, containing in order
baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
57600)
parity (N for none, E for even, O for odd, S for space,
M for mark)
data bits (5, 6, 7 or 8)
stop bits (1 or 2)
handshake to use when receive buffer is full
(H for hardware RTS/CTS, X for software XON/XOFF)
(optional, default is hardware)
timed call flag
(if handshake present and the character after the handshake
is T, a short "bip" will sound about 50 seconds into each
minute after establishing a connection. Every five
minutes, the "bip" sounds twice)
serial port number
(if handshake is present, following either the handshake
character or the "T" timed call flag with a comma and
the number of the serial port will tell RBcomm to switch
to that port before dialing)
3. terminal emulation
A for ANSI with VT102 extensions
B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
character set switching is disabled, and the AVATAR
level 0 command set replaces two RBcomm private
commands)
V for VT52 with H19 extensions
4. keyboard macro file to load
5. password for this system (used by PASSWORD macro command). Display of
passwords in the dialing directory may be turned on or off with
RBCONFIG.
6. optional modem setup string, minus command lead-in defined by RBCONFIG
(may include vertical bars). In the example above, the \\N2 tells
my modem to use MNP error correction.
If the keyboard macro file field is non-empty, the specified file will be
loaded immediately upon successfully connecting with the remote system. Since
each entry in the dialing directory can specify an independent set of keyboard
macros, you can have a different set of keyboard bindings for each system.
If the macro file specifies a binding for the ONLOAD "key", that macro will be
executed immediately. Further, if the macro file specifies a binding for the
AUTO "key", that macro will be executed immediately after the ONLOAD macro (if
any).
The setup string may contain the following special sequences:
~ pause for half a second
\n send a line feed
\r send a carriage return
\f send a form feed
\t send a horizontal tab
\a send a ^G
\b send a backspace
\! send a break
\~ send a tilde
\\ send a backslash
Example modem parameters:
1200E71X default COM port, 1200 bps, even parity, seven data
bits, one stop bit, use Xon/Xoff handshake when
receive buffer fills up
19200N81HT,2 COM2, 19,200 bps, no parity, eight data bits, one
stop bit, use hardware handshake, and sound off
every minute
-----------------------------------------------------------------------------
Environment Variables
---------------------
RBcomm uses the following variables in its environment:
COMSPEC specifies which program to load for Shell-to-DOS (Alt-D) and
Execute-Program (Alt-G).
RBCOMM overrides the default RBcomm data directory. The data directory
is where RBcomm stores its dialing directory and all macro files.
RBCDIAL overrides the default dialing directory file. Do not use a path
in the value of this variable, only a filename and extension (which
defaults to .DIR). The value of this variable will be appended to
the data directory (either default or specified by the RBCOMM
variable) to produce the name of the dialing directory.
-----------------------------------------------------------------------------
Keyboard Commands
-----------------
The commands described here may be bound to other keys, but the default
keystroke named here may always be used when preceded by Alt-= (hold down
the Alt key and press the equal sign at the upper right of the typewriter
section of the keyboard).
Alt-A attack dial
Repeatedly dials the number you select from the dialing directory
until a connection is established. You may also manually enter a
number to attack-dial.
Alt-B send break
Alt-C call a number
Dial the number you select from the dialing directory (once only).
You may also manually enter a number to dial. If you are currently
connected to another system, you will be prompted whether to hang
up. Press Esc to abort the dial and return to the current session.
Press "Y" to disconnect and then dial a new number, or "N" to maintain
the current connection and load new macros and parameters without
dialing.
Note that the modem parameters always have an "H" appended when neither
"H" nor "X" is present in the dialing directory, since the handshake
defaults to hardware.
Alt-D DOS shell
Temporarily exit to DOS. Type "EXIT" to return to comm session.
RBcomm will swap itself out of memory, leaving only 592 bytes plus
its copy of the environment in memory. A 64K swap file will be
created in the directory you specified with RBCONFIG, and will be
deleted when you return to the comm session. File transfers also
create the temporary swap file.
Alt-E toggle local echo
By default, RBcomm assumes that the remote system will echo any
characters you need to see. After pressing Alt-E once, RBcomm will
display any characters you type without requiring the remote system
to echo them. After pressing Alt-E a second time, RBcomm will once
again assume that the remote system will echo characters.
Alt-F list files
Display a three-up listing of the files matching a given filespec.
Alt-G Go execute a program
You will be prompted to enter a command. Everything up to the first
blank is the program to execute (if it starts with an exclamation
mark ['!'], the rest of the line is passed to COMMAND.COM, otherwise,
you must specify a full path and extension--searching the path would
significantly increase the size of the RBcomm executable), and the rest
of the line is the command tail to pass to the program.
Alt-H hang up
Terminate the connection. First drops DTR, and if Carrier Detect is
still active, sends the modem's hangup string. The default macro set
is reloaded from disk (if present) or from the built-in defaults.
If the CLEANUP "key" has a macro binding, it is executed before
hanging up; if it includes the LOWER_DTR command, DTR will remain
dropped.
Alt-I idle
This command allows you to keep a connection alive if you need to step
away from your computer for a while. Sends a space followed by a
backspace every two minutes (configurable with RBCONFIG) until you
press a key to cancel the command.
Alt-J jump to directory
Pops up a window displaying the current directory. You may switch to
a different directory by entering it in place of the displayed
directory. Relative paths without a leading slash or backslash will
change to a subdirectory of the current directory. If you specify a
drive letter, that drive will become the current drive as well.
Alt-K unused
Alt-L toggle logging to file
When pressed the first time, you will be asked for the name of a file
to which all characters received from the remote system will be
appended (percent signs introduce variable expansions--see the EXEC
and OPEN_LOG commands below). When pressed the second time, RBcomm
will no longer append received characters to that file. If verbose
(see Alt-Y) is active, all characters will be appended exactly as
received, otherwise any command sequences embedded in the received
data are stripped out.
Alt-M learn macro
When you press Alt-M, you will be asked which key you want to assign
the macro to. You may then enter a text string of up to 78 characters
(if a TEXT macro is already assigned to the key, the current value
becomes the default value in the input line), using the same editing
keys used elsewhere.
Alt-N unused
Alt-O send file with slowed-down Zmodem
This command will send the specified file(s) using the "slow" Zmodem
parameters installed by RBCONFIG.
(subject to change in future versions)
Alt-P set parameters
This command pops up a menu which allows you to set the following
parameters: COM port, speed, parity, parity stripping, handshake,
backspace translation, visual bell, and terminal emulation. You may
also reset the terminal emulation to its initial state, in case the
remote system leaves you stranded in a strange condition. Press Esc,
Enter, or 'R' to exit this menu.
Note that Alt-P will discard any characters which have been received
but not yet processed, because it always reinitializes the serial
port when it pops down.
Alt-Q dial queue of numbers
Repeatedly dials each number you specify until a connection is
established with one of the numbers. The numbers are dialed in
round-robin fashion until a connection is established. A beep will
sound to notify you of the connection, and the name of the remote
system and the modem's connect response will be displayed.
You specify the numbers to dial by giving the digit or letter as it
appears in the dialing directory (case is ignored on letters). A
number may be specified more than once, and will be dialed more than
once during a round of dialing attempts. As a shortcut, specifying
an asterisk ('*') instead of a list of numbers will dial all numbers
in the dialing directory in order.
Alt-R receive file
Pops up a menu allowing you to select the protocol with which you wish
to receive a file from a remote system. Press ESCape if you do not
wish to receive a file. Note that Zmodem features automatic download,
so you do not need to press Alt-R unless you wish to give DSZ
additional parameters. You may also add additional autodownloading
protocols--see the WHEN macro command in the next section.
Not listed on the menu: ^G, ^Y, and ^Z pop up a parameter prompt,
then proceed with the download specified by the corresponding
non-control letter.
Alt-S send file
Pops up a menu allowing you to select the protocol with which you wish
to send a file to a remote system. Press ESCape if you do not wish to
send a file. After selecting a protocol, you will be asked to enter
the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
wildcards and multiple filespecs).
If you press the control character corresponding to the desired
protocol, the file(s) will be deleted after a successful transfer.
For batch transfers, only the files corresponding to the first
filespec are deleted.
Also unlisted on the menu: pressing 'R' (or ^R) will send with
Zmodem using the "medium" parameters and pressing 'S' (or ^S) will
send the file with Zmodem using the "slow" Zmodem parameters installed
by RBCONFIG.
Alt-T type ASCII file to other system
sends an ASCII file to the remote system, pausing after each line
for the return to be echoed. The send may be aborted at any time
by pressing Escape.
Alt-U load/save user interface as defined in keyboard macro file
Note that keyboard macro files are always stored in the RBcomm
directory as defined by RBCONFIG.
WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
WordStar (tm) and Emacs cursor movement commands on the cursor pad
(i.e. Home goes to the start of the line, etc.) EMACS.RBM also binds
all Alt-letter keys to be Esc-letter, making the Alt key into a true
Emacs meta-key. You will need to use the Alt-= override to use the
RBcomm commands while EMACS.RBM is loaded.
Alt-V View file
(toggle verbose, which used to be on Alt-V, is now on Alt-Y)
Page through a text file. This is a very minimal file lister.
Press the space bar to display next screenfull, Escape to quit.
Alt-W unused
Alt-X exit
Terminate RBcomm. If you are still connected to the remote system
(Carrier Detect asserted), you will be asked whether or not to hang
up.
Alt-Y toggle verbose
(previously Alt-V)
Toggles the verbose mode used with Alt-L. When not logging, the
control characters which are not used for terminal commands will be
displayed as ^X when received from the remote system. When logging to
a file, terminal command sequences will only be stored in the log file
if verbose mode is ON.
Alt-Z send file with Zmodem
This command will send the specified file(s) with the "medium" Zmodem
parameters installed by RBCONFIG.
Alt-1,2,3,4,5,6,7,8,9,0 dial first ten numbers in dialing directory
Alt-F1 through Alt-F10 dial 11th through 20th number in dialing directory
F1 pop up help screen
Displays the contents of the help file for the current macro file
(if that file is not found, RBcomm attempts to use RBCOMM.HLP).
Press an Alt or function key to execute the default binding for the
key. Escape exits immediately, and any other key pages through the
help file (if more than 20 lines long).
Alt-- cancel any pending WHEN, DELAYED, or WINDOW commands
Alt-= use default binding of next keystroke
If the keyboard has been redefined, pressing Alt-= will allow you to
access the built-in default definitions (as listed in this section).
Press Alt-= and then immediately press the key whose default
definition you want to use.
-----------------------------------------------------------------------------
Line Editor
-----------
Whenever you are prompted for a line of input, you may use the following
keys to edit the line:
Esc abort
Home move to start of line
End move to end of line
Right move a character right
Left move a character left
Del delete the character under the cursor and shift remainder of
line left
Backsp delete the character to the left of the cursor, and shift the
remainder of the line left
Return finish input
Alt-D insert an ASCII DEL character
Alt-E insert a literal Esc character
Alt-H insert an ASCII backspace character
Alt-M insert a literal Return character
Alt-P insert the contents of the cut buffer
-----------------------------------------------------------------------------
Warnings
--------
Don't try to load a TSR while shelled to DOS. RBcomm won't be able to swap
itself back in and will have to abort. Your connection will not be broken,
however.
Don't mess with the swap file while shelled. You'll be sorry.... (RBcomm is
able to detect a missing or truncated swap file on returning, but not other
changes)
IMPORTANT: if you are swapping to a floppy drive, DO NOT UNDER ANY
CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a file
transfer. You will definitely trash the file allocation tables and directory
of the second disk. This is a problem with DOS itself (at least through
3.10, later versions may have corrected it) when faced with a diskette
change while a file is open on the diskette which gets removed. The swap
file is such an open file.
-----------------------------------------------------------------------------
Known Bugs and Limitations
--------------------------
Any OPEN_LOG command in the OnLoad macro will fail when the macro is loaded
manually. There is no easy fix for this one, as it is tied in deeply with
the way windows and the terminal emulator interact.
If you are using a serial port which the BIOS does not recognize, you will
need to get a program to initialize the port. Otherwise, RBcomm will most
likely read garbage parameters from the port at startup, requiring you to
set the parameters by hand with Alt-P.
-----------------------------------------------------------------------------
Macro Compiler
--------------
Syntax: MACRO {t|m} infile outfile
where 't' specifies compilation from text file to keyboard macro file
and 'm' specifies decompilation from macro file to text file
default extensions are .MAC for text files and .RBM for macro files
Important Note:
RBcomm v3.1 and later macro files are COMPLETELY INCOMPATIBLE
with earlier versions. You must recompile all your macro files.
If RBcomm doesn't complain, you don't need to recompile.
-------------------
Macro File Commands
-------------------
Each command has the following form:
keyname commandword [args]
where keyname specifies to which key the command is to be bound. Keynames
(which are not case-sensitive) are:
F1 through F12 for the function keys
+F1 through +F12 for the shifted function keys
^F1 through ^F12 for the control function keys
@F1 through @F12 for the alt-function keys
@A through @Z for the alt-letter keys
@1 through @0 for the alt-digits
Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
@Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
Alt-Gray/
Left, Right, Up, Down for the cursor keys on the numeric pad
Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
KP5 for the '5' key on the number pad (enhanced keyboard)
^Home, etc. for the control versions of the numberpad keys
CP_Home Home key on gray cursor pad
CP_Up Up arrow on gray cursor pad
CP_Down Down arrow on gray cursor pad
CP_Enter Enter key on cursor pad
etc.
@Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
Alt- versions of the cursor pad keys
^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
^Break for control-break
@- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
There are also some pseudo-keys to which you may assign a macro:
"OnLoad" is executed any time the macro file is loaded into memory
"Auto" is executed automatically when a connection is established
"Reconnect" is executed automatically when reconnecting without
hanging up and redialing
"CleanUp" is executed when hanging up if carrier detect is active
"OnAbort" is executed whenever a macro other than OnAbort aborts and
displays the **ABORTED** message, just prior to displaying
the message
And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
"Null" does nothing and returns immediately
You may assign macros to control keys by specifying "^x" as the key name,
where "x" is the control key you want to use. Similarly, you may assign
a macro to a regular key by preceding the character representing the key
by a backslash. Note that macros are never in effect when you are
prompted for information by RBcomm; they only affect what (if anything)
gets sent to the remote system.
Finally, you may use "#nnn" where nnn is the decimal scancode of the key
you wish to assign the macro to (values of 200 through 255 are reserved,
167 through 199 are currently unused by any key combinations supported
by the BIOS).
Note that the cursor pad keys will execute the binding for the
corresponding number pad key if not specifically bound (but not vice
versa). CP_Enter defaults to the binding for @Enter.
The commandword is not case-sensitive, but you must include the
underscore if present and use the entire commandword (abbreviations are
not supported).
With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN commands,
all commands which take a string argument pop up a prompt if the string
is empty (i.e. ""). Strings may include the following special sequences:
^x specified control character
^? ASCII DEL (127)
\a ^G (bell)
\b backspace
\e escape
\f form feed
\n line feed
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\^ carat
\0 ASCII NUL (for TEXT command only)
For character arguments, you may specify either
'c'
where the character c is interpreted as for a string, or you may specify its
ASCII value.
Everything from a semicolon (unless it is in a string) to the end of the line
is considered a comment, as are blank lines.
If a line starts with #include rather than a key name, the specified file
will be compiled into the macro file as if it were part of the current text
file. Note that the string is processed just like any other strings, so that
you must double any backslashes (or use forward slashes, instead).
Format:
#INCLUDE "d:/path/filename"
an extension of .MAC is assumed if no extension is given, and the drive letter
and path are optional (default is current drive and directory). #INCLUDEs may
be nested up to twelve deep.
If a line starts with #ignore rather than a key name, any subsequent
occurrences of the keyname following the #ignore will be ignored, just as if
you had already defined a binding for the key. This is useful when
#include'ing a file if you do not want all the bindings in the included file.
Format:
#IGNORE <keyname>
For readability, you may give names to extended keys with the
#DEFKEY <newname> <keynumber>
command. User names will be lost on decompiling the macro file,
however. For example, "#defkey Proc1 199" will let you refer to "Proc1"
and "#199" interchangeably.
ABORT
abort the current macro or operation as if the user had pressed Esc.
ABORT_UNTIL
Abort any currently executing UNTIL command after the command(s) it
controls complete. If multiple UNTIL commands are nested, each is
aborted as the commands it controls complete, until all pending
UNTILs have been aborted. Useful mainly in conjunction with the
DELAYED command to provide a timeout on UNTIL loops.
See also DELAYED, UNTIL.
ANSWERBACK "string"
sets the answerback message to the specified string. If the string is
empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
command), otherwise, answerback is enabled.
AT hh:mm:ss
execute the following line (or lines if a MULTI) at the specified
time. If the specified time is less than the current time, the
command(s) will be executed the next day. The seconds may be
omitted, in which case they default to 0.
Note: the command(s) may actually execute later than requested if
RBcomm is busy processing incoming characters at the time the
command should execute. The command will execute as soon as RBcomm
empties its receive buffer.
See also DELAYED.
AUTO_ZMODEM
reenable Zmodem and Puma autodownloads if they have been canceled by
an ENDWHEN. This is functionally equivalent to
WHEN 0 "**^XB00"
RECEIVE 'Z'
WHEN 0 "^X^H^XPuma^X^H^X"
RECEIVE 'P'
The autodownloads are also reenabled when hanging up, dialing, or
loading a new macro file.
WARNING: do not invoke while autodownload is enabled, as you will wind
up invoking a download multiple times for one download request....
Note: this command will be renamed to AUTO_XFER in a future release.
See also ENDWHEN, WHEN.
AWAITKEY
pause until a key is pressed. The next function which reads a key
will read the key which was pressed. Returns immediately if there
was any typeahead (including RBcomm's key stack).
See also KFLUSH.
BEEP
sound the bell. Useful mainly in conjunction with the MULTI or
DELAYED commands (see below).
BREAK
send a break to the remote system
CALL keyname
execute the macro (if any) bound to the specified key and then continue
executing the current macro (if inside a MULTI).
See also GOTO_KEY, PUSHKEY.
CANCEL_DELAYED which
cancel the specified delayed action. Currently supported:
ALL cancel all delayed actions
LAST cancel the last executed DELAYED. If called a second
time without an intervening DELAYED, the second call
is ignored.
See also DELAYED.
CANCEL_NOTIFY
remove the notify window immediately instead of at the end of the
configured period of time.
CHDIR "dir"
change the DOS default directory to the specified directory.
CLOSE_LOG
close the current log file. If logging is off, this command has no
effect.
See also OPEN_LOG, TOGGLE_LOG.
CUT num dir "search"
search the screen backwards from the current cursor position until
the search string (case sensitive) is found, then copy "num"
characters in the indicated direction (AFTER or BEFORE) to the cut
buffer. The contents of the cut buffer remain unchanged if the search
string is not found (in which case the completion status is set to
FAILED for testing by IF or UNTIL). The cut buffer may be sent to
the remote system with the PASTE command, inserted into a line
being edited by pressing Alt-P, or inserted with the %C variable
expansion.
Note that trailing blanks are deleted from the cut buffer. In
addition, the CUT command treats the entire screen (even if a WINDOW
command was used to restrict output to a portion of the screen) as a
single long line, ignoring all line wrapping for both search and cut.
Examples:
Screen contains "1234test5678cursor here->" and the cursor is as
indicated. Then
CUT 3 BEFORE "test"
places "234" into the cut buffer, while
CUT 6 AFTER "test"
places "5678cu" into the cut buffer. Further,
CUT 7 BEFORE ""
will place " here->" into the cut buffer.
See also PASTE.
DELAYED time
execute the macro on the next line (or lines if it is a MULTI) the
given amount of time from now. You may have up to six delayed
commands active at any given time. The maximum delay time is 18
hours; the macro compiler will complain if you attempt to use a
greater delay. Times are specified as
seconds
minutes:seconds
or hours:minutes:seconds
Note: the command may actually execute later than requested if RBcomm
is busy processing incoming characters at the time the command should
execute. The command will execute as soon as RBcomm empties its
receive buffer.
See also CANCEL_DELAYED, WHEN.
DIAL number redial
dial the specified entry (0-19) from the dialing directory, or pop up
the dialing directory if 'number' is PROMPT. 'redial' specifies how
to dial:
ONCE make only one attempt
ATTACK try repeatedly until connected
RECONNECT make a single attempt if not connected, or set
parameters and password without dialing if already
connected
See also LISTDIAL.
ECHO ON|OFF
ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
full-duplex (local echo off).
(see Alt-E)
See also TOGGLE_ECHO.
ENDWHEN which
cancel the specified WHEN command. Currently supported:
ALL cancel all WHENs except the Zmodem and Puma
autodownloads
ALL_XFER cancel all WHENs including the autodownloads
LAST cancel the last executed WHEN. A second call without
an intervening WHEN acts the same as ENDWHEN ALL.
See also WHEN.
EXEC "command-to-execute"
everything up to the first blank in the string specifies the program to
execute (either full path and extension, or "!prog" to let COMMAND.COM
find and fire up the program), the remainder of the string is the
command tail to pass to the program. Note that a following IF
command will always consider the EXEC to have succeeded if you use the
!prog form (that's because COMMAND.COM does not pass on the completion
status of the program it runs).
Within the command tail, a percent sign introduces a variable
substitution. The following sequences are supported:
%a hexadecimal I/O base address being used
%C contents of the cut buffer
%d current date, in format mm-dd-yy
%D current directory, including drive
%i IRQ number being used (0-15)
%I get input from user. The following characters up to the next
percent sign are used as the prompt and then discarded.
%M current macro file name
%p port number (1-4)
%P port parameters, in same format as dialing directory
display
%s current serial port speed
%t current time, in format hh:mm:ss
%V get an environment variable. The following characters up to
the next percent sign are used as the name of the variable
and then discarded.
%% a percent sign
See also EXECN, IF, SHELL.
EXECN "command-to-execute"
This command is identical to EXEC, except that no error box is
displayed in the event of an error.
See also EXEC.
EXIT
End RBcomm. Will prompt you whether or not to hang up if you are
still connected to another system.
FDELETE "filespec"
delete the file(s) named by filespec (which may include wildcards).
Note that there is no confirmation requested, so use this command
with care!!!
See also FILES.
FILES "filespec"
display a three-up list of the files matching the filespec
See also FDELETE.
FORCE_CLEANUP keyname
execute the following line(s), then execute the macro bound to
"keyname" regardless of how the commands are exited (i.e. normally,
ABORT, or <Esc>). FORCE_CLEANUPs may be nested, in which case
the innermost one is the only one to execute unless the cleanup
code executes an ABORT itself (then execution gets passed to the one
enclosing it, etc.). If no cleanup is needed and the FORCE_CLEANUP
is merely being used to prevent a complete abort on Esc, the pseudo-
key Null may be used. Null is guaranteed to perform no action and
return immediately.
GOTO_KEY keyname
continue execution with the specified macro (if bound). Never returns
to the current macro. If the key is not bound (i.e. GOTO_KEY Null),
execution resumes at the point from which the current macro was
CALLed, effectively producing a return from a nested macro.
See also CALL, PUSHKEY.
HANGUP
hang up. Executes macro bound to "CleanUp" before actually hanging
up if carrier detect is active. After hanging up, the default macro
file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
See also HANGUP_ONLY.
HANGUP_ONLY
hang up, but do not execute the "CleanUp" macro or reload macro files.
See also HANGUP.
HELP
pop up the help screen
IDLE
go into idle mode, sending a blank followed by a backspace every 2
minutes. Press Esc to end idle mode.
Both the interval and the sequence sent by idle mode may be configured
with RBCONFIG.
IF SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
IF SUCCESS and IF FAILED conditionally execute a command based on the
completion status of an immediately preceding EXEC, SHELL, SEND,
SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR. The following line (or
lines if a MULTI) is executed only if that prior command was
successful in the case of IF SUCCESS, or if it failed in the case of
IF FAILED.
IF CONNECTED executes the following command if carrier detect is
asserted, while IF OFFLINE executes the following command if
carrier detect is deasserted.
IF DV executes the following command if RBcomm has detected that it
is running under DESQview, while IF NOT DV executes the following
command only if RBcomm is not running under DESQview.
For example, if you want to execute a program only after failing to
see a particular string, you would use
MULTI
WAITFOR 10 "don't run program"
IF FAILED
EXEC "!someprog args"
END
See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
KFLUSH
empty the keyboard buffer (including RBcomm's key stack).
See also AWAITKEY.
LEARN
start learning a keyboard macro
See also UI_MENU.
LISTDIAL "numbers"
dial the specified numbers from the dialing directory repeatedly until
a connection is established with one of the numbers. If the empty
string is specified, the user will be prompted for the numbers to dial.
See also DIAL.
LOAD_MACRO "file"
load the specified macro file from the RBcomm directory. If an empty
filename is given, the user will be prompted for a name, which
defaults to the name of the currently loaded macro file. The current
macro (if any) and any that it had interrupted are aborted. However,
if the interruption occurred during a command of extended duration
such as a WAITFOR, that command will complete normally before the
macro is aborted.
See also SAVE_MACRO, UI_MENU.
LOG "filename" "message"
append the specified message to the named file. Both the filename
and the message may contain variable expansions as described under
EXEC. If the filename is (or expands to) the empty string "", the
expanded message is appended to the current log file (if any).
See also OPEN_LOG.
LOWER_DTR
requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
command. The best place to put this command is in your CleanUp macro.
MESSAGE row col msg
display the specified message starting at the given row and column on
the screen. If either row or column is 255, use the current row or
column.
MESSAGEBOX msg
if running under TopView or DESQview, a window with the given message
will pop up for three seconds. This command is ignored otherwise.
The message is limited to 40 characters, anything beyond that is
ignored.
See also NOTIFY, CANCEL_NOTIFY.
MULTI
the following lines, up to but not including a line starting with END,
are assigned to the specified key. The macros assigned to the key
may not total more than 253 bytes, and the macro compiler will
complain if they do.
The format of the following lines is the same as for a regular macro,
except that you do not specify a keyname. For example, to make
shift-F2 switch terminal emulation to VT52, use
+F2 MULTI
PUSHKEY 13 0
PUSHKEY 'V' 0
PARAM_MENU
END
Note: you may use { and } on separate lines as synonyms for MULTI
and END.
NOTIFY msg
if running under TopView or DESQview, and RBcomm determines that it is
in the background, a window with the given message will pop up for
three seconds. This command is ignored otherwise.
The message is limited to 40 characters, anything beyond that is
ignored.
See also CANCEL_NOTIFY, MESSAGEBOX.
OPEN_LOG "file"
if logging is on, the current log file will be closed. Then, the
specified log file will be opened (if no name is given, a prompt is
popped up). The same variable expansions which are valid for
the EXEC command are applied to the filename which is given (or
entered by the user).
For example, to allow the environment variable RBLOG to specify the
base name of the log file, use
OPEN_LOG "%VRBLOG%.LOG"
See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
PARAM_MENU
pop up the "Set Parameters" menu
PASSWORD
send the password defined in the dialing directory. Does not send
a carriage return or any other terminating sequence.
See also TEXT, TYPE.
PASTE
send the contents of the cut buffer to the remote system.
See also CUT.
PAUSE num-ticks
halt execution for num-ticks/18 seconds. Useful mainly in conjunction
with the MULTI command (see above).
PUSHKEY key scan
or
PUSHKEY keyname
put the specified key/scancode pair onto RBcomm's internal keyboard
stack, where the last pushed pair will be the next keystroke read
by RBcomm. The stack is currently eight keystrokes in size, and any
PUSHKEY executed while the stack is full will simply be ignored.
"keyname" may be the name of any keystroke recognized by the macro
compiler.
Useful mainly in conjunction with the MULTI command (see above).
RECEIVE 'type'
start receiving a file with the specified protocol
0 prompt for protocol
'A' ASCII (capture to file--equivalent to OPEN_LOG "")
'X' Xmodem with parameters
'K' Xmodem-K with parameters
'Y' Ymodem
'^Y' Ymodem with parameters
'G' Ymodem-G
'^G' Ymodem-G with parameters
'Z' Zmodem
'^Z' Zmodem with parameters
See also IF, OPEN_LOG, SEND, TYPE.
RECEIVEFILE 'type' "parameters"
start receiving using the specified protocol (which may be any of the
ones listed for RECEIVE except 0 or 'A'), passing the specified
parameters to the file transfer module. Unlike RECEIVE, this command
will not pop up any messages unless it is unable to load the file
transfer module; in case of an error, the completion status is set
to FAILED.
See also RECEIVE, SENDFILE.
REPEAT times
repeat the command on the next line (or lines if a MULTI) the specified
number of times.
RFLUSH
clear any characters which may still be in the serial port receive
buffer.
See also KFLUSH.
SAVE_MACRO "file"
save the current macros to the specified file, located in the RBcomm
directory.
See also LOAD_MACRO, UI_MENU.
SEND 'type'
prepare to send a file with the specified protocol
0 prompt for protocol
'A' ASCII
'X' Xmodem
'K' Xmodem-K
'Y' Ymodem
'G' Ymodem-G
'Z' Zmodem
'R' reduced-speed (medium) Zmodem
'S' slow Zmodem
control character versions of any of the above ('^X', '^Y', etc) will
delete the file(s) corresponding to the first filespec after sending.
See also IF, SENDFILE, RECEIVE, TYPE.
SENDFILE 'type' "file"
send the specified file with the given protocol, which may be any of
the ones listed for SEND except 0 or 'A'. Unlike SEND, this command
will not pop up any messages unless it is unable to load the file
transfer module; in case of an error, the completion status is set
to FAILED.
See also RECEIVEFILE, SEND.
SHELL
shell to DOS
See also EXEC, IF.
TEST EXISTS "filespec"
determine whether any files matching the filespec exist. Sets the
status to SUCCESS if at least one exists, FAILED if none. The status
may be checked with IF or UNTIL commands.
See also TEST WHEN, IF.
TEST WHEN "str"
determine whether a WHEN with the specified search string is currently
active. Sets the status to SUCCESS if at least one exists, FAILED if
there are no WHENs with the specified string. The status may be
checked with IF or UNTIL commands.
See also IF, WHEN, TEST EXISTS.
TEXT "msg"
send the specified characters out the comm port. "msg" is limited to
253 characters.
TOGGLE_ECHO
toggle the state of local echoing
See also ECHO.
TOGGLE_LOG
if logging is currently on, turns off logging received data to file
if logging is off, pops up a prompt for the name of the capture file
See also OPEN_LOG, CLOSE_LOG.
TOGGLE_VERBOSE
toggle the state of verbose mode (see Alt-Y)
See also VERBOSE.
TRANSLATE_BS ON|OFF
TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
turns it off.
TYPE "file"
send the specified file to the remote system as a stream of ASCII
characters. Pauses at the end of each line and waits for the carriage
return to be echoed (will continue after three seconds even if the
echo is not seen). Equivalent to
SEND 'A'
if no filename is given.
See also SEND.
UI_MENU
pop up the load/save macro menu
See also LEARN, LOAD_MACRO, SAVE_MACRO.
UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
repeatedly executes the following line (or lines if a MULTI) until
the status of the last action is either success for UNTIL SUCCESS
or failure for UNTIL FAILED. UNTIL CONNECTED repeatedly executes
the following command until carrier detect becomes active, while
UNTIL OFFLINE repeats until carrier detect drops.
See also ABORT_UNTIL, IF.
VERBOSE ON|OFF
VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
(see Alt-Y)
See also TOGGLE_VERBOSE.
VIEW "filename"
display the specified file one screenfull at a time. Pops up a prompt
if the null filename is given.
Pressing the space bar displays the next screen, Escape exits the
file view.
WAITFOR timeout "wait-string"
wait up to timeout seconds for the specified string of characters to
arrive over the comm port. Useful mainly in conjunction with the
MULTI command (see below).
You may test whether the string was actually received by following
the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
3.11, a failed WAITFOR does not abort the MULTI it is a part of).
See also IF.
WHEN iterations "when-string"
execute the command on the following line (or lines if it is a MULTI)
whenever the "when-string" is encountered in the data stream coming
from the remote system. After the string has been encountered
"iterations" times, the WHEN is automatically canceled (if iterations
is zero, the WHEN must be explicitly canceled with ENDWHEN).
You may have up to six WHENs active at any time (eight if you cancel
the autodownload [see ENDWHEN above]). All WHENs are canceled on
hanging up or dialing a number, and autodownload is re-enabled.
WHENs are tested in the order in which they were executed, so multiple
WHENs with the same when-string will trigger in the order in which
they were asserted.
This can be an extremely powerful command. For example, you can
implement another autodownloading (or uploading!) protocol simply by
adding
WHEN 0 "start-string"
EXEC "xfer-program parms"
to the AUTO or OnLoad macro. On CompuServe, you can make Ymodem
autodownloading by adding
WHEN 0 "initiate YMODEM receive"
RECEIVE 'Y'
to the OnLoad macro.
The built-in Zmodem autodownload corresponds to
WHEN 0 "**^XB00"
RECEIVE 'Z'
while Zmodem auto-upload can be added with
WHEN 0 "**^XB01"
SEND 'Z'
The standard Puma autodownload is equivalent to the lines
WHEN 0 "^X^H^XPuma^X^H^X"
RECEIVE 'P'
[thanks to Matthew Thomas for publishing his autodownload string!].
See also DELAYED, ENDWHEN.
WINDOW row col width height
limit the terminal emulator to a portion of the full screen.
WINDOW 0 0 255 255 will restore use of the full screen regardless of
the screen size.
-----------
Time Limits
-----------
The maximal time intervals which may be specified for various commands are:
255 ticks (~14 seconds) PAUSE
255 seconds (4.25 minutes) WAITFOR
18 hours (64800 seconds) DELAYED
-----------------------------------------------------------------------------
Terminal Emulation
------------------
RBcomm supports four terminal emulations. ANSI provides standard ANSI
escape sequences plus most VT102 and many VT200 escape sequences. BBS
is identical to ANSI except that clearing the screen with Esc-[-J or
Esc-[-2-J also homes the cursor, and character set switching is
disabled. AVATAR is identical to BBS except that two of RBcomm's
private commands are replaced by the AVATAR level 0 command set.
Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
actions a VT52 or H19 would perform. In addition, in all of these
modes, RBcomm has its own, much more compact command set.
------------------
Control Characters
------------------
^A move cursor up a line (will become ^^ in the next release)
^B move cursor right one position
^C move cursor down a line
^D move cursor left one position, does not wrap to previous line
^E send the answerback string to the remote system
^F special sequences (see below)
^G sound bell, or flash screen if visible bell enabled
^H move cursor left one position, wraps to previous line
^I move to next tab stop
^J move cursor down a line, scrolling screen when at bottom
^K insert a blank line
^L clear screen and home cursor
^M move cursor to start of line
^N "shift out"--switch to G1 character set (VT100)
^O "shift in"--switch to G0 character set (VT100)
^P clear rest of line
^R clear rest of screen
^T change character attribute to underlined
^U clear underlined attribute
^V (BBS) start of an AVATAR command (see below)
(other) change to reverse video
^W cancel reverse video
^X insert a blank at the cursor's position, push rest of line right
^Y (BBS) repeat the following character the number of times specified by
the second character after the ^Y
(other) delete character at cursor position, rest of line shifts left
^Z delete line cursor is on
^[ escape sequence (see below)
^\ turn on insert mode
^] turn off insert mode
^^ move cursor up a line
^_ the following two characters (less 32) specify the new cursor
column and row. i.e. ^_-blank-blank homes the cursor.
----------------
Escape Sequences
----------------
Esc-blank-F turn off eight-bit control characters
Esc-blank-G turn on eight-bit control characters. When eight-bit control
characters are enabled, many of the characters from 80h through
9Fh are equivalent to Esc-<char-40h>.
Esc-( (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
set
Esc-) (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
set
Esc-# (VT100) next character sets character size
only '8' implemented -- fill screen with 'E's for alignment display
Esc-7 save cursor
Esc-8 restore cursor
Esc-< set terminal emulation to ANSI
Esc-= set keypad application mode (if allowed to change NumLock by RBCONFIG)
Esc-> set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
Esc-@ turn on insert mode
Esc-A move cursor up
Esc-B move cursor down
Esc-C move cursor right
Esc-D (ANSI) "index"--move cursor down, scroll if at bottom
(VT52) move cursor left
Esc-E (ANSI) move to start of next line, scroll if at bottom
(VT52) clear screen
Esc-F (ANSI) not implemented
(VT52) select graphics character set
Esc-G (ANSI) not implemented
(VT52) select text character set
Esc-H (ANSI) set horizontal tab at current position
(VT52) home cursor
Esc-I (ANSI) horizontal tab
(VT52) reverse linefeed, scrolls down if already on top line
Esc-J (ANSI) not implemented
(VT52) clear to end of screen
Esc-K (ANSI) not implemented
(VT52) clear to end of line
Esc-L (ANSI) not implemented
(VT52) insert a new line at cursor
Esc-M (ANSI) "reverse index"--cursor up, reverse scroll if at top
(VT52) delete cursor line
Esc-N (ANSI) not implemented
(VT52) delete char at cursor, rest of line shifts left
Esc-O (ANSI) not implemented
(VT52) turn off insert mode
Esc-Y move cursor, next two characters are row + 32, column + 32
Esc-Z request identification
(ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
version number and "x" is a single byte identifying implemented
capabilities
bit 0: screen storing implemented (set)
bit 1: file transfer implemented (set)
bit 6: always set (makes character printable)
remaining bits reserved
(VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
a VT52.
Esc-[ ANSI sequence, see below
Esc-] Operating System Command. The following characters through an Esc-\
sequence (maximum 80 characters) are skipped, as this command has
no effect.
Esc-^ ANSI Privacy Message. The following characters through an Esc-\
sequence (maximum 80 characters) are accumulated. If running under
DESQview, the first 40 are displayed in the notification window;
otherwise, the accumulated characters are discarded.
Esc-_ Application Program Command. The following characters through an
Esc-\ sequence (maximum 80 characters) are skipped, as this command
has no effect.
Esc-c reset to initial state
Esc-j save cursor position (Heath H19)
Esc-k restore cursor position (Heath H19)
Esc-l erase line (Heath H19)
Esc-p turn on bold characters
Esc-q turn off bold characters
Esc-v turn on line wrap (Heath H19)
Esc-w turn off line wrap (Heath H19)
Esc-z reset terminal emulation (Heath H19)
--------------
ANSI Sequences
--------------
All of the sequences listed here consist of Esc-[ followed by zero or more
numbers separated by semicolons followed by the command letter. Therefore,
only the command letter will be listed. X1, X2, etc refer to the specified
numeric argument, and usually are followed by a default value in parentheses.
All cursor positioning commands number rows and columns starting at 1.
@ insert X1 (1) blanks, shifting rest of line to the right
A move cursor up X1 (1) lines
B move cursor down X1 (1) lines
C move cursor right X1 (1) positions
D move cursor left X1 (1) positions
E move cursor down X1 (1) lines, scroll if at bottom
F move cursor up X1 (1) lines, scroll if at top
G move cursor to position X1 (1) in current line
H move cursor to row X1 (1), column X2 (1)
I move to X1st (1) following horizontal tab position
J case X1 (*): 0 clear from cursor to end of screen
1 clear from start of screen to cursor
2 clear screen
* default is 0 for ANSI and VT52, 2 for ANSI-BBS and AVATAR
K case X1 (0): 0 clear from cursor to end of line
1 clear from start of line to cursor
2 clear line
L insert X1 (1) lines at cursor
M delete X1 (1) lines at cursor
P delete X1 (1) characters at cursor, rest of line shifts left
S scroll up X1 (1) lines
T scroll down X1 (1) lines
X erase X1 (1) characters starting at cursor position, cursor stays put
Z move cursor to X1st (1) preceding horizontal tab position
` move cursor to position X1 (1) in current line
a move cursor X1 (0) positions from current position in line
c device attribute report
responds by sending Esc-[-?-6-c (VT102)
d move cursor to line X1
e move cursor X1 (0) lines from current line
f move cursor to row X1 (1), column X2 (1)
g case X1 (0): 0 clear horizontal tab at current position
3 clear all horizontal tab stops
'>' clear all horizontal tab stops, then set tabs every
N positions (i.e. Esc-[->-5-g sets tabs every five
columns)
h select mode
case X1 (0): ?2 set emulation to ANSI
?3 select 132-column mode (if enabled by RBCONFIG)
4 turn on insert mode
?5 turn on inverted video
?6 set top of scrolling region to current line, bottom
to bottom of screen (relative cursor positioning)
?7 turn on wrap mode
12 turn on local echo
20 turn on newline mode (send CRLF when CR pressed)
?25 turn cursor on (make visible)
l reset mode
case X1 (0): ?2 set emulation to VT52
?3 select 80-column mode
4 turn off insert mode
?5 turn off inverted video
?6 set top of scrolling region to topmost line, bottom
to bottom of screen (absolute cursor positioning)
?7 turn off wrap mode
12 turn off local echo
20 turn off newline mode (send only CR when CR pressed)
?25 turn off cursor (make invisible)
Note: may not work on all systems or in all video
modes
m select graphic rendition
for each Xn in order,
0 reset attributes to white on black, turn off reverse
video
1 set bold
4 set underlined
5 set blinking
7 set reverse video
8 set invisible (black on black)
21 turn off bold
22 turn off bold
24 turn off underlined
25 turn off blinking
27 turn off reverse video
30 set foreground color
-
37
40 set background color
-
47
Note: Esc-[-m is equivalent to Esc-[-0-m
n device status report
case X1 (0): 5 report terminal status
always sends Esc-[-0-n (terminal OK) to remote
6 report cursor position
sends string Esc-[-row-;-col-R to remote system
15 printer status
sends Esc-[-?-1-3-n (no printer) if no printer defined
Esc-[-?-1-0-n if printer is ready
Esc-[-?-1-1-n if printer is not ready
[currently always sends ?13n]
25 report User Definable Key status
always sends Esc-[-?-21-n (UDK's locked)
26 report keyboard dialect
always sends Esc-[-?-27-;-1-n (US ASCII)
r set scrolling region to rows X1 (1) through X2 (lines-on-screen)
s save cursor (may not be nested)
u restore cursor
x request terminal parameters (VT100)
case X1 (0): 0 sends back string indicating bits, parity, speed
1 sends back string indicating bits, parity, speed
the string sent is
Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
where <id> is 2 if X1 was 0 and 3 if X1 was 1
<parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
and 5 for even
<bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
<tspd> and <rspd> are the transmit and receive speeds:
16 -> 110 bps
32 -> 150 bps
48 -> 300 bps
56 -> 600 bps
64 -> 1200 bps
88 -> 2400 bps
104 -> 4800 bps
112 -> 9600 bps
120 -> 19200 bps
128 -> 38400 bps
136 -> 57600 bps
z reset terminal emulation (Heath H19)
blank extended ANSI sequence
-----------------------
Extended ANSI sequences
-----------------------
If the command character for an ANSI sequence is a blank, the NEXT character
specifies the actual operation.
@ scroll left X1 (1) columns
A scroll right X1 (1) columns
------------------------
Special RBcomm sequences
------------------------
When RBcomm receives a ^F, the following character specifies the actual
command.
^x display the IBM PC screen character corresponding to the control
character
0 turn off visual bell, ^G will beep
1 turn on visual bell, ^G will flash the screen, but internally
generated beeps still sound
2 flash the screen
3 beep even if visual bell turned on
4 fill area. Identical to AVATAR ^V^M (see below)
5 repeat character. Identical to AVATAR ^Y (see above)
6 repeat pattern. Identical to AVATAR ^V^Y (see below)
; set terminal emulation to UW (not yet implemented). Does not affect
any other settings.
< set terminal emulation to VT102/ANSI. Does not affect any other
settings
= set terminal emulation to ANSI-BBS. Does not affect any other
settings.
> set terminal emulation to VT52. Does not affect any other settings.
? query terminal emulation type. Sends back <127><type> where type is
'A' for VT102/ANSI, 'B' for ANSI-BBS, 'V' for VT52, and 'U' for
UW.
@ send identification (see Esc-Z)
A if next character is '0' through '7', save the current screen in the
specified slot. This may silently fail if there is not enough memory
available (thus the remote system must be capable of redrawing the
screen itself). For technically minded: Screens are first stored in
the near heap, then in the far heap (to store all ten screen requires
a memory partition of about 85K using 80x25 screens, more if the screens
are larger). Any screens in the far heap are lost when swapping, such
as running DSZ or shelling to DOS. Using a 65K partition will allow
you to store four or five screens in the near heap, none in the far
heap.
Note: this command will change in the next release
B if next character is '0' through '7', restore the screen from the
specified slot where a screen should have been previously saved with
^FA. If no screen has been saved in the slot, command fails. Sends
a response of 127-<digit>-<status> to the remote system, where the
digit is the slot number from the ^FB command, and status is 'Y' if
the screen was restored or 'N' if the screen remains unchanged.
Note: this command will change in the next release
C if next character is '0' through '7', free the specified slot, so that
it is as if no screen had ever been saved there.
Note: this command will change in the next release
------------------------
AVATAR command sequences
------------------------
^V^A set screen attribute to low seven bits of following character
^V^B set blink
^V^C move cursor up a line
^V^D move cursor down a line
^V^E move cursor left one space
^V^F move cursor right one space
^V^G clear from cursor to end of line
^V^H<r><c> move cursor to row <r> and column <c>, where the upper left corner
is 1,1
^V^I turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
^V^J scroll area up. Next five characters specify number of lines to
scroll, top margin, left margin, bottom margin, and right margin (all
margins are based on 1,1 being the upper left corner of the screen)
^V^K scroll area down. Next five characters are as for ^V^J
^V^L clear area. Next three characters specify screen attribute for cleared
area, number of lines less one, and number of columns less one. The
blink bit of the attribute is ignored, and the current display attribute
is set to the attribute of the cleared area.
^V^M fill area. Next four characters specify screen attribute for filled
area, character to fill with, number of lines less one, and number of
columns less one. The current display attribute is set to the filled
attribute with blinking turned off.
^V^N delete character at cursor position
^V^Y repeat pattern. The following character specifies the length of the
pattern to be repeated, followed by the pattern, and finally followed
by a single character indicating the number of times to repeat the
pattern. The pattern may contain command sequences, but is limited
to 80 characters (longer patterns are truncated to 80 characters).
-----------------------------------------------------------------------------
Acknowledgements
----------------
Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
which have been implemented.
Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
included keyboard bindings, and his patience in testing new versions.
Thanks to Mike Weaver for his comments and suggestions, some of which have
been implemented.
Thanks to Dave Doren for banging on the macro language and reporting bugs
and possible enhancements.
-----------------------------------------------------------------------------
Program History
---------------
v2.72 9/3/89 first public release
v2.81 10/4/89 second public release
v3.01 1/6/90 third public release
v3.02 1/14/90 minor bugfixes, some H19 extensions added
input line editor now blinks control characters rather than
using ^X notation, ^BS acts as BS, Alt-D inserts ASCII 127
made existing functions available as new macro commands
FDELETE, AWAITKEY, KFLUSH, and ABORT.
v3.03 1/20/90 removed key-reassignment under Alt-M, saving over 300 bytes
added VERBOSE, ECHO, and TRANSLATE_BS macro commands
added answerback message
v3.04 2/2/90 changed macro file format to allow larger macros
added #include macro file inclusion command
added MESSAGEBOX, LOWER_DTR and ANSWERBACK macro commands.
v3.05 2/10/90 changed macro file again to allow control key reassignment
added ANSI Privacy Message (Esc-^) command
v3.06 2/25/90 made existing function CANCEL_NOTIFY available as macro command
maximum delay time now 3600 seconds
v3.10 3/10/90 added VIEW macro command, bound to Alt-V (old Alt-V now Alt-Y)
added support for multiple comm ports without reconfiguring
added %I in EXEC command-tail
v3.11 3/31/90 added IF, UNTIL, ABORT_UNTIL macros
improved handling of multiple comm ports
added #ignore to macro compiler
fixed minor bug in disk-swapping code
v3.12 4/21/90 made SENDFILE and RECEIVEFILE available as macro commands
fixed origin-mode & scrolling-region bugs in terminal emulator
added %a and %i in EXEC command-tail
added seamless Puma file transfers
4/28/90 (fourth public release)
v3.13 6/23/90 macro compiler bugfixes (e.g. IF CONNECTED/OFFLINE now work)
manual dial before directory dial now uses proper port
added IF DV and IF NOT DV commands
(limited release)
v3.14 6/30/90 added WINDOW, FORCE_CLEANUP, and HANGUP_ONLY commands
now able to reconnect without dropping carrier
added %V, %d, %t variable expansions
OPEN_LOG now expands variables
time limit on DELAYED raised to 18 hours
(limited release)
v3.15 7/7/90 added AT, LOG, and EXECN commands
internal changes
(limited release)
v3.16 7/14/90 made Puma autodownload present by default
added RBCDIAL environment variable
added REPEAT, CUT and PASTE macro commands
added OnAbort and Null pseudokeys
(limited release)
v3.20 7/22/90 internal changes
added TEST WHEN/TEST EXISTS/RFLUSH/GOTO_KEY commands
CUT now sets SUCCESS/FAILED
(limited release)
v3.21 7/29/90 fixed problems with GOTO_KEY
(fifth public release)