You guessed it: a driver for the serial port. Since the serial port can do both input and output (it's the first device we've dealt with that does), you'll need two functions this time. Also, since the serial port has to be initialized before use, an initialization function is needed.
serinitvoid serinit(void)
This function initializes the serial port to run at 9600 baud.
serinunsigned char serin(void)
When the user calls serin(), the program blocks until a
character is available in the serial port. When the character becomes
available, read and return it.
seroutvoid serout(unsigned char val)
When the user calls serout(), it waits until it's
possible to send a character, and sends it down the line.
The other drivers you've written have been tested by using them in the lab. For this driver, I want a test program that will go into a loop, and for every character entered by the user, echo it three times.