The PCICARD_SET_REGISTER() sub is computing a wrong value (-2147471359) while the working C code is computing -2147201279. The 'int' must be wrong. Never mind, for my purpose it's better to hardcode the number anyway.
But in case anybody would like to answer the bonus question: What is the corresponding third argument to u8 in C?