1098 error code means "A user-supplied error string was displayed".
The FLL may not be "completely satisfied" with input parameters.
When running each FoxPro version (7 and 8), check what exactly is stored in tcPrnName after GETPRINTER() returns. Make sure that there is no difference.
In version 8 try the following:
(1) change from
STORE AOpenDC(tcPrnName,tcOrient,tnPaperSiz) TO nHandle
to
nHandle = AOpenDC(tcPrnName,tcOrient,tnPaperSiz)
Sounds silly, but sometimes you never know what's going to help :)
(2) before calling AOpenDC function insert new line:
tcPrnName = tcPrnName + Chr(0)
if this doesn't make your life better, change the line to:
tcPrnName = StrConv(tcPrnName + Chr(0), 5)