1. A method of writing data to a non-volatile memory having memory cells arranged in minimum units of erase of a block, a page being a unit of programming of a block, comprising: receiving a request for storage of data at the non-volatile memory, the non-volatile memory comprising a plurality of blocks, where at least one page of one of the plurality of blocks is organized as random access memory (RAM); determining if an address associated with the request relates to the at least one page organized as RAM; if the address relates to the at least one page organized as RAM: retrieving a pointer identifying the location of the page; reading stored data for the page from said non-volatile memory into a page buffer, said page of stored data comprising an allocated data space addressable in an increment of address less than a sector, said allocated data space comprising obsolete data; updating a portion of stored data in said page buffer with said data to form an updated page of data; allocating unprogrammed storage space addressable in a first increment of address in said non-volatile memory sufficient to store said updated page of data; writing said updated page of data to said allocated storage space; and updating said pointer with a location of said allocated storage space.