for the Alphas long ago I modified flash_rom as follows:
flash_rom e <start block #> <length in blocks>
Erase the blocks
flash_rom r <start block #> <length in blocks>
read the blocks
flash_rom p <file name> <start block #>
program with file name starting at start block #. Program up to the limit of the file size or the flash size, whichever is small. This was for partial programming.
flash_rom s <start block #> <lenght in blocks>
program using stdin as the data, starting at start block # and for length blocks OR eof on stdin, whichever was smaller.
This was pretty handy for the DS10, which had 2 MB of flash in 64KB blocks, and had areas of flash we could not rewrite.
maybe we need this for the general case?
ron