You can see my incorrect thinking in my post: "...starting address of the firmware." My S record file starts its firmware bytes at 0x8000 (vector table, constants, etc.), but the actual beginning of the executable part of the program (the reset vector) IS correctly defined by the S9 record/line. Now it makes sense. Thank you for helping me think through it, Erich.