Так, народ, что-то мне с BlackBox "везет" на всякие его особенности.
Вот поймал trap компилятора при попытке собрать простой модуль.
Воспроизводится везде, и в школьной сборке информатики-21 (BB 1.5), и в стоковом BB 1.6, и в красноярской сборке BB.
Исходник модуля и сам трап прикладываю. Также, на всякий случай, вот в интернеточитабельном виде исходник модуля:
MODULE Blur;
IMPORT Kernel, Out:=StdLog;
CONST
width = 640;
height = 480;
N = 13;
frames = 1000;
red = 0;
green = 1;
blue = 2;
TYPE
Frame = ARRAY width*height*(blue+1) OF SHORTCHAR;
PROCEDURE Index(x,y,color : INTEGER) : INTEGER;
BEGIN
RETURN ((x+y*width)*3+color)
END Index;
PROCEDURE Blur(IN in : Frame; OUT out : Frame);
VAR
x,y,c : INTEGER;
BEGIN
FOR y:=1 TO height-2 DO
FOR x:=1 TO width-2 DO
FOR c:=red TO blue DO
out[Index(x,y,c)] := SHORT(CHR( ( ORD(in[Index(x,y-1,c)]) + ORD(in[Index(x,y+1,c)]) +
ORD(in[Index(x-1,y,c)]) + ORD(in[Index(x+1,y,c)]) ) DIV 4 ));
END;
END;
END;
END Blur;
PROCEDURE Do*;
VAR
time : LONGINT;
f, n : INTEGER;
a1, a2 : POINTER TO Frame;
BEGIN
NEW(a1);
NEW(a2);
time := Kernel.Time();
FOR f:=1 TO frames DO
FOR n:=1 TO N DO
Blur(a1,a2);
Blur(a2,a1)
END
END;
Out.Real((Kernel.Time() - time)/1000)
END Do;
BEGIN
END Blur.
PS. Это я приводил к единому виду исходники той blur-задачки для всех языков программирования. Это, собственно наиваная читабельная реализация алгоритма. Очень важно чтобы оно заработало на ББ, иначе в статье ББ придется заменить другой реализацией Оберона, а этого сильно хочется избежать по ряду причин.