There are many people here complaining about Chameleon working fine from USB drive, but giving them infamous "boot1: error" when trying to install it to hard drive. This error (in my case at least) is caused by improper handling of some BIOSes of segment:offset passed to them by boot1h.
First, kudos to Zef, who managed to squeeze full HFS+ read-only driver into 512 bytes (or so - second part of boot1h). It is amazing achievement - it parses all variants of file location, and judging by the code should even work in highly fragmented cases, when overflow extents are necessary, but it complicated my debugging immensely. There is simply almost no place, you should move code around to be able to squeeze some debug output.
Finally, I found that some BIOSes does not like when offset passed is negative, that is have highest bit set. This is incorrect, because address is formed by interpreting offset as unsigned integer, but so it was programmed by people who can not read well. The consequences are that such BIOS does not allow to load second stage boot loader (containing EFI emulation) if it's larger than 32K.
The phenomenon of successful booting from USB can be explained as well: this part of BIOS is written much later, by other people, who interpreted the architecture by the book, not by heart ;-)
Anyway, the recipe is simple - instead of splitting linear address by 16:16 bits, split it 20:12, because higher 12 bits of linear space are unnecessary anyway it does not affect actual result.
For you it boils down to small editing of boot1.s of Chameleon 2.0 RC3 - replacing lines 564-8:
push dx
xor dx, dx
shr edx, 4
mov es, dx
pop bx
with the code (please, retain the comment and the original code, just comment it out):
; Some BIOSes do not like offset to be negative while reading
; from hard drives. This usually leads to "boot1: error" when trying
; to boot from hard drive, while booting normally from USB flash.
; The routines, responsible for this are apparently different.
; Thus we split linear address slightly differently for these
; capricious BIOSes to make sure offset is always positive.
mov bx, dx
and bx, 0x0fff
shr edx, 4
xor dl, dl
mov es, dx
Then recompile it:
nasm boot1.s -o boot1h
and place it into its usual first 2 sectors of your HFS+ boot partition (as described in Chameleon's README).
That's it. Happy booting!