The bad news is that currently, the GNU ld produces only executables with 256-byte header. There is no way to put your code at offset 28.
I think this is a problem actually, because it's not possible to build, say, valid SLB binaries (freemint loads them correctly - which it shouldn't - but MagiC and BetaDOS doesn't).