We have modified the monitor initialization code so that it runs at 115200 baud from an external uart and that works well. This is necessary for the monitor to work correctly. Our hardware platform is 'von-neumanized' so that code and xdata space overlap. Before I got very far I solved my problem and I never finished the reverse engineering project.
A couple of years ago I was having trouble getting code banking to work with the monitor, and since I wasn't getting very good support from Keil, I started to disassemble the monitor to figure out what was going wrong. The Mon-51 code comes as a library from Keil, so it is not available. I have found the monitor to be generally solid and with enough functionality for our needs. In addition we use the RTXtiny task switcher and code banking.
I have been using Mon51 with the Cypress FX2 for going on 10 years with very good success.