Start by looking at the documentation on how to write a resource manager.
You will need to write a resmgr that has multiple devices in the namespace for the 8 device channels.
Each channel will need to have tx and rx buffers, pointers, counters, mutexes, rcvid of blocked clients, and various other info pertinent to the serial port in the control structure.
The resmgr will have to handle, at a minimum, io_open, io_close, io_read, io_write, io_devtl, and io_unblock.
Set up the interrupt to deliver a pulse on interrupt.
An interrupt thread should receive the interrupt pulse, figure out the source, and handle the event (send next byte from tx buffer, read and buffer incoming bytes). When a client does a read and no data is available it may block (depending on blocking options) and in that case if a client is blocked on a channel and data comes in you’ll have to manage unblocking the client at the appropriate time.
The source to Dev.ser is probably on Foundry27 somewhere.