I have a 1541 drive and I want to make it spin but I don’t have a Commodore computer. I don’t need to read data, I would just like the drive to spin. Can I manually tell it to spin using a raspberry pi or something?

  • There are various ways for modern-ish computers to emulate the IEC bus, google for "X1541 cable". – dirkt Jun 11 '18 at 4:22

One way to do this is to program a Raspberry Pi to simulate an IEC bus controller, then drive the 1541 that way, via the 6-pin IEC port on the drive. This is very similar to using a PC parallel port with a specially wired parallel-to-IEC cable, just using a Raspberry Pi instead of a PC, and using some general purpose I/O pins rather than the parallel port. Once that's done you can save files, load files, format disks, or whatever, just by sending the appropriate commands down the IEC bus.

If you're willing to open up the drive and tinker with the internals you could probably drive the 'motor on' line directly.

  • 2
    The raspbiec project on GitHub looks promising. – snips-n-snails Jun 10 '18 at 22:01
  • I wondered whether there's actually a timeout in the C1541 for IEC communications. If not then it feels like you could just wire up a couple of switches and tap out a few commands for yourself, given that the data clock is explicit? – Tommy Jun 10 '18 at 22:06
  • What would I have to do to "drive the 'motor on' line directly"? Thanks. – Dylan Murphy Jun 11 '18 at 15:14
  • 1
    Another promising project is Pi1541 at cbm-pi1541.firebaseapp.com I can't wait to put this together and give it a try. Source code is available at: github.com/pi1541/Pi1541 – Geo... Jun 11 '18 at 19:44

The procedure to enable the spindle motor of a disassembled 1541 drive is given in the Service Manual for the drive. This is the procedure you would use to calibrate the motor speed.

_MTR output from the PLA is active "low". This signal is passed, through the current driver UD2, to the motor control PCB. When _MTR is "low," Q1 is biased off, and Q2, Q3, and Q4 are biased on, allowing current flow through the spindle motor coil. Attached to the shaft of the spindle motor is an inductive tachometer that generates low level AC voltages, as the motor spins. The output of the tachometer is rectified by CR1-CR4. IC 1 monitors the output of the rectifier and adjusts the bias to Q2, which changes the bias on Q3 and Q4 to regulate motor current for a constant velocity. VR1 is a manual speed adjustment. The speed can be adjusted by watching the 60Hz strobe as the adjustment is made or loading the system test from the diagnostic disc. The Newtronics Motor Speed PCB is electronically the same as the ALPS Motor Speed PCB, but some of the discrete components have been integrated.

And here is the link to the 1541 Service Manual. Just search the document for "_MTR".

  • Perhaps I'm missing something, but all I get out of this is that if I adjust VR1, I adjust the speed of the disk drive motor. I guess, that if _MTR is "low", the drive will spin? But how does one manually drive _MTR low? – Will Hartung Jun 11 '18 at 21:20

Since the main drive runs for a short moment on reset (POST), the easiest method to keep it spinning is to pull down /RESET on the serial port (pin 6, middle to pin 2 (GND), at 4 o'clock position).

You can simply use a serial-port reset button intended for the C64.

Your Answer

