Господа, помогите убогому! Требуется разбить целое на байты а потом его обратно склеить. Как разбить, понятно:
## Код:
```
PROCEDURE SPLIT (x : INTEGER; VAR b0, b1, b2, b3 : BYTE);
BEGIN
   b0 := SHORT(SHORT(x MOD 100H));
   b1 := SHORT(SHORT(x DIV 100H));
   b2 := SHORT(SHORT(x DIV 10000H));
   b3 := SHORT(SHORT(x DIV 1000000H));
END SPLIT;
```

А вот со склейкой так просто не получается. Вариант:
## Код:
```
PROCEDURE COMPOSE (b0, b1, b2, b3 : BYTE) : INTEGER;
BEGIN
   RETURN b0 + b1 * 100H + b2 * 10000H + b3 * 1000000H
END COMPOSE;
```
не работает, ибо тип BYTE знаковый, и плюсы местами честно превращаются в минусыКроме модуля SYSTEM или страшного тега [ code ] ничего в голову не приходит, но может есть ещё варианты?

И попутный вопрос: кто-нибудь в компиляторе копался на предмет встроенных процедур? В смысле за процедурами BITS, ORD etc стоит реальный код, или они только для соблюдения строгости?