As I understand you:
(a) Your Epson 5700i laser printer used to work OK when output (including embedded data and (perhaps) control sequences) generated by a dBase 5.7 application under Windows 98/Me was sent to it.
(b) The same Epson 5700i laser printer no longer prints as expected when output (including the same embedded data and control sequences) generated by the same dBase 5.7 application, but now under Windows XP, is sent to it.
The difference between the two situations is the operating system (including perhaps the spooler and printer drivers), which is possibly intercepting and manipulating your original data.
I can't see that 're-programming the firmware' of the printer (even if that were possible without huge expense) would be likely to make the slightest difference.
As I know nothing about dBase, I can't advise further on that.
But just what were you trying to do with these CHR() statements? Just print different characters? Or influence font selection, page layout, etc.?
If you were just trying to print different characters, then it could just be that the coded character set which you are assuming is not the same as the coded character set in use now. If you give some more details of which CHR() statements you use, and what the required, and actual, results are, I may be able to advise on this.
It may be possible that all you need to do is change the power-on default symbol set on the printer; I don't know Epson devices, so I don't know if you can do this via a front panel menu/display, or what.