
   // PART A -- erase the FLASH page at 0x1000
   
   // initialize write/erase pointer
   pwrite = (unsigned char xdata *) 0x1000;   

   EA_save = EA;                       // save interrupt status   
   EA = 0;                             // disable interrupts (precautionary)
   
   FLSCL |= 0x01;                      // enable FLASH writes/erases from
                                       // user software
   
   PSCTL = 0x03;                       // MOVX writes erase FLASH page

   *pwrite = 0;                        // initiate page erase

   PSCTL = 0;                          // MOVX writes target XRAM
   
   FLSCL &= ~0x01;                     // disable FLASH writes/erases from
                                       // user software  
   
   EA = EA_save;                       // re-enable interrupts
   
   // PART B -- copy test string to FLASH memory at address 0x1000
   
   // initialize FLASH read pointer
   pread = (unsigned char code *) test_string;

   EA_save = EA;                       // save interrupt status
   EA = 0;                             // disable interrupts (precautionary)
   pwrite = 0x1000;                    // initialize FLASH write pointer
   
   FLSCL |= 0x01;                      // enable FLASH writes/erases from
                                       // user software
      
   PSCTL = 0x01;                       // MOVX writes target FLASH memory

   while (*pread != '\0') {            // copy until NULL is detected

      *pwrite = *pread;                // copy byte

      pread++;                         // advance pointers
      pwrite++;
   }

   *pwrite = '\0';

   PSCTL = 0x00;                       // MOVX writes target XRAM
   
   FLSCL &= ~0x01;                     // disable FLASH writes/erases from
                                       // user software   

   EA = EA_save;                       // re-enable interrupts
