The HCS08 supports vector redirection, but not multiple vector tables (see the quote at the end of my answer). This thread provides an interesting discussion. From what I read, there is no straight-forward way to use multiple vector tables in FLASH on the HCS08. This leaves you with only a few options:
- A RAM vector table
- No interrupts in your bootloader
- Relocate vectors to unprotected flash and have both the boot and app use that table
RAM Vector Table
You could force interrupt vectors to look up their address in RAM. To do this, you would use the primary vector table location. Each vector would be set to a function which jumped to a RAM address. The RAM address would be the location of your interrupt code.
With this strategy, your application and bootloader code could specify different interrupt functions. It could be risky to use RAM for your vectors.
No Interrupts in the Bootloader
Another option would be to implement your bootloader without interrupts. You could then protect the bootloader memory, redirect the vector location and have your application program the vector table.
Relocate vectors to unprotected flash
See AN2140 for a discussion on this technique.
The following comes from the datasheet for the MC9S08EL/SL:
4.5.8 Vector Redirection
Whenever any FLASH is block protected, the reset
and interrupt vectors will be
protected. Vector redirection allows
users to modify interrupt vector
information without unprotecting
bootloader and reset vector space.
Vector redirection is enabled by
programming the FNORED bit in the
NVOPT register located at address
0xFFBF to 0. For redirection to occur,
at least some portion of the FLASH
memory must be block protected by
programming the NVPROT register
located at address 0xFFBD. All
interrupt vectors (memory locations
0xFFC0–0xFFFD) are redirected, though
the reset vector (0xFFFE:0xFFFF) is
not.
For example, if 1024 bytes of
FLASH are protected, the protected
address region is from 0xFC00 through
0xFFFF. The interrupt vectors
(0xFFC0–0xFFFD) are redirected to the
locations 0xFBC0–0xFBFD. If vector
redirection is enabled and an
interrupt occurs, the values in the
locations 0xFBE0:0xFBE1 are used for
the vector instead of the values in
the locations 0xFFE0:0xFFE1. This
allows the user to reprogram the
unprotected portion of the FLASH with
new program code including new
interrupt vector values while leaving
the protected area, which includes the
default vector locations, unchanged.
See also this application note (AN2295) about implementing a serial bootloader for this family of micros.