I took another look at the 'xcall' and 'xgoto' macros I have been using and made some modifications that make them a little easier to use. Keep in mind that I haven't added in the 8K rom part support yet. xcall MACRO routine ;set ROM page bit if ((routine) & 0x800) bsf PCLATH,3 else bcf PCLATH,3 endif if ((routine) & 0x800)==($ & 0x800) messg Should use 'call' instead of 'xcall' for routine endif errorlevel -306 call routine errorlevel +306 if ($ & 0x800) bsf PCLATH,3 else bcf PCLATH,3 endif endm xgoto MACRO routine ;flip ROM page bit if ((routine) & 0x800) bsf PCLATH,3 else bcf PCLATH,3 endif if ((routine) & 0x800)==($ & 0x800) messg Should use 'goto' instead of 'xgoto' for routine endif errorlevel -306 goto routine errorlevel +306 endm These macros are far from optimal. You still have to check the error log to see where to put 'x' in front of 'call' and 'goto' and they can't be used as part of a conditional test. They seem to work OK otherwise. Hope someone else finds them useful. Dwayne Reid Trinity Electronics Systems Ltd Edmonton, Alberta, CANADA (403) 489-3199 voice (403) 487-6397 fax