Anch'io avevo pensato a un errore nella chiamata...
Ma purtroppo il programma che la chiama è chiuso e compilato. Lo sviluppatore mi ha dato il codice di una dll di esempio (ma comunque incompleta) in pascal per vedere come definire le funzioni.
Il codice in Pascal della funzione è quello che ho copiato prima...
È giusto usare unsigned char per il tipo byte, no?