Thoughts for a new BYE
Bridger Mitchell, Dec. 24, 1987
Discussions with Al Hawley have prompted me to set down notes
about how basic improvements could be added to BYE - the
host executive for remote-system operation. These are just
that -- notes for discussion, to be added to and improved on!
For CP/M 2.2 BYE should be constructed as a standard RSX, using
the Plu*Perfect Systems' RSX header (see BackGrounder ii manual,
Appendix I). This standard header has two key advantages:
other RSX's can be loaded and unloaded below it and it provides
for its own removal/deinitialization.
The RSX image itself should be in PRL or REL format, and loaded
by a quasi-standard RSX loader, customized for BYE's particular
requirements and features. Splitting the code into resident
module and loader module makes it far easier to maintain and
makes the relocation process painless. A sample loader is
available on the BGii disk.
The new BYE can support two different, parallel terminals, each
with terminal-specific video sequences. The key to accomplishing
this is to use a "generic" tcap in the z3 external environment,
and have conout (which is intercepted by BYE) translate the
generic video sequences differently for each terminal.
One limitation: while BYE is running, programs that use video
sequences should be restricted to those that either use the z3tcap
itself, or have been installed with the "generic" tcap.
on init:
move current z3tcap to local_tcap
move generic tcap to z3tcap buffer
on deinit:
move local_tcap to z3tcap buffer
generic tcap:
a "generic" set of escape/control-char sequences. It may be
best to choose/create a set that all have a fixed number of bytes.
e.g. ESC A = cleol, ESC B = cleos, ...
However, if sysops have programs that have internal video strings
(rather than getting them from z3tcap) it would be nice to have
the generic set be the same as the sysop's terminal's tcap, so
that he/she wouldn't have to install a separate version of those
programs for running while BYE is active.
remote_tcap:
installed by an upgraded T3SELECT, which puts the selected
tcap into the remote_tcap buffer, NOT the z3tcap buffer
To accomplish this, the new BYE should have a service
call that returns pointers to internal data structures,
including the remote_tcap buffer. It can usefully
return ptrs to other (configurable) parameters for other
applications, too.
The local and remote tcap buffers should be located within the RSX.
conout routine:
The BYE conout splits the output stream into two parallel
streams -- for the remote user and the local console. The
code would work as follows:
1. accumulate input chars in an input state-machine
2. if input-string == a generic tcap string
emit local_string to local conout
emit remote_string to modem output device
else
emit byte to local conout
emit byte to modem output device
The conout routine is probably best realized as three small
state machines, one for input-recognition, and one for each
output device (local, remote).
ed by an upgraded T3SELECT, which puts the select