> Andy, the way the Parallax assembler handles this is with an LCALL/LSET > pair of instructions. LCALL generates 0-2 BCF/BSF instructions followed by a > CALL. LSET then generates 0-2 BCF/BSF instructions to restore PCLATH. If you > wanted to, you could use LCALL/LSET everywhere. If you call a routine in the > same code page then: > > LCALL addr > LSET $ > > becomes: > > CALL addr Yes, that does look more useful than MPASM's LCALL which was what I was describing. The last 16c73 application I wrote ended up about 3 1/2 K and I was using MPASM. I started off using LCALLs for calls across code pages, but I found out that I was still having to handle about half the maintenance of PCLATH myself (restoring PCLATH after the return of an LCALL). I also found that with a little care and thought I could manage the maintenance of PCLATH myself with better results than if I just used LCALLs. - Andy. ---------------------------------------------------------- Andrew David, Software Manager, Ultronics Ltd, Cheltenham. akdavid@Ultronics.co.uk http:\\www.ultronics.com ----------------------------------------------------------