I use the stand-alone version of CCS C. It can do software UART - just put in two "#USE RS232" statements, and give them different stream names. One can be set to the hardware UART and the other given different pins in the options and forced to software UART.
The compiler will load/generate the code for running the software UART itself. As far as your programming is concerned, you then have two serial ports and can refer to them by the stream name in getc(), putc(), etc. just as you would the hardware UART.
See here for CCS's page on it:
https://www.ccsinfo.com/faq.php?page=multiple_rs232
Also refer to the CCS C manual for the #USE RS232 directive and its options.
If you need interrupt support for receiving data from one of the devices, use the hardware UART for that one.