Memory mapping question

Thanks to help I got here, I got a Micro configured as an ISP. I was testing it and noticed what I find odd behavior when programming a target. I started with a target Micro that had a bootloader and Blink running. I used the ISP to program a different Blink-like program, which worked fine. I then burned the bootloader back onto the target. When the bootloader timed out, the target started to run the original Blink program. I would have expected the ISP to have overwritten Blink, but I guess these programs were mapped into different memory spaces. Can someone explain this to me?

Bootloaders have 'blink' built into them. They run it if there's no valid sketch in memory.

Thanks. That was a bit of a puzzler.

Bill gives a good review of Arduino memory here: