As far as I could as i could see it when I was testing my bootloader, WRITECODE, stores bytes in tblr registers, and when you fill tblr, it write block at once.
And before writing to block you must erase that block.
So if block size is 128 bytes, WRITECODE takes just few cycles to execute first 127 times, and when it is used 128 time, it takes about 5mS.