Giving Your Ancient Robot Arm A Storage Upgrade
I’ve been hacking on a Giant Robot Arm at a great hackerspace called sudoroom. I’m doing so under the expert tutelage of an amazing genius or two.
The Enemy
Below you will see the YASNAC FC1 pictured. It is an incredibly slow of speed, minuscule of capacity, short of reliability, and large of footprint external floppy drive. It connects to the various robot brain parts by a standard RS-232 serial connection. That whole giant device is just the floppy drive.
The Solution
We simply want to cut it out of the picture by writing some software that will pretend to be a floppy drive. This is not an original idea:
- Some guy’s similar software from a decade ago
- A hardware device that does the same job
- A universal software product that also works with the YASNAC system
- YASNAC’s own software replacement for the FC1
Our Implementation(s)
My implementation of the virtual FC1 is heavily modified fork of Jake’s’s, which is a fork of Brendan’s We all use Python’s famous serial communication library, PySerial, because it is awesome.
I decided to make a separate module to handle the encoding and decoding of the YASNAC packets. In my version, all files in the current working directory that end with .JBI
I also added some features:
Automatic job name modification: Both the filename of a job and a string inside the job file determine the name. The filename controls the name used on the floppy. The job name determines the name used in the memory of the robot. They can both collide. You can’t just duplicate a file, say making a copy of
JOB1.JBI
calledJOB2.JBI
and load it into the robot. I added automatic job name modification, where a file being uploaded to the robot will have its internal job name changed to match the filename.Direct File Selection: Rather than sending the YASNAC a complete list of all job files on the pc, the user can specify a single file, or a small subset of files that it should serve. This makes it easy to load the files into the robot through its “Load All” soft key.
Usage
usage: motodisk.py [-h] [-d] [-o] [file [file ...]]
MotoDisk: a software emulator for the YASNAC FC1 floppy disk drive
positional arguments:
file optional: if you want only certain file(s) to be available
to the robot, list those files on the command line. For
example this allows you to send just a single file instead
of all job (.JBI) files in the current working directory
optional arguments:
-h, --help show this help message and exit
-d, --debug enable debugging output
-o, --overwrite enable existing files to be overwritten by the program
The source is on Github. Comments are welcome.