Во-первых, вы должны выбрать компилятор для использования и изучить его особенности.Программы на C могут быть скомпилированы для «размещенной» среды, которая предполагает стандартную инициализацию, main () в качестве точки входа и стандартной библиотеки, и «автономную» среду, где такие гарантии не предоставляются.Чтобы вызвать C-код, вы должны выполнить соответствующую настройку среды (стек, сегменты данных и т. Д.) В загрузчике.Подробности этого зависят от компилятора.Преобразование объектного кода в форму, подходящую для вашего загрузчика, также может быть проблемой.Для 16-битного кода есть как минимум Turbo C и Watcom C, доступные для бесплатного использования.Watcom более прогрессивен и современен, и теперь он открыт.Обратите внимание, что стандартная библиотека недоступна при такой настройке, поэтому код C должен быть специально написан для вашей среды;это включает в себя такие подводные камни, как, например, умножение 32-битных длинных, обычно реализуемое в библиотеке, несмотря на то, что вы не пишете библиотечный вызов.
[В общем, я запутался с вашим запросом использовать точно C;как только загрузчику вряд ли понадобится скорость выполнения, более уместно использовать что-то более подходящее для такого контекста, как Forth.Есть готовые реализации (см. Загрузчик FreeBSD).]