I'm sorry for not answering for too long. I was waiting for a notification, but the forum doesn't send notifications when some posts are edited.
Let's try something else. Unpack the archive below to the root of an SD card; insert it; flash the RGN; post sd:/Garmin/Updater/0870/update.log here.
[Only registered and activated users can see links. ]
I was thinking about something like this some time ago. For example, we could let the bootloader read the firmware from the SD card instead of the ill region 14.
But I think if one region fails then the others will fail soon, so we have to redirect all reads/writes to the SD card. And this is too complicated for me.
Region 0x66 contains a ZIP file which is (supposedly) unpacked to the root of the internal filesystem. It seems that boot.bin can't flash this region when receiving it through USB. 0x66 should be unpacked from inside GCD only.
I was doing something like you've just described. Many file path are generated like sprintf(path, "%d:/Garmin/%s", drive, "blah/blah.blah"), so it's not enough to replace all occurences of "0:/" to "1:/" in the firmware. So I've tried to accomplish this by hooking the OpenFile function. But it didn't work, most of the files were not read from the SD card.