Leider kommt die Alertbox auch bei BIOS-Aufrufen.
Ich habe es mit Getbpb() und Rwabs() probiert.
Stattdessen muss der Critical Error Handler auf eine eigene Routine, die nichts tut, verbogen werden:
static void install_handlers();
static void critical_error_handler();
static void process_termination();
static void (*orig_critical_error_handler)() = NULL;
static void (*orig_process_termination)();
int main()
{
install_handlers();
...
}
void
install_handlers()
{
if (orig_critical_error_handler == NULL) {
orig_process_termination = Setexc((long)etv_term / 4, process_termination);
orig_critical_error_handler = Setexc((long)etv_critic / 4, critical_error_handler);
}
}
void
critical_error_handler()
{
}
void
process_termination()
{
if (orig_critical_error_handler != NULL) {
(void)Setexc((long)etv_critic / 4, orig_critical_error_handler);
(void)Setexc((long)etv_term / 4, orig_process_termination);
orig_critical_error_handler = NULL;
orig_process_termination();
}
}