Thanks Richard,
What device did you run this on?
After being unseccessfull in integrating your version into my code I tried to get your code (I removed some oscillator specific stuff to match my device) to compile for the 57Q43 but it won't.
It can't fit bcnt/dcnt into bank 0 so I tried various banks. Bank 5 works but I still get [ASM WARNING: ASM-SCROLL.ASM (411) : Invalid RAM location specified]

Line 411 in the .asm listing is banksel 0 in the NBNC routine.

I know it says warning and not error but the description sounds bad enough :-)

See, this is what I mean....

For reference, here's what I'm trying to compile for the 57Q43:
Code:
DEFINE OSC 64
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 7
DEFINE DEBUG_BAUD 9600
DEFINE DEBUG_MODE 0

LATB.7=1

bcnt       VAR BYTE   bank0
dcnt       VAR BYTE   bank0
iteration  VAR word 

ANSELB=0
ANSELC=0
ANSELA=0 
dspbuff var byte[380]
clear
trisc = %01111111 
TRISB = %01111111
TRISA = %11111111
pause 1000
debug 13,10,"ready",13,10
 LATc.7=0
 ;38x8 bits wide 10 bits high
 dspbuff[379]=$c0
 dspbuff[37]=$c0


main:
LATc.7=1; trigger oscilloscope
gosub rotate_r    
LATc.7=0
debug 13,10,dec iteration
debug 13,10,bin8 dspbuff[379]," " ,bin8 dspbuff[378]," " ,bin8 dspbuff[343] ," ",bin8 dspbuff[342] 
debug 13,10,bin8 dspbuff[37] ," " ,bin8 dspbuff[36] ," " ,bin8 dspbuff[1]   ," ",bin8 dspbuff[0] 
pause 200
iteration=iteration+1    
goto main    
    
    
rotate_r:  ' pic18    100uS
asm
    banksel _bcnt    ;ROW
    movlw   10       ;10 rows  
    movwf   _bcnt
    movlw   high (_dspbuff)
    movwf   FSR0H    
    movlw   low  (_dspbuff)
    movwf   FSR0L
    movlw   123        ;BUFFER SIZE low byte  (380-1) 36 displays + 2 outside of display * 10-1
    ADDWF   FSR0L 
    movlw   1        ;BUFFER SIZE high byte  (380)
    ADDWFC   FSR0H
    MOVLW 38     ;36 displays + 2 outside of display 
NROW  
    movwf   _dcnt
    bcf    STATUS, C
Ncol
    rrcf   POSTDEC0 ,f     ;PER COLUMN
    DECFSZ  _dcnt ,F
    BRA    Ncol
    BNC    NBNC
    bsf    PLUSW0,7     ;max displays would be 127 to use plusw
NBNC 
    DECFSZ  _bcnt ,F
    BRA    NROW
    banksel 0
    return
endasm