Hi,
With the wiring fixed and this code, it works pretty good 
In some letters there are "missing pixels" but not consistent.
There is still the fault in the code where it uses 8 rows, and I have 7
I have tried to change the places where it relates to Row and 8 to 7, but that causes more flickering.
#include <SPI.h>
int x;
int y;
int ssPin = 10; //Arduino pin connected to Latch 12 RCLK of 74HC595
int enablePin = 6; //Arduino pin connected to output enable pin 13 of 74HC595
//=== B I T M A P ===
//Bits in this array represents one LED of the matrix
// 8 is # of rows, 7 is # of LED matrix we have
byte bitmap[8][12]; // Change the 12 to however many matrices you want to use.
int numZones = sizeof(bitmap) / 8;
int maxZoneIndex = numZones-1;
int numCols = numZones * 8;
byte alphabets[][5] = {
{0,0,0,0,0},
{31, 36, 68, 36, 31},
{127, 73, 73, 73, 54},
{62, 65, 65, 65, 34},
{127, 65, 65, 34, 28},
{127, 73, 73, 65, 65},
{127, 72, 72, 72, 64},
{62, 65, 65, 69, 38},
{127, 8, 8, 8, 127},
{0, 65, 127, 65, 0},
{2, 1, 1, 1, 126},
{127, 8, 20, 34, 65},
{127, 1, 1, 1, 1},
{127, 32, 16, 32, 127},
{127, 32, 16, 8, 127},
{62, 65, 65, 65, 62},
{127, 72, 72, 72, 48},
{62, 65, 69, 66, 61},
{127, 72, 76, 74, 49},
{50, 73, 73, 73, 38},
{64, 64, 127, 64, 64},
{126, 1, 1, 1, 126},
{124, 2, 1, 2, 124},
{126, 1, 6, 1, 126},
{99, 20, 8, 20, 99},
{96, 16, 15, 16, 96},
{67, 69, 73, 81, 97},
};
//=== S E T U P ===
void setup() {
pinMode(enablePin, OUTPUT);
pinMode(ssPin, OUTPUT);
SPI.begin();
SPI.beginTransaction(SPISettings(1000000, LSBFIRST, SPI_MODE0));
//-- Clear bitmap --
for (int row = 0; row > 8; row++) {
for (int zone = 0; zone <= maxZoneIndex; zone++) {
bitmap[row][zone] = 0;
}
}
}
//=== F U N C T I O N S ===
// This routine takes whatever we've setup in the bitmap array and display it on the matrix
void RefreshDisplay()
{
for (int row = 0; row < 8; row++) {
//-- Start sending column bytes --
//-- Shift out to each matrix (zone is 8 columns represented by one matrix)
for (int zone = 0; zone <= maxZoneIndex; zone++) {
SPI.transfer (bitmap[row][zone]);
}
digitalWrite(ssPin, LOW); //Hold latchPin LOW for as long as we're transmitting data
int rowbit = 1 << (7-row);
SPI.transfer (rowbit);
//-- Done sending Row bytes, flip latche to eliminate flicker
digitalWrite(ssPin, HIGH);
analogWrite(enablePin,0);
//-- Wait a little bit to let humans see what we've pushed out onto the matrix --
delayMicroseconds(1000);
analogWrite(enablePin,255);
}
}
// Converts row and colum to actual bitmap bit and turn it off/on
void Plot(int col, int row, bool isOn)
{
int zone = col / 8;
int colBitIndex = x % 8;
byte colBit = 1 << colBitIndex;
if (isOn)
bitmap[row][zone] = bitmap[y][zone] | colBit;
else
bitmap[row][zone] = bitmap[y][zone] & (~colBit);
}
// Plot each character of the message one column at a time, updated the display, shift bitmap left.
void AlphabetSoup()
{
char msg[] = " PRINZTRONIX ";
for (int charIndex=0; charIndex < (sizeof(msg)-1); charIndex++)
{
int alphabetIndex = msg[charIndex] - '@';
if (alphabetIndex < 0) alphabetIndex=0;
//-- Draw one character of the message --
for (int col = 0; col < 6; col++)
{
for (int row = 0; row < 8; row++)
{
bool isOn = 0;
if (col<5) isOn = bitRead( alphabets[alphabetIndex][col], 7-row ) == 1;
Plot( numCols-1, row, isOn);
}
//-- The more times you repeat this loop, the slower we would scroll --
for (int refreshCount=0; refreshCount < 10; refreshCount++) //change this value to vary speed
RefreshDisplay();
//-- Shift the bitmap one column to left --
for (int row=0; row<8; row++)
{
for (int zone=0; zone < numZones; zone++)
{
bitmap[row][zone] = bitmap[row][zone] >> 1;
// Roll over lowest bit from the next zone as highest bit of this zone.
if (zone < maxZoneIndex) bitWrite(bitmap[row][zone], 7,
bitRead(bitmap[row][zone+1],0));
}
}
}
}
}
//=== L O O P ===
void loop() {
AlphabetSoup();
}
What about this part:
//=== B I T M A P ===
//Bits in this array represents one LED of the matrix
// 8 is # of rows, 7 is # of LED matrix we have
byte bitmap[7][12]; // Change the 12 to however many matrices you want to use.
int numZones = sizeof(bitmap) / 8;
int maxZoneIndex = numZones-1;
int numCols = numZones * 8;
Does this work?
If I understand it correctly, and there is a good chance I don't 
this will result in this:
7x12/8=10,5 x 8 =84
So 10,5 Zones and 84 Columns
Cheers, Hal