It's a long post so I'll just answer your first question, I can only think of one reason why IOS_ReloadIOS() would only accept a value as you specified and thats because it only passes a single byte which has a range from 0 - 255, I may be wrong but thats my best guess.