Jim, sorry for the late reply. I noticed that you also use the Parallax assembler. First note that it has been updated as CVASM and is available as part of the commercial TDE package from Tech Tools. The assembler is free and now includes support for the 16C76/77 and a few other enhancements. You can assemble your Parallax code `as-is'. To update to CVASM, download the TDE demo from: http://www.tech-tools.com Back to interrupts and 16C73/74/76/77 devices, I normally use the example from the 16C7x data book. Obviously you will want to modify it to suit your application. The following is a `Parallax-friendly' ISR `wrapper' in mostly Microchip syntax: ; Bank 0 Registers ORG 20h W_copy DS 1 ; Copy of W Reg for Interrupt Handler S_copy DS 1 ; Copy of STATUS Reg for Interrupt Handler PCHcopy DS 1 ; Copy of PCLATH Reg for Interrupt Handler FSRcopy DS 1 ; Copy of FSR for Interrupt Handler ; Clone W_copy as the first byte in each bank: ORG 20h ; Bank 1, etc... W_copy1 DS 1 The last line assumes SPASM v4.7 or earlier. With CVASM, you can use: ORG 0A0h ; Bank 1, etc... ; Interrupt Handler ORG 4 MOVWF W_copy ; Copy W to temp SWAPF STATUS,W ; Swap STATUS to be saved in W CLRF STATUS ; Switch to Bank 0 MOVWF S_copy ; Copy STATUS to temp MOVF PCLATH,W ; Copy PCLATH to temp MOVWF PCHcopy CLRF PCLATH ; Switch to Page 0 BCF STATUS,7 ; Point IRP to Bank 0 MOVF FSR,W ; Copy FSR to temp MOVWF FSRcopy [Your ISR...] MOVF FSRcopy,W ; Restore FSR MOVWF FSR MOVF PCHcopy,W ; Restore PCLATH MOVWF PCLATH SWAPF S_copy,W ; Restore STATUS MOVWF STATUS SWAPF W_copy,F ; Restore W SWAPF W_copy,W RETI Mike Keitz pointed out other `gotchas' and suggestions: >* Store PCLATH (in page 0) and reset it to 0 before goto, call, etc. The > conventional approach needs 5 instructions and 1 byte RAM. >* Don't let an interrupt occur while PCLATH is out of page 0. >* Don't use any gotos, calls, or PCL modifies in the ISR. >* Put identical copies of all ISR routines that are the target of goto, > call in all code pages. Seems like the best way to do this would be to > write the ISR as a macro and place it at 0x004, 0x804, etc. Uses lots of > code space but no time or RAM. - Tom At 02:14 PM 5/19/98 -0700, Jim/jhobbs wrote: >Here is something I have been doing with the 73. > >Given that an interupt can occur at any given time, and code execution could >be taking place on any page and working with any bank. >What does this mean? [snip] > >Take care -jim