ACEterm Documentation

by Craig Bruce -- for version 1.01 -- December 17, 1995.


This is a simple VT-100 terminal-emulation program.  To start it up, type:


at the command-line prompt.  When it starts, it will bring up a screen with
24 display lines and a status line.  (You will see slightly different things
depending on the number of display lines that the window you start the
terminal program in; an 27-row VDC screen gives the best results).  The
status line will display the program name and version (the official name is
"ACEterm"), the baud rate, the parity (et al.) setting, the terminal
emulation type, and the capture buffer-size and modification status, the
amount of dynamic memory free, and which key to press for help.

The capture buffer, when active, stores every byte received from the serial
port verbatim (including escape sequences, etc.) and can grow to be as large
as the amount of free "dynamic" memory you have available.  My system has
12.5 Megs of the stuff available, and that is how large my capture buffer
can get.  The size of the capture buffer is reported in bytes on the status
line (as is the amount of dynamic memory free).

The capture buffer uses "dynamic memory" exclusively for storing data (it
doesn't use any memory in the program area for this), so you will not have
much luck trying to use this feature on an unexpanded C64, which will only
give you a little bit of dynamic memory to use (more if you disable the
Soft-80 display or decrease the program-area limit).  Also, this feature
will drop lots of characters if your modem doesn't have RTS/CTS hardware
flow control.  If your modem has hardware flow control but you lose
characters anyway, then try fiddling with the "RTS activation delay" field
in the system configuration.  You can check if you are losing characters by
pressing Ctrl-O and checking the overrun count.  The program currently has
only one capture buffer, but the design allows for multiple capture buffers
(if such a thing whould be useful).  The capture buffer is the only real
"feature" of the terminal program, other than the VT-100 emulation.

There are three terminal-emulation modes supported: VT-100, GlassTTY, and
Verbatim.  GlassTTY will not interpret any of the escape sequences that it
receives, and Verbatim mode will display every character that it receives
and will not even interpret control characters like carriage return.  In
this mode, the characters will be shown in reverse according to the ASCII
character (printable characters will be translated as normal).

All of the important VT-100 escape sequence are supported (including the
Insert-Line and Delete-Line sequences of the VT-102), so you shouldn't have
too many problems.  One thing to note: the scroll-region doesn't work
exactly like it does on a VT-100: if the cursor is moved outside of the
scroll region, then the scroll region will be reset to the entire screen.
(I don't know if this restriction is of any practical consequence; most
full-screen programs just use scroll regions temporarily to insert and
delete lines).  This program has been tested and works perfectly with "vi",
"emacs", "pine", and "lynx".

In normal operation, you type characters on the keyboard and they are sent
to the modem, and the characters from the modem are displayed on the
screen.  This is "full echoplex", and the program doesn't support "half
echoplex".  The program also doesn't support menu-oriented auto-dialing/
etc.  features, so you're going to have to send your own "AT" commands to
your modem by hand (which really isn't much of a bother if you have an
intelligent modem and it is set up properly (it doesn't take me very long to
type "atds")).


The following hot keys are supported ("Co-" means "Commodore-" and "Ct-"
means "Ctrl-"):

Co-A : decrease baud rate
Co-B : increase baud rate
Co-E : exit and save capture buffer if modified
Co-I : help information (also, the HELP key)
Co-N : name the capture buffer
Co-O : show operating status of modem driver
Co-P : change parity: 8N1/7E1
Co-Q : quit (won't work if buffer is modified)-+
Co-S : save the capture buffer                 |
Co-T : set terminal-emulation type             |
Co-Z : pause terminal flow                     v
Co-\ : toggle capture-buffer modification status
Co-_ : compose ISO-8859-1 character
Co + and Co - : enable(+)/disable(-) the capture buffer
Ct-1 : clear the capture buffer
Ct-3 : enter hexadecimal ASCII character code
F1,F3,F5,F7,Ct-@ to Ct-_ : PF1,PF2,PF3,PF4, ASCII Ctrl codes
CLR  : clear screen (nothing sent to modem)
RVS,RVSOFF : reverse screen (128 VDC only)
STOP : nothing(128) / send TAB character(64)

The capture buffer is named "capturebuf" by default but you can change this
by using Commodore-N.  You will be prompted to enter a filename on the
status line.  This name can be a full pathname if you wish.  If the filename
already exists, then the old file will automatically be overwritten when you
save the capture buffer.

If the capture buffer has unsaved characters in it, then an asterisk (*)
will be displayed before the "buf/BUF" field on the status line.  When the
capture buffer is active, the field will be named "BUF" and when it is
inactive, "buf".  The contents of the buffer will be retained between
activations and deactivations.  To clear the capture buffer, use Ctrl-1.
You cannot clear the capture buffer nor exit from the terminal program if
the buffer has unsaved characters in it, so you can use Ctrl-\ (british
pound) to toggle the modification status (or save the buffer with Ctrl-S or

The Ctrl-O "operating status" of the modem includes the number of characters
dropped, send, and received.

The Ctrl-Z key allows you to stop the flow of the display immediately.  When
this key is pressed, ACEterm will stop pulling characters from the modem
device and will wait for you to press another key.  If the receive buffer
for the modem fills up, then the device driver will assert hardware flow
control.  If you have a hardware-flow-controlled connection all the way back
to your remote host, then no characters will be lost.  For modern remote
hosts, this mechanism will give you much faster response than the
now-pretty-much-useless Ctrl-S / Ctrl-Q (Xoff/Xon) mechanism.

The keys DEL, HOME, BACKARROW, and STOP send special characters, depending
on whether you are using a C128 or C64 keyboard (extended or basic
keyboard).  The DEL and HOME keys send BackSpace ($08) and Delete ($7f),
respectively on both keyboards.  The BACKARROW sends an underscore and STOP
is ignored on a C128 while BACKARROW sends an Escape and STOP sends a Tab on
the C64.  To get an underscore on a C64, you can press either
Shift-BACKARROW or Commodore-SPACE.  These keys are not currently
user-definable (except by modifying and re-assembling the terminal
program--it is written for the ACE-assembler and the stuff to change is near
the bottom of the source file), so you'll have to live with these settings
for the time being.


ACEterm has two command keys for composing characters:  Ctrl-3 (with the #
symbol on top) and Commodore-_ (BackArrow).  After pressing the former, you
will be prompted to enter the two-digit hexadecimal number for the ASCII
code that you want to send.  After entering the digits, the code will be
sent just as if you had typed it on the keyboard.  For your convenience, a
table of all of the ASCII codes (including the ISO-8859-1 codes) is included
in Appendix A of this document.

Note that in order to display the ISO-8859-1 characters, you have to load
that characterset into the kernel.  You can do this by either typing:

chrset acechr-iso8859-1

on the command line or by changing the "default character set" field in the
system configuration to be the string "acechr-iso8859-1".  The factory-set
default is to use "acechr-commodore" for hysterical raisins (though I
personally use the ISO set at all times).

The Commodore-BackArrow command will prompt you for a special two-character
code that represents the ISO-8859-1 character that you want to send.  For
example, if I wanted to enter Marko Makela's name in the proper way, I would
enter (angle brackets around keystrokes):

< ><"><">

The following character-composition sequences are accepted for generating
ISO-8859-1 characters.  This table was derived from the VT-220 character-
composition table, but a few extensions are made because the VT-220 table
didn't include all of the ASCII codes between $A0 and $FF (plus, a couple
of VT characters are in different positions).

ASC  SEQUENCE                  ASC  SEQUENCE            ASC  SEQUENCE
---  ---------------           ---  --------            ---  --------
$a0              $c0  `A                  $e0  `a
$a1  !!                        $c1  'A                  $e1  'a
$a2  C/ or C|                  $c2  ^A                  $e2  ^a
$a3  L- or L=                  $c3  ~A                  $e3  ~a
$a4  XO or X0                  $c4  "A                  $e4  "a
$a5  Y- or Y            $c5  *A                  $e5  *a
$a6  ||                        $c6  AE                  $e6  ae
$a7  SO or S! or S0            $c7  C,                  $e7  c,
$a8  ""                        $c8  `E                  $e8  `e
$a9  CO or C0                  $c9  'E                  $e9  'e
$aa  A_                        $ca  ^E                  $ea  ^e
$ab  <<                        $cb  "E                  $eb  "e
$ac  ~~                        $cc  `I                  $ec  `i
$ad  --                        $cd  'I                  $ed  'i
$ae  RO or R0                  $ce  ^I                  $ee  ^i
$af  __                        $cf  "I                  $ef  "i
$b0  0^                        $d0  D-                  $f0  %o
$b1  +-                        $d1  ~N                  $f1  ~n
$b2  2^                        $d2  `O                  $f2  `o
$b3  3^                        $d3  'O                  $f3  'o
$b4  ''                        $d4  ^O                  $f4  ^o
$b5  /U                        $d5  ~O                  $f5  ~o
$b6  P!                        $d6  "O                  $f6  "o
$b7  .^                        $d7  **                  $f7  //
$b8  ,,                        $d8  O/                  $f8  o/
$b9  1^                        $d9  `U                  $f9  `u
$ba  O_                        $da  'U                  $fa  'u
$bb  >>                        $db  ^U                  $fb  ^u
$bc  14                        $dc  "U                  $fc  "u
$bd  12                        $dd  'Y                  $fd  'y
$be  34                        $de  PP                  $fe  pp
$bf  ??                        $df  ss                  $ff  "y

You don't have to worry about typing each of these sequences exactly as-is,
since four transformations are applied in trying to match a two-character
sequence to an ASCII code: (1) try to match as-is; (2) swap the order of the
two characters and try to match; (3) swap the order back and alter the case
of the two characters (letters) and try to match; and (4) swap the altered-
case characters into reverse order again and try to match.  The first match
wins, and if no matches work then an error is displayed and nothing is sent
to the modem.


Future plans for this terminal program include fixing perfecting the
emulation implementing a scrollback viewer for the capture buffer, and
allowing the program to call external programs like the command shell, ZED,
and file-transfer programs.  The intended file-transfer programs are:
Raw-Text transfer, FX, and Z-Modem.

The terminal program will be made to accept the following commands in its
configuration file, ".termrc" (currently no support exists):

- Implement some kind of user-configuration mechanism into ACEterm.
  Functions: getline, getword, locaseWord, lookupWord.
  - script ".termrc":
  - key del $08
  - key home $7f
  - key backarrow $5f
  - key stop null
  - term vt-100
  - baud 38400
  - parm 8N1
  - string 1 hello there how are you?
  - readbuf 768
  - chrset filename
  - number 1 38400 8N1 886-1234 ccnga
  - hangup ~~~ATH^m~~~
  - dial ATDT
  - call-external yes
- Extra features for ACEterm: send break, drop DTR, force flow control.
- Extend the configuration file to 512+ bytes and add new configuration
  items, including the keymaps, a temporary directory, and a config
  directory list for ".xxxxrc" files (or use exec path?).  Type of C128
  internal memory expansion, type of C64 internal memory expansion, type
  of clock to initially set time from.
                   Craig's Handy ASCII Guide (ISO-8859-1)

  0/00 ____NUL____   64/40 _____@_____  128/80 ___________  192/c0 _A`_grave__
  1/01 ____SOH____   65/41 _____A_____  129/81 ___________  193/c1 _A'_acute__
  2/02 ____STX____   66/42 _____B_____  130/82 ___________  194/c2 _A^_circum_
  3/03 ____ETX____   67/43 _____C_____  131/83 ___________  195/c3 _A~_tilde__
  4/04 ____EOT____   68/44 _____D_____  132/84 ___________  196/c4 _A"_dieres_
  5/05 ____ENQ____   69/45 _____E_____  133/85 ___________  197/c5 _A__ring___
  6/06 ____ACK____   70/46 _____F_____  134/86 ___________  198/c6 _AE________
  7/07 ____BEL____   71/47 _____G_____  135/87 ___________  199/c7 _C,cedilla_
  8/08 ____BS_____   72/48 _____H_____  136/88 ___________  200/c8 _E`_grave__
  9/09 ____TAB____   73/49 _____I_____  137/89 ___________  201/c9 _E'_acute__
 10/0a ____LF_____   74/4a _____J_____  138/8a ___________  202/ca _E^_circum_
 11/0b ____VT_____   75/4b _____K_____  139/8b ___________  203/cb _E"_dieres_
 12/0c ____FF_____   76/4c _____L_____  140/8c ___________  204/cc _I`_grave__
 13/0d ____CR_____   77/4d _____M_____  141/8d ___________  205/cd _I'_acute__
 14/0e ____SO_____   78/4e _____N_____  142/8e ___________  206/ce _I^_circum_
 15/0f ____SI_____   79/4f _____O_____  143/8f ___________  207/cf _I"_dieres_
 16/10 ____DLE____   80/50 _____P_____  144/90 ___________  208/d0 _D-_Eth_lr_
 17/11 ____DC1____   81/51 _____Q_____  145/91 ___________  209/d1 _N~_tilde__
 18/12 ____DC2____   82/52 _____R_____  146/92 ___________  210/d2 _O`_grave__
 19/13 ____DC3____   83/53 _____S_____  147/93 ___________  211/d3 _O'_acute__
 20/14 ____DC4____   84/54 _____T_____  148/94 ___________  212/d4 _O^_circum_
 21/15 ____NAK____   85/55 _____U_____  149/95 ___________  213/d5 _O~_tilde__
 22/16 ____SYN____   86/56 _____V_____  150/96 ___________  214/d6 _O"_dieres_
 23/17 ____ETB____   87/57 _____W_____  151/97 ___________  215/d7 __multiply_
 24/18 ____CAN____   88/58 _____X_____  152/98 ___________  216/d8 _O/_slash__
 25/19 ____EM_____   89/59 _____Y_____  153/99 ___________  217/d9 _U`_grave__
 26/1a ____SUB____   90/5a _____Z_____  154/9a ___________  218/da _U'_acute__
 27/1b ____ESC____   91/5b _____[_____  155/9b ___________  219/db _U^_circum_
 28/1c ____FS_____   92/5c _____\_____  156/9c ___________  220/dc _U"_dieres_
 29/1d ____GS_____   93/5d _____]_____  157/9d ___________  221/dd _Y'_acute__
 30/1e ____RS_____   94/5e _____^_____  158/9e ___________  222/de _cap_thorn_
 31/1f ____US_____   95/5f _UNDERLINE_  159/9f ___________  223/df _Es-sed_B__
 32/20 ___SPACE___   96/60 _____`_____  160/a0 _req space_  224/e0 _a`_grave__
 33/21 _____!_____   97/61 _____a_____  161/a1 _!_invertd_  225/e1 _a'_acute__
 34/22 _____"_____   98/62 _____b_____  162/a2 ___cent____  226/e2 _a^_circum_
 35/23 _____#_____   99/63 _____c_____  163/a3 ___pound___  227/e3 _a~_tilde__
 36/24 _____$_____  100/64 _____d_____  164/a4 __currency_  228/e4 _a"_dieres_
 37/25 _____%_____  101/65 _____e_____  165/a5 ____yen____  229/e5 _a__ring___
 38/26 _____&_____  102/66 _____f_____  166/a6 _|_broken__  230/e6 _ae________
 39/27 _____'_____  103/67 _____g_____  167/a7 __section__  231/e7 _c,cedilla_
 40/28 _____(_____  104/68 _____h_____  168/a8 __umulaut__  232/e8 _e`_grave__
 41/29 _____)_____  105/69 _____i_____  169/a9 _copyright_  233/e9 _e'_acute__
 42/2a _____*_____  106/6a _____j_____  170/aa __fem_ord__  234/ea _e^_circum_
 43/2b _____+_____  107/6b _____k_____  171/ab _l_ang_quo_  235/eb _e"_dieres_
 44/2c _____,_____  108/6c _____l_____  172/ac ____not____  236/ec _i`_grave__
 45/2d _____-_____  109/6d _____m_____  173/ad _syl_hyphn_  237/ed _i'_acute__
 46/2e _____._____  110/6e _____n_____  174/ae _registerd_  238/ee _i^_circum_
 47/2f _____/_____  111/6f _____o_____  175/af _overline__  239/ef _i"_dieres_
 48/30 _____0_____  112/70 _____p_____  176/b0 __degrees__  240/f0 _o^x_Eth_s_
 49/31 _____1_____  113/71 _____q_____  177/b1 ____+/-____  241/f1 _n~_tilda__
 50/32 _____2_____  114/72 _____r_____  178/b2 _2_supersc_  242/f2 _o`_grave__
 51/33 _____3_____  115/73 _____s_____  179/b3 _3_supersc_  243/f3 _o'_acute__
 52/34 _____4_____  116/74 _____t_____  180/b4 ___acute___  244/f4 _o^_circum_
 53/35 _____5_____  117/75 _____u_____  181/b5 ____mu_____  245/f5 _o~_tilde__
 54/36 _____6_____  118/76 _____v_____  182/b6 _paragraph_  246/f6 _o"_dieres_
 55/37 _____7_____  119/77 _____w_____  183/b7 __mid_dot__  247/f7 __divide___
 56/38 _____8_____  120/78 _____x_____  184/b8 __cedilla__  248/f8 _o/_slash__
 57/39 _____9_____  121/79 _____y_____  185/b9 _1_supersc_  249/f9 _u`_grave__
 58/3a _____:_____  122/7a _____z_____  186/ba __mas_ord__  250/fa _u'_acute__
 59/3b _____;_____  123/7b _____{_____  187/bb _r_ang_quo_  251/fb _u^_circum_
 60/3c _____<_____  124/7c _____|_____  188/bc ____1/4____  252/fc _u"_dieres_
 61/3d _____=_____  125/7d _____}_____  189/bd ____1/2____  253/fd _y'_acute__
 62/3e _____>_____  126/7e _____~_____  190/be ____3/4____  254/fe _sm_thorn__
 63/3f _____?_____  127/7f ____DEL____  191/bf _?_invertd_  255/ff _y"_dieres_

Back to the ACE Page]