@jonek
That look like an impresssive project doing with Arduino. My guess will be possibe using the Arduino.
It has 6 x 4-pin stepper motors and presents a TTL (5 volt) interface which used to connect directly to a Commodore computer (but I did make a Sinclair ZX Spectrum interface back then). Now I want to drive it via USB.
I am just curious...Did you use a PIA chip to connect with the Commodore ( assuming 64 ? ) or with the Sinclair ZX ? I wonder what kind ? ( 8000 series or 6800 series ) or others type of PIA.
My question is: how fast can a Arduino Uno change the output pattern?
I did a tread regarding the output speed. I measured it, I improve it using a mix of ATmega328P assembly and Arduino code to get the output as fast that I can. Too bad I can remember where in the forum it is... <-- I can't find it !!!

Edit : I found it... It was in Electronics... Here the link :
http://arduino.cc/forum/index.php/topic,72049.0.htmlHere the code : The code was included in the tread. I got pictures and others codes.
I just can find the tread !!!
What give ???Anyway, I am just trying to help. The code is the latest and the fastest I can get the atmega / arduino output pin ( 12 ) . just put a scope at pin 12 and see for yourself. Place a 10 K resistor between pin 12 and GND.
void setup()
{
pinMode(12, OUTPUT);
__asm__("LDI r16,0x10\n\t"); // set data to send to port B B00010000 = 16 = Ox10
__asm__("LDI r17,0x0\n\t"); // set data to send port B = 0
}
void loop()
{
// The asm OUT instruction requires an ATmega port number for the target.
// From iom328p, we see how it defines Port B in such a way that the
// C compiler can access Port B.
// #define PORTB _SFR_IO8(0x05)
//
// Bottom line: The ATmega328p port number for Arduino Port B is 0x05.
//
//
// So: heres' the asm to affect output bits of Arduino Port B,
// given that Artuino Port B is ATmega328p port 5
__asm__
(
"startLoop:"
" out 0x05,r16\n"
" nop\n"
" out 0x05,r17\n"
" nop\n"
" # Use relative jump to get back to the start of the loop\n"
" # It's a 2-byte operation, whereas jmp takes three bytes\n"
" rjmp startLoop\n"
);
}
It is possible to do this project. You will needs external circuit ( for the motors ) use a serial to parrallel like 74HS595 to save I/O pins, maybe use a secondary microcontroller acting like a slave or multislave...
just brainstorming here...