Interesting problem. I did a lot of CP/M BIOS stuff, and implemented I/O redirection in systems that never had it. Of the four CP/M systems I had (two of which were S-100), I never had more than two serial ports, and I never ran MP/M. I did a hardware hack to my IMSAI so it could run at 4MHz, but the front panel would still work, because when halted, it would change the system clock to 1MHz. I also did a hardware hack to my CompuPro Interfacer serial card where I swapped the control interface for baud rate and serial bits and parity settings, so the baud rate was now software programmable and the (formerly software controlled) start/stop/number of bits, and parity were moved to the dip switches that previously controlled the baud rate. This was nice in the era of mixed 300 and 1200 baud BBSs.
On-topic answer: The CompuPro Interfacer III had 8 serial ports, so I would approach the problem by writing an emulator for it, and enumerating two of them, and modifying the MP/M XBIOS to support all the ports. Maybe start with the MITS 2SIO emulator as a baseline for the CompuPro emulator.
It seems like the current emulation has 2 2SIO boards and the telnet port maps to them in sequence. The user id seems to come from the emulated physical port the user connects to. Being S-100, nothing really prohibits having 8 2SIO boards for up to 16 connections (provided their emulation allows us to set different IO addresses). It looks like the Interfacer 3 and 4 used a register to assign more than one user to a single UART IO address, allowing (on the 4) up to 32 terminals on 4 UART addresses.
Interesting problem. I did a lot of CP/M BIOS stuff, and implemented I/O redirection in systems that never had it. Of the four CP/M systems I had (two of which were S-100), I never had more than two serial ports, and I never ran MP/M. I did a hardware hack to my IMSAI so it could run at 4MHz, but the front panel would still work, because when halted, it would change the system clock to 1MHz. I also did a hardware hack to my CompuPro Interfacer serial card where I swapped the control interface for baud rate and serial bits and parity settings, so the baud rate was now software programmable and the (formerly software controlled) start/stop/number of bits, and parity were moved to the dip switches that previously controlled the baud rate. This was nice in the era of mixed 300 and 1200 baud BBSs.
On-topic answer: The CompuPro Interfacer III had 8 serial ports, so I would approach the problem by writing an emulator for it, and enumerating two of them, and modifying the MP/M XBIOS to support all the ports. Maybe start with the MITS 2SIO emulator as a baseline for the CompuPro emulator.
It seems like the current emulation has 2 2SIO boards and the telnet port maps to them in sequence. The user id seems to come from the emulated physical port the user connects to. Being S-100, nothing really prohibits having 8 2SIO boards for up to 16 connections (provided their emulation allows us to set different IO addresses). It looks like the Interfacer 3 and 4 used a register to assign more than one user to a single UART IO address, allowing (on the 4) up to 32 terminals on 4 UART addresses.