YASNAC Motoman K10S side view diagram

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.

YASNAC FC1 external 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:

  1. Some guy’s similar software from a decade ago
  2. A hardware device that does the same job
  3. A universal software product that also works with the YASNAC system
  4. YASNAC’s own software replacement for the FC1

Our Implementation(s)

YASNAC ERC Operator Console

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 called JOB2.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: 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.