
The Zilog 85230 Serial Controller 137
/**********************************************************************
*
* Method: gets()
*
* Description: Collects a string of characters terminated by a new-
* line character from the serial port and places it in s.
* The newline character is replaced by a null character.
*
* Notes: The caller is responsible for allocating adequate space
* for the string.
*
* Warnings: This function does not block waiting for a newline.
* If a complete string is not found, it will return
* whatever is available in the receive queue.
*
* Returns: A pointer to the string.
* Otherwise, NULL is returned to indicate an error.
*
**********************************************************************/
char *
SerialPort::gets(char * s)
{
char * p;
int c;
//
// Read characters until a newline is found or no more data.
//
for (p = s; (c = getchar()) != '\n' && c >= 0; p++)
{
*p = c;
}
//
// Terminate the string.
//
*p = '\0';
return (s);
} /* gets() */
The Zilog 85230 Serial Controller
The two serial ports on the Arcom board are part of the same Zilog 85230 Serial
Communications Controller. This particular chip is, unfortunately, rather compli-
cated to configure and use. So, rather than fill up the SerialPort class shown
earlier with device-specific code, I decided to divide the serial driver into two
parts. The upper layer is the class we have just discussed. This upper