You need up to 12kByte program memory ?
You need all 32 IO's ?
You want not pay a lot of money for an emulator ?
Then use the AT98S53 expanded with an in system programmer.
The programmer is build with an AT89C2051.
The programmer looks fully dead, while the AT89S53 is in normal operation. It is only listen on the RXD input. And only if the magic word was recognized, it wakes up and get the control.
The programmer can easy build as an adapter to replace a normal 51 device in every design.
The programmer was build as an adaptor.
If the UART of the target was connected, place the 2 jumper in the sheet to use it for programming too.
In other case connect a cable to J1. The 2 transistors and resistors to level converting can easy placed in the D-SUB-9 connector on the other end (see at the Flash Micro Programmer).
If you need opto isolation you can use slow speed opto couplers and can reduce the baud rate to 4800baud, if you connect P3.7 (pin11) to GND.
The definition file was made as a batch file.