Вычисления с малыми целыми неявно приводятся к типу INTEGER.
При этом неявное приведение от большего типа к меньшему при присваивании не производится.
Необходимо явно производить укорачивание.
## Код:
```
a := SHORT(SHORT(a + 1))
```

Ну и проверять на переполнение нужно
## Код:
```
IF a <= MIN(BYTE) - 1 THEN
  a := SHORT(SHORT(a + 1))
ELSE
  (*overflow*)
END
```

Также, весьма вероятно, что и не нужно использовать BYTE в конкретном случае.