Возвращаясь к топику:
недавно еще один товарищ похоже напоролся ровно на тот же трап:
...
x := OPB.NewUnsignedConst( (LONG(y^.conval^.intval) -apar^.conval^.intval) DIV z^.conval^.intval + 1)
могло возникнуть переполнение в разности (y^.conval^.intval-apar^.conval^.intval), что искажало результат при последующем делении. Попытка перейти к типу большей разрядности при помощи LONG() вызывало ТРАП 0 (Dev)CPC486 компилятора ББ.
...
Интересно, что попытка соединить в одном операторе и разность и деление
L := (LONG(y^.conval^.intval) -apar^.conval^.intval) DIV z^.conval^.intval +1;
вызывает ТРАП 0 (Dev)CPC486 компилятора ББ! Ну и ладно, не хочет вместе, посчитаем по отдельности.