Serial - Uno <-> Uno (grbl) over Tx/Rx

I have two identical Uno boards communicating over tx/rx using software serial (pins 8/9).

board #1 and #2 share 5v and GND..
software serial out on board 1 -> RX board2,
serial in -> TX on board 2

On board #2 I have grbl v1.1 installed (baud 115200).

On board #1 I have a custom program that talks between PC over serial (using cmdmessenger). I have logic in the loop to evaluate:

void loop() {
  while (mySerial.available() > 0)
        processIncomingByte(mySerial.read());
}
void processIncomingByte (const byte inByte)
  {
  static char input_line [MAX_INPUT];
  static unsigned int input_pos = 0;

  switch (inByte)
    {

    case '\n':   // end of text
      input_line [input_pos] = 0;  // terminating null byte
      
      cmdMessenger.sendCmd(kReceiveGrblCmd, input_line);
      
      input_pos = 0;  
      break;

    case '\r':   // discard carriage return
      break;

    default:
      if (input_pos < (MAX_INPUT - 1))
        input_line [input_pos++] = inByte;
      break;

    }
   
  }

The problem is that the messages are partially garbled.. here is example data from the PC when sending "$$\n" to grbl:

$0=10$1=25
$2=0CϘ
$4=0C!RS‚j
$6=0C!R‚êŠj
$12=.002
$11Or‚Š‚j
$13=0C!’&ê0j
$200r
O‚r‚
!’‚Š
Grbl 1.1f «Ò2½ÉB•±Áu5

What I don't understand is that why is part of the data correct at first and then is garbled on the ends of data?

This is what the data should look like:
$0=10
$1=25
$2=0
$3=0
$4=0
$5=0
$6=0
$10=1
$11=0.010
$12=0.002
$13=0
$20=0
$21=0
$22=1
$23=0
$24=25.000
$25=500.000
$26=250
$27=1.000
$30=1000.
$31=0.
$32=0
$100=250.000
$101=250.000
$102=250.000
$110=500.000
$111=500.000
$112=500.000
$120=10.000
$121=10.000
$122=10.000
$130=200.000
$131=200.000
$132=200.000

GRBL Docs (github)

What is the software serial baud rate?

Thanks for response! grbl 1.1 runs at 115200 baud so i'm running software tx/rx at the same. I have tried both SoftwareSerial and AltSoftwareSerial with no luck.

Try '1284P based boards instead. Dual hardware serial ports, lots of SRAM to hold big incoming messages if you want to increase the buffer sizes.
http://www.crossroadsfencing.com/BobuinoRev17/

@CrossRoads thanks for reply. So from your opinion does this just look like an issue using software based serial? I was wondering if this was possible electrical interference of a mechanically related issue. I literally removed everything from the board but 5v, GND, Tx, Rx. I can get the messages 90% accurate with some delay in the read/write loop. If I go that route, can you customize the board if need be? Please ping me, I actually touched base with you recently via email.

Here is an example of data from just two serial while loops in the program:
The first time it's correct, next times are not:

<Idle|MPos:0.000,0.000,0.000|FS:0,0>
ok
<Idla|M⸮4⸮0.000,0.000,0.000|FS'b⸮⸮j
o
<Idle|MPos:0.000,0.000,0.000|FS:00>
ok
<I⸮⸮5A⸮⸮⸮0.0⸮b⸮r⸮⸮⸮b⸮r⸮⸮⸮⸮M⸮0,0>
`k
<Idle|MPos:0.000,0.000,0.000|F*'b⸮⸮j
ok
<Id⸮⸮5A⸮⸮⸮0.000,0.000,0.000|FS:0,0>
ok
void loop() {

 byte c;
   while (altSerial.available()) {
    Serial.write(altSerial.read());
  }
   delay(20);
 while (Serial.available()) {
    altSerial.write(Serial.read());
  }
 
}

"So from your opinion does this just look like an issue using software based serial? "

Yes.

" If I go that route, can you customize the board if need be?"
Yes, if a straight '1284P based board won't do wbat you need,

email me, robert@crossroadsfencing,com, I can't access the forum during the day,