1. Calculate the maximum amount of mem your interrupt routine could ever possibly need.
2. Allocate that much mem for it at the very start of your program.
3. Problem solved.
p.s. Whether AllocMem() breaks Forbid() or Disable() or whatnot is completely irrelevant because one never knows how long an AllocMem() will take. After some days of running normal software (or just 1 single day of running a bunch of MUI software) I personally guarantee you that AllocMem() will take 3.8 forevers due to excessive memory fragmentation. If just one of your interrupts takes even half of a forever then your buffers will all overflow or underflow and your software will go kaplooie.