Procedure to generate code suitable for use with Keil MON51 on the Micropac 535 board: First, Check that the 535 board jumpers are set such that the RAM may be used as read/write/execute (Von Neumann) memory. The RAM and the EPROM must each be of size 32k. The monitor program will occupy the lower 32k of program memory, from addresses 0000h to 7FFFh. The reset vector at 0000h points to the monitor code, while the interrupt vectors are redirects (via LJMP) to another (test program-defined) vector table, to begin at 9000h, with the exception of the serial interrupt vector, which the monitor program requires to function. The 535's RAM is entirely Von Neumann memory, which goes from 8000h through FFFFh in both the code and external data address spaces (external data addresses 0000h-7FFFh do not exist in this configuration.) The data/code addresses from 8000h-8FFFh are reserved for monitor program data. The reset vector for your test program should be relocated to address 9000h, followed by the interrupt vector table, which should use the normal interrupt vector address plus 9000h. This should be followed by the code segment of the test program, and finally by any data memory needed by the test program. The locations of these segments can be found in the “Options” pull-down menu, under “C51 Compiler…” in the “OBJECT” tab, and under “BL51 Code Banking Linker” in the “SIZE/LOCATION” tab. Be sure to note which radix is required for the values, decimal or hexidecimal. The entire relocation process for the user's test program is detailed in Application Note 104 from Keil, "Relocating 8051 Programs." Be sure to add your edited version of the STARTUP.A51 file to your project through MicroVision's "Edit Project" command under the "Project" pull-down menu. Finally, when testing the program on the 535 hardware via Keil's dscope and the mon51 program, the user must manually set the program counter to point to his code (address 9000h) before beginning to debug, and after every hardware reset. Entering the command "$ = 9000h" in the command window will accomplish this. Keep in mind that if your program uses Keil library functions these functions may add initialization code to the beginning of your application. It should also be noted that your test program cannot attempt to re-program the primary serial port or the timer controlling its baud rate. The monitor program initializes this hardware during startup, and requires these settings to remain constant throughout execution for proper function. User initialization of the primary serial port (which will be needed for the test program to run stand-alone) should be commented out before compiling for use with Mon51.