советую посмотреть книжку Джордайна (вроде правильно написал) "Программирование под IBM PC / XT / PCjr" (здесь тоже могу ошибаться, давно это было)
Есть некоторая разница, пишешь ли ты свою программу, которую не должны прервать через Ctrl-C (тогда просто не вызываешь чувствительных к этому функций), или имеешь некоторую программу, чужую, останавливающуюся по контрол-ц, которую не должны прервать этой комбинацией. В первом случае масса решений (прямой вывод в видеопамять и прямое чтение с портов клавиатуры, неиспользование int 21h, перехват прерываний - это не будет резидент, это будет часть инициализации твоей программы). Во втором либо патч, либо резидент