Любопытная деталь: компилятор ББ считает число -9223372036854775808 в тексте программы ошибкой, хотя оно входит в диапазон LONGINT согласно Сообщению о языке. Вместо этого можно писать MIN(LONGINT) или -9223372036854775807 - 1.

Связано с тем, что унарный минус расценивается как операция, за которой следует число; а 9223372036854775808 не входит в диапазон LONGINT, и поэтому выдается ошибка number too large.

Поправить несложно:

в DevCPS:
(* global *)
VARunaryMinus*: BOOLEAN;
(* в PROCEDURE Number после строчки *)
ELSIF intval < 9223372036854775808.0E0 - realval THEN numtyp := int64	(* 2^63 *)
(* добавить *)
ELSIF unaryMinus & (intval = 9223372036854775808.0E0 - realval) THEN numtyp := int64
(* и в конце *)
IF unaryMinus THEN intval := -intval; realval := -realval END
END Number;

DevCPP:
(* в PROCEDURE SimpleExpression *)
IF sym = minus THENDevCPS.unaryMinus := TRUE;DevCPS.Get(sym);DevCPS.unaryMinus := FALSE;Term(x);
IF (x.class # Nconst) OR ~(x.typ.form IN {Int8, Int16, Int32, Int64, Real32, Real64}) THEN
DevCPB.MOp(minus, x)
END

Но, может, и не стоит трогать 20-летний код ради такой мелочи.