Можно.
Кроме ORD и BITS надо использовать сдвиг ASH и MOD.

P.S. Лучше ASH, SHORT и LONG.
Вот, примерно, что получилось.
## Код:
```
PROCEDURE Or64(a, b: LONGINT) : LONGINT;
   BEGIN
      RETURN LONG(ORD(BITS(SHORT(a)) + BITS(SHORT(b))))
         + ASH(LONG(ORD(BITS(SHORT(ASH(a,-32))) + BITS(SHORT(ASH(b,-32))))), 32)
   END Or64;
```

P.P.S. Здесь я допустил характерную ошибку с размножением знака.
Привожу исправленный вариант.
## Код:
```
PROCEDURE Or64(a, b: LONGINT) : LONGINT;
   BEGIN
      RETURN ORD(BITS(SHORT(a)) + BITS(SHORT(b))) MOD 100000000L
         + ASH(LONG(ORD(BITS(SHORT(ASH(a,-32))) + BITS(SHORT(ASH(b,-32))))), 32)
   END Or64;
```
