80-Bus News


November–December 1982, Volume 1, Issue 4

Page 45 of 51


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 millisecond).

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 then repeats.

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!

Page 45 of 51