"tkjuke" is a GUI for manipulating a jukebox in a windowed environment,
which uses the program "juke" as the underlying controller. It has
been tested under Linux and IRIX - the default configuration defaults
are suitable for many Linux installations.

The "juke" command is a Perl wrapper to the jukebox control program
"mtx".  Once installed and configured, manipulating the jukebox is
totally consistent among various computers.  Additionally, "juke" can
simulate barcodes for jukeboxes lacking an actual barcode reader.  It
does this by consulting an SDBM file that maps barcodes and jukebox
slots.

Perl and Perl/Tk are available from the CPAN, and are presumed already
installed.  "mtx" is available at sourceforge.net, and is presumed
already installed.

In "tkjuke" lingo, a jukebox is a physical device consisting of one or
more Data Transfer Elements (DTE) and one or more Storage Elements
(SE).  Think of a DTE as the hardware that reads/writes storage media,
perhaps magnetic tapes or optical disks.  An SE stores media until it's
loaded into a DTE.  A mail slot is a special SE used to add or remove
(bump) media from the jukebox without having to open the jukebox up,
as is required with a simple stacker device. In the case of two-sided
optical media, "tkjuke" can invert the media if there is hardware
support.

This code has been tested with various auto-loading stackers, and I've
written emulation code that simulates larger jukeboxes with multiple
drives, mail slots and invertable media, but since I don't actually
have such a beast, I can only hope everything works in the real world.

"juke" provides a simple command set.  Briefly, here is what "juke" can
do:


juke status                           - print jukebox status
 
juke first                 [DTE#]     - unload current media, load first
juke last                  [DTE#]     - unload current media, load last
juke next                  [DTE#]     - unload current media, load next
juke previous              [DTE#]     - unload current media, load previous

juke [invert] load    SE#  [DTE#]     - load media from jukebox, maybe inverted
juke [invert] unload [SE#] [DTE#]     - return media to jukebox, maybe inverted

juke [eepos eepos#] transfer SE# SE#  - transfer media or bump mail slot

juke loaded                           - print barcode(s) of loaded media

juke barcodes [bc1 bc2 ... bc-#slots] - print or set jukebox barcode list


Steve Lidie
Lehigh University Computing Center
sol0@lehigh.edu

2003/06/02