How to Scroll data on LED matrix 8x8 to other displays or one display?

Hello,

I’m learning on my 4 module of LED matrix 8x8, I did showing a letter and did little of letters scroll but the data crashes on the end of the display.

I want to learn how:

  1. Scroll letters or data without crash.
  2. Scroll of one display.
  3. Scroll of multiple displays.

This is my code:

void SPI_Init(void);
void SPI_TX_s16(uint16_t data);
void SPI_TX_m16(uint16_t data);
void MAX7219_init(void);
void draw(void);
void clr(void);


void setup() {
  SPI_Init();
  MAX7219_init(); 
 }

void loop() {
clr();
_delay_ms(100);
draw();
_delay_ms(200);
}

void SPI_Init(void)
{
  DDRB |= (1<<DDB3)|(1<<DDB5)|(1<<DDB2); // DDB3 MOSI, DDB5 SCrow, DDB2 SS
  SPCR = (1<<SPE)|(1<<MSTR);  // SPI enable, Master Mode
}
void MAX7219_init(void)
{  
  SPI_TX_s16(0x0A00); // intensity
  SPI_TX_s16(0x0900); // decode mode
  SPI_TX_s16(0x0B07); // scan limit
  SPI_TX_s16(0x0C01); // shutdown on
}

void SPI_TX_s16(uint16_t data)		// for single bytes
{
    PORTB &= ~(1<<PB2);
    SPDR = data>>8;
    while(!(SPSR & (1<<SPIF)));
    SPDR = data;
    while(!(SPSR & (1<<SPIF)));  
    PORTB |= (1<<PB2);
}

void SPI_TX_m16(uint16_t data)		// for multiple byte
{
    SPDR = data>>8;
    while(!(SPSR & (1<<SPIF)));
    SPDR = data;
    while(!(SPSR & (1<<SPIF)));  
}




void draw(void)
{
  s=0;
  for (l=0;l<26;l++)            // to print 26 letters
  {        
    for (row=1;row<9;row++)     // for 8 matrix rows
    {
      PORTB &= ~(1<<PB2);
        for (p=0;p<4;p++)       // for 4 matrix devices
        {
          SPI_TX_m16(data = (row<<8) | (Alphabet[s]));
        }PORTB |= (1<<PB2);s++;
    }_delay_ms(500);
  }  
}





void clr(void)
{ 
  for (k=1;k<4;k++)
  {          
    for (i=1;i<10;i++)
      {  
        PORTB &= ~(1<<PB2); 
        SPI_TX_s16(data = i<<8 | (0x00)); 
        PORTB |= (1<<PB2);
      }    
  }
}

Thank you,