Well, thank you for your time nonetheless! And I agree, as you can see below...
I think I found the problem

At least I found another problem

I was off by one page when calculating the CRC, I was calculating the CRC on the wrong page, not on the page I was sending...
I have not proven that it now works as there may still be yet other issues but I am cautiously hopeful.
I did make a few program structure changes in the meantime in an attempt at making it easier to debug so it may be tomorrow before I get it back together and I can prove it but that would definitely be a problem...
I have not done any large scale porting of C code to B4J, but I have translated a number of functions, not unlike what I am doing now because a lot of my B4A/B4J projects end up talking to microcontrollers programmed in C, so a number of data interface routines have versions in C and congruent versions in B4J.
And it's not been smooth.
Pointers are like Vinales at the last Moto-GP race, jumping off a perfectly straight up race bike at 140 mph because he wanted to, not because he fell...