Interfacing an Arduino with an LED Marquee

How's it going!

I recently picked up an 80x7 LED marquee and need to pick someone's brain on how these are supposed to work before I get into a project of interfacing an Arduino with it to bypass the existing processor.

The marquee is a ProLite HI-M2014, driven by a Z80 with a 32k ROM and 8k of memory. Unfortunately there is no serial port on this particular sign (which would have made life a lot easer).

Now I have figured out a pinout for the keyboard interface (an 8x2 pin header), it's a simple matrix. There is also a memory uploader port but this would require knowing what the software driving the sign expects as far as a memory dump. The problem is I'd like to use the sign for real time stuff like news feeds/twitter dumps/etc. The plan is to completely bypass the Z80 and all associated parts and drive the LED segments strictly with the Arduino.

So before I delve deeper into this project, I'd like some advice from whoever can give it on how exactly these types of signs are supposed to work. I have a vague idea, but would like something concrete to go on.

I've uploaded a couple pictures to my flickr account and tagged them up with part numbers of various ICs on the board in case that helps. http://www.flickr.com/photos/7317385@N06/sets/72157622109202250/.

Also here's a list of the ICs on the board:
74HC00D: Quad 2-input NAND gate
CD74HC165E: 8-bit PISO Shift Register
MJE2955T: Power Transistor
SN74LS74AN: Dual D-Type Flip-Flop w/ preset and clear
SN74LS164N: 8-bit SIPO Shift Register
SN74LS393N: Dual 4-bit Decade/Binary Counter
ULN2003A: 7 Channel Darlington Array

Any help or tips would be greatly appreciated!

Typically, the controller will pump data into the shift registers for each row, activate the driver for that row, wait a moment, then turn off that row and load data for the second row into the shift registers, activate that row, etc. You'll have to do more investigation on your own as to how you can actually access the shift registers (whether they're in one chain, or split into groups for faster loading, or multiplexed somehow). Once you figure that out, you should be able to develop software pretty easily to carry out those functions.