Why would it make any difference whether you write the last 64KB segment? It appears to be padded with 0xFF bytes.
FWIW, I have recently analysed another 192KB ROYL ROM and have determined that there are checksums for each of its code and data modules. AFAICS, the space between 192KB and 256KB is not included in any checksum, but I could be wrong.
The ROM begins with a table of LDSCs ("PM Loader Config String"), each occupying 32 bytes. The last byte of each LDSC is an 8-bit checksum which is calculated by summing the preceding 31 bytes.
Each LDSC contains the starting location and length, in bytes, of its corresponding PMCBlk ("Program Memory Code Block"). There are two length fields -- one is the length excluding the checksum byte, while the second is the total length including the checksum byte. These fields are 4-bytes long, in little endian format.
The 8-bit checksum for each PMCBlk is computed in the same way as for the LDSCs, with the result being placed at the end of the block.
LDSC 00 - 31 bytes + 1-byte checksum at the end
LDSC 01 - 31 bytes + 1-byte checksum at the end
...
LDSC nn - 31 bytes + 1-byte checksum at the end
PMCBlk 00 - variable length block of code + 1-byte checksum at the end
PMCBlk 01 - variable length block of code + 1-byte checksum at the end
...
PMCBlk nn - variable length block of code + 1-byte checksum at the end
ROM MODs - 32-byte zero sum - integrity bytes included in sum
One other test that I (and my colleague) performed was to compare the 192KB ROM contents before and after enabling PUIS (Power Up In Standby). We found that only two bytes, in ROM MOD 0D, were changed. These corresponded to the PUIS flag (changed from 01 to 02), and the MOD's checksum.
References:
http://nazyura.hardw.net/Part02.htmhttp://nazyura.newmail.ru/Check_fl.ziphttp://yura.projektas.lt/files/wd/mhdd/index.html