REMOTE TERMINALS AND THE GALAXY
D. W. Parkinson
The occasion may arise when you want to use a Gemini Galaxy (or Nascom + IVC) as
a terminal on another computer system. Some communications programs exist for
this, but they often include a host of non-essential features, and do not always
do exactly what you require. One program I have used and can recommend is Ward
Christensen’s MODEM7. I have used this succesfully in conjunction with a 300 Baud
modem for exchanging files over the PSTN (Public Switched Telephone Network).
Another great point in it’s favour is that it is Public Domain software and is
available on a CP/M user group disk (vol. 47) in source form and at low cost.
However if the computer to which you wish to communicate is close at hand, then
the two machines are likely to be connected together directly via the RS5232
serial interfaces. In this environment (with no intervening modems) high baud
rates can be used, (eg 9600 baud), but problems will immediately be encountered
as a result. This is due to the fact that while the IVC is scrolling the screen
in response to a line-feed character, (a process which takes a few milliseconds),
it can’t respond to any commands, although it will accept and store any
characters sent to it. As a result a conventional “echo” program would miss
incoming characters while waiting for the IVC to respond to a “keyboard poll”
request. (At 9600 baud the characters can come at a rate of approximately one per
A hardware “handshake” on every character received over the RS232 interface would
be a way around this problem, ensuring that no characters are sent unless the
Galaxy is ready to accept them, but if you’re connected into anything other than
a similar CP/M micro it may be impossible to implement. But luckily on the Galaxy
it is a relatively simple task to program round the problem, and this is
illustrated in the listing of REMOTE below. REMOTE is a “bare bones” program that
will turn your intelligent Galaxy into a dumb terminal. I have used it to turn a
Galaxy into a 9600 baud terminal on a larger minicomputer system.
The program uses a first-in first-out buffer (FIFO) to get round the problem
mentioned above. It polls the incoming UART register at every available
opportunity, and if a character is found there, it is transfered to the FIFO. The
main program loop checks the keyboard for a character, and if one is found it is
sent out via the UART. It then checks to see if there is any data in the FIFO,
and if there is it transfers the next character from there to the IVC. The loop
This program can be used as the basis for a more comprehensive package. For
example I have a version that performs the following:
If Control/I is typed on the keyboard then the FIFO pointers are not zeroed once
the characters have been displayed. (i.e. the incoming characters are stored in
the buffer and not discarded.)
If Control/D is typed the FIFO pointers are zeroed and the Control/I ("Insert")
mode is switched off.
If Control/W is typed then the current contents of the FIFO buffer are appended
to a previously specified disk file and the FIFO pointers are then zeroed.
If Control/E is typed then the output file is closed and the program returns to
the CP/M command level.
Once again these extensions are fairly straightforward to add, and enable the
user to keep a selective record of the session on the terminal. The “bare bones”
are here, flesh them out to suit your. requirements!