The first thing you need to figure out from the Microchip specs is the flash page size and row size. Generally you'll find
these in the synopsis overview document for the chip. In the case of a PIC32MX170F256D chip - the
page size is 1024 bytes (the row size is 128 bytes). What this means (and expressing this as 32 bit words instead of bytes) is
that each page of flash ram is sized as 256 words and organised as 8 rows of 32 words. The page size is significant because it is
the smallest size of program memory that can be erased as one complete block. If a flash ram location contains the value 0, then
you'll always be able to write a 1 to that location... however if it contains a 1 you generally won't be able to write a zero without
first erasing the flash ram. Given the smallest block of flash ram that you can erase is a page you can probably see the significance
of knowing what the page size actually is.