I'm not going to write software for you, I've got too much of it to do already!
This is the principle though:
1. understand that one transmitter (TX pin or data from the PC) can drive many RX pins connected together. RX pins are inputs so they would all receive the same data.
2. understand that ONLY ONE TX signal can be active at any time. These are outputs so if two were connected at the same time the data would corrupt and if one TX pin was high while another was low, current would flow between them and damage the PIC.
3. understand that if a PIC pin is driven low (zero) but it's corresponding TRIS bit is set high (pin is an input) it can not sink any current.
So what you do is join all the TX and RX pins together but make the TRIS bit on the data outputs (TX) pin =1 so nothing is driving them. Add a pull-up resistor (1K) so the connection is high when nothing is being transmitted. At this stage none of the TX pins are sourcing or sinking current and all the RX pins are high because they are being pulled up by the resistor.
To transmit data, the TX pin is driven low (it stays low permanently) and the bits you want to send are put in the TRIS register bit for that pin. When the bit is zero, the pin becomes an output and because it is driven low, the data line goes low, when you put a '1' in the TRIS bit, the pin becomes an input, no current is drawn and the resistor pulls the data line high. So the TRIS bit is used instead of the TX bit. Because you are never drive the data line high, the current is limited to a safe level by the resistor.
That gets the data around all the PICs, but as they are all in parallel you need a method to route data to the correct one. This is where software comes to the rescue. You have to invent a protocol, it is entirely up to you how you do it. Each byte or block of bytes has to have an identifier (packet address) assigned to it. As all the PICs and the PC receive data in parallel, they all see the same data and have to look at the address to see if the data is for themselves or for another. They should only respond to data matching their own address and they should ignore anything else. At it's simplest, all you might do is prefix each block of data with an ID byte, for example if you sent "4Hello", PIC 4 would recognize it's ID and respond, sending "2World" would make PIC 2 respond.
Brian.