Not a surprise then that the 87C51 runs at 12Mhz .
With my Arduino Uno running at 16MHz, I can make it work (either with the SoftwareSerial or the hardware serial), but there are always glitches and decoding errors.
I've tried to tune "by hand" the timings using a modified version of the SoftwareSerial library, but it's not easy since at this communication speed, every "debug" statement added (eg. pulse a pin) changes substentially the timings.
I've ordered a NUCLEO F031K6 to see if I get better results (since it runs at 48MHz, ie. 256x187500, the baud rate).
I've updated a bit my blog post on the reverse engineering of the protocol since I have identified a few indicator flags, like VIEW, MON, 4W.
David