8051 - After API call at 0xFFF0, instruction pointer is not returning to my program
The IAP function PGM_MTP is in the boot loader ROM. In normal operation the boot ROM is disabled, so trying to call functions in it will fail. To enable the boot ROM you have to set ENBOOT (bit 5) in register AUXR1(0A2h). After making the IAP call you should clear ENBOOT to disable the ROM again.    

The code might look like this:-

AUXR1  equ   0A2h

 ORL   AUXR1,#20h       
 LCALL PGM_MTP            
 ANL   AUXR1,#NOT 20h