With regard to cooperating with extant system firmware, this is a problem that
NetBSD has on almost every platform it runs on (and it runs on many). You can
find many examples of how to cooperate or work-around firmware bootloaders in
our BSD-licensed codebase:
http://www.netbsd.org/
Further, we've got a standard secondary booter framework, though we retired
a.out quite a few releases ago. See src/sys/arch/*/stand (for "stand-alone")
in our source repository. Or grab the source tarballs as you see fit.
Some of this is deja vu for me: I was a co-founder of the "Undergraduate
Computing Facility" (UCF) at UCB in 1982, and helped set up the Z8002 based
Onyx system in B50 Evans Hall that was our first and for a long time, only,
computer. The undergrads who used that system to learn Unix ported many a BSD
utility to that system (at least the ones that weren't too RAM-hungry),
starting with BerkNet so we could move files around easily & have E-mail.
good luck,
Erik <fair(a)netbsd.org>