Saturday, November 8, 2014

Parallel port inclinations.

Shame that computer makers have pretty much eliminated the parallel port. You can use the usb parallel cables or if you can find them pci cards are available on a declining basis. The usb parallel cables are not completely compatible with the traditional parallel port.  This a shame because so many options are available for the parallel port. Everything from the old Covox fake sound card interface, digital interfacing including I2C, and even doing CNC machining.  So many options taken away from users.




Using the parallel port is as easy as making a cable. The centronics parallel interface has the available thirty-six pins. Coming off the computer the computer has only twenty-five pins. If you really look at the parallel port only eighteen pins are only what is used. With two ten pin terminal bars, you can access the eighteen usefull pins from the parallel port. You can control stepper motors, led lights, and a host of other pieces of equipment. One of the reasons like to keep an old machine. Frys did have a sale of pci parallel port cards for five dollars. After an article was published how useful the cards are, the price went back up.


Finished adapter cable for use with the parallel port or a micro-controller such as the Arduino to do the floppy music application.



One of the most popular thing to do now is to take old floppy drives and turn them into musical instruments. Now though most of the applications are done with the Arduino and other micro-controllers. Earlier we hooked the parallel port to a three and one half inch drive (http://computoman.blogspot.com/2014/09/parallel-port-floppy-control.html). Now we are going to use the the same idea for the 5 and one forth inch drive. Made this image to easily pick out the lines needed for the interface.





Fortunately, both drives have the same connections that we need. The difference is that The larger drive has has a thirty-four pin wide cable instead of a seventeen pin two layer cable. Had fun looking though a junk bin to find an old floppy cable.  In finding a cable, we cut off the farthest end so we could use the part of the cable that has a twist in the cable. Allegedly IBM's idea so you did not have to use the jumpers on the drives to decide which was the first and the second drive (i,e, known as A: and B:).  I untwisted the cable to use it.

 
Like the smaller drive connections you will short together lines eleven and twelve. Then you will take lines seventeen and nineteen and short those two line together and connect them to pin eighteen of the parallel port connector.  Lines eighteen and twenty go to separate pins using two of the two through nine pins on the parallel port.  Pins two though nine are used for data control. Which pins you use will determine the programming of the parallel port.

Port 888 can be used to send data to the parallel port. Examples of code can be found at: http://computoman.blogspot.com/2014/09/kitt-code-released.html.

  • Direction pin: use on for forward and off for backward.
  • Stepping pin: An on followed by an off will step the drive.
Floppy drives (as well as older hard drives) used to use these big clunky stepper motors to move the head from one track to the next. Stepper motors move in steps, going ka-chunk ka-chunk at each step, which sounds more like a brrrzzzzzzttttttt if it goes fast enough. By controlling the track to track seeks you can generate specific tones.

Per George Whiteside:
Under the hood of a floppy drive, a magnetizable disk rotates at a fixed speed while a read/write head travels back and forth along its radius. The read/write head is actuated by a stepper motor, which is a special type of electric motor that rotates in discrete steps. It's the rhythmically pulsed movements of the transmission system between the read/write head and stepper motor that cause the delicious buzz and grind you know and love.
Beyond that, floppy drives aren't terribly sophisticated devices. They need to be instructed when to spin the disk, how far to move the data head, when to read or write, and you have to keep track of all this. There is no data formatting done for you, and you literally have to lay it down bit-by-bit. Obviously this is annoying and potentially error-prone for its intended purpose, but great for screwing around decades later after the format is long obsolete. So I like to pretend that the original architects of the technology and the pushers who kept it around so long sort of had me in mind.
Since we're lacking a hardware floating point unit, the 128 MIDI note frequency reference values were precomputed and stored as (100,000 ÷ frequency). In other words, the period (T) expressed as tens of microseconds, rounded to the nearest whole integer.
I generated the values with a quick Perl script:

#!/usr/local/bin/perl

foreach (@values = 0..127) {
    $_ = 440 * (2 ** (($_ - 69) / 12));     # en.wikipedia.org/wiki/MIDI_Tuning_Standard
    $_ = 100000 / $_;                       # multiply period by 10^5
    $_ = int($_ + 0.5);                     # round to nearest integer
}

print join(", ", @values), "\n";
 Have fun. 

No comments:

Post a Comment