The contract is similar to read, return the byte as an unsigned int, -1 if there are no more bytes.
the supplied byte or -1 if there are no more bytes
if supplying fails