code: def program_page(self, address, bytes):
          
          assert self._active_operation == self.Operation.PROGRAM
  
          # prevent security settings from locking the device
          bytes = self.override_security_bits(address, bytes)
  
          # first transfer in RAM
          self.target.write_memory_block8(self.begin_data, bytes)
  
          # update core register to execute the program_page subroutine
          result = self._call_function_and_wait(self.flash_algo['pc_program_page'], address, len(bytes), self.begin_data)
  
          # check the return code
          if result != 0:
              raise FlashProgramFailure('program_page(0x%x) error: %i' % (address, result), address, result)
docs: !
          @brief Flash one or more pages.
          
          @exception FlashProgramFailure