You may need to put the INPUT$(1) in a loop so that it spend some time checking the incoming data. INPUT$(1) does not block, meaning it is returned immediately when there is no complete string received yet and your program run much faster than the serial data can come in.
Typically you can create a custom function as follow:
' This function read a CR-terminated string received from COMM1
' and' the returned string is stored in A$.
'================================
FOR I = 1 to 10000
A$ = INPUT$(1)
IF LEN(A$) <> 0 RETURN: ENDIF
NEXT
Lets name this function RdComm1.
In your actual program, you will "CALL RdComm1" and then check for A$,
IF LEN(A$) B$ = A$: ENDIF ' store the first line in B$
CALL RdComm1
IF LEN(A$) C$ = A$: ENDIF ' store the second line in C$