Board: [DoveNet] Programming Subject: DOS EMM calls in a TSR From: Jcurtis Date: Tue Jun 24, 2025 21:27 By trial and error I discovered EMM calls enable interrupts. This can cause havoc in a TSR where you need interrupts disabled. Finding these bugs is not easy. My TSR enables interrupts part of the time, so I do EMM calls there. Here's an example with comments. void next_irq (void) { int x; next: x = next (); /* service IRQs with */ enable (); /* interrupts enabled */ # ifndef noemm /* EMM call enables interrupts, do */ emm_get_page_map (e1); /* not do it before enable () above */ # endif if (x) { service_com_irqs (x); } else service_ticktock (); # ifndef noemm emm_set_page_map (e1); # endif disable (); if (x) mask_irq (NO, x); if (iq[iz]) goto next; } * SLMR 2.1a * * SLMR 2.1a * --- ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net .