1. добавить новый пункт меню с заданными атрибутами, в т.ч. и заданием special-обработчиков для menuitem'а
2. найти свободное место в original.tmp
3. записать туда код своего обработчика(-ов)
4. для этого пункта сделать релокацию страницы menuitem'ов в свободное место (актуально для special'ов и меню в original.tmp).
5. автоматом изменять/добавлять строки в _xx_code.bin
6. соответственно настроить все указатели на special'ы и обработчики
Минус в совместимость. Не во всех BIOS есть свободное место, а где есть - не всегда можно автоматизировать его поиск для корректного использования. Так работал патчер самых первых версий.
Выход - использовать модульность и учитывать "динамичность" (не пытаясь рассчитывать на "статичное" свободное место в E000/F000).
C радостью предоставлю исходники биоспатчера для реализации подобного (вряд ли особо помогут-понадобятся), равно как и ромпатчера (с реализации виндовой оболочки и не только для аварда) - в нём была заложена как раз реализация всего вышеописанного в том числе.
Немного пока неконструктивной критики.