
QKat DOS TSR Driver v0.91 - 11/12/2000 (c)2000 by Tim Seewald
-------------------------------------------------------------

Contents
--------
* Introduction
* Quick Start
* Installation
* Options
* Data Integrity
* Limitations
* Trouble-Shooting
* Differences in :Cue:Cat Models
* Frequently Asked Questions
* Contact Information
* Registration
* Disclaimer
* Revision History

Introduction
------------
This is the second release of the QKat DOS TSR (Terminate and Stay Resident)
driver.  This DEMO version is FREEWARE and may be freely distributed as long
as no fee is charged and this file (QKAT.TXT) is included in the ZIP.  Also
note that this program may not be distributed with any other software without
written permission.

This DEMO version of the QKat DOS Driver is limited in the following ways:

1) After scanning fifteen barcodes, the driver will output an error tone.
   The driver must be unloaded from memory and reloaded before it will
   process another fifteen scans.

2) The scan data is prefixed with the word "DEMO".

These limitations still allow you to determine if this driver will work
with your DOS application.  If you find that this program works with your
application, you may purchase the registered (unlimited) version.  For
information on how to register, see the 'Registration' section located near
the end of this file.

A :Cue:Cat is a free barcode scanner available from your local RadioShack
store.  RadioShack manufactures and distributes these for a company named
Digital Convergence Corporation.  Their web site URL is:

http://www.digitalconvergence.com/

This barcode scanner is known as a 'keyboard wedge' because it wedges
(connects) between your keyboard and computer.  When you scan a barcode, the
:Cue:Cat scanner outputs an encrypted string of characters consisting of a
unique unit serial number, the barcode type (UPC, 3of9, etc.) and the actual
barcode data.  Details concerning this format are widely available on the
Internet at dozens of web sites.

This software allows barcode entry into any data entry field of (almost) any
existing DOS application where the user would enter data into the field from
the keyboard.  Versions 0.91 or later of this software can optionally
output the barcode type in addition to the barcode data.  See 'Options'
below.

Quick Start
-----------
1. Turn your computer off.
2. Connect the :Cue:Cat scanner between your keyboard and computer.
3. Turn your computer on and boot to a DOS prompt.
4. Type 'QKAT' at a DOS prompt.
5. Scan a barcode with the :Cue:Cat.
6. The scan data is decoded and displayed on your screen.

Installation
------------
1. Following the instructions that came with the :Cue:Cat, connect the
   scanner to your computer.  Installation of the C.R.Q. software is not
   required.  Since the C.R.Q. software is for Windows only, it is not
   possible to install this software on a DOS-only workstation.

2. Turn on your computer and at a DOS prompt scan any barcode with the
   :Cue:Cat.  You should see a cryptic line of text similar to this:

   .C3nZC3nZC3nYCNr2C3fWCNnY.fHmc.C3DZCxPWCNzWDNnX.

   If you do not see something similar, verify that the :Cue:Cat is
   properly connected to your computer and try scanning a different barcode.
   If you can't get this to work then the :Cue:Cat may be incompatible
   with your computer.

3. On a DOS workstation:  Copy the QKAT.EXE program to your C:\ or C:\DOS
   directory or any other directory that may be specified in the PATH
   statement in your AUTOEXEC.BAT file.  The QKat software may be installed
   from the AUTOEXEC.BAT or from a DOS prompt by typing 'QKAT' followed by
   one or more of the optional command-line switches.

4. On a MS Windows workstation:  QKAT.EXE may be copied to your C:\ or
   C:\WINDOWS\COMMAND directory and may be loaded from your AUTOEXEC.BAT
   file.  QKat WILL run under DOS 7 (Win9x) and may be loaded prior to
   loading Windows or it may even be loaded from within a DOS window after
   Win9x loads.

5. From a DOS prompt scan the barcode again.  You should hear a beep and
   instead of a cryptic line of text you should see the actual barcode
   data displayed on your screen.  If the man-readable text under the barcode
   matches what is displayed on your screen, the QKat DOS TSR driver will
   most likely work on your system.

6. You may now run your DOS application and scan barcodes into the desired
   data-input fields.

Options
-------
To see the help screen, type QKAT /?, and the following will be displayed:
                               

 ݺ QKat DOS Driver v0.91  (c)2000 by Tim Seewald  Use /? for help
       :Cue:Cat is a registered trademark of Digital Convergence Corp.

       Registered to: DEMO

 Description: QKat is a DOS-only TSR driver for the :Cue:Cat barcode
              scanner available from RadioShack.

    Switches: /NB - No Beep. Default is beep on successful scan.
              /NC - No Carriage Return. Default is append CR.
              /TB - Append TAB. Overrides append CR.
              /TU - Trim UPC-A. Removes prefix & check digits from UPC-A.
              /SS - Strip Supplemental. Removes trailing 2&5 digits from UPC-A.
              /TD - Formats output to BC type/data. Default is BC data only.
              /DT - Formats output to BC data/type.
              /U  - Uninstall the driver.
              /?  - Display this help screen.

 Original file size: 10904


The options are:

/NB - No Beep. Default is beep on successful scan.

Most barcode scanning hardware and software will provide aural feedback
on a successful scan.  This informs the user that the scan was successful
without requiring the user to be looking at the computer screen to see if
the application/form field was filled-in as a result to the user scanning
a barcode.  Conforming to this convention, the QKat software defaults to
beeping when the :Cue:Cat successfully reads a barcode.  You may have to
scan a barcode two or more times before the scanner reads it successfully
so this is a useful feature.  You may apply the /NB switch to disable this
beep.

The :Cue:Cat prefixes the scan data with an ALT-F10 character immediately
followed by a period (.) which it uses as a field separator for the three
data items (serial no., barcode type, barcode data) it generates for every
scan.  If the QKat driver sees a period within 220 ms after receiving an
ALT-F10 character, it produces the scan verification beep.  The QKat driver
then processes the barcode data and verifies that the data is valid.  If the
scan data contains invalid characters (characters below 0x20 or above 0x7E),
the driver will discard the scan data and produce a low-frequency (200 Hz)
error beep.  The error beep is 1/10 the frequency of the scan verification
beep (2000 Hz) and of longer duration.  The error beep can not be disabled.

/NC - No Carriage Return. Default is append CR.

After an application form field is populated by either the user entering
keyboard data or scanning a barcode, the user must usually press the Enter
key or the Tab key to move to the next field.  The QKat software defaults
to appending a Carriage Return (Enter key) to the barcode data, thereby
automatically moving to the next data input field immediately after a
successful scan.  For applications that require that the Tab key be pressed
to move to the next data entry field, see the /TB switch.  By using the
/NC switch on the QKAT command line, the user must manually press the
Enter or Tab key to move to the next field.  Please note that if you use
the /NC switch with either the /DT or /TD switches, the two data items,
barcode type and barcode data, will be printed as one continuous string.

/TB - Append TAB. Overrides append CR.

Instead of appending a Carriage Return (Enter key) to the scan data (see
the /NC switch), the QKat software appends a Tab character.  In order
to move to the next data entry field, some applications require that the
Tab key be pressed.  As there is usually only a single 'termination'
character appended to a the barcode data, applying the /TB switch auto-
matically applies the /NC switch thereby preventing the QKat software
from appending both a Carriage Return and a TAB character.

/TU - Trim UPC-A. Removes prefix & check digits from UPC-A.

This switch directs the software to "Trim UPC-A" barcodes, such that the
number system prefix digit (the first digit) and the trailing check digit
is removed from the barcode data.  This feature was implemented to support
those using inventory databases that ignore the first and last digits of
UPC-A barcodes.

/SS - Strip Supplemental. Removes trailing 2&5 digits from UPC-A.

This switch directs the software to remove the two or five digit supplemental
numbers appended to UPC-A barcodes.  This feature was implemented to support
those using inventory databases and Point-of-Sale applications that have a
fixed maximum barcode field size of 12 digits.

/TD - Formats output to BC type/data. Default is BC data only.

This switch directs the software to output the barcode type in addition to
the barcode data.  The output is formatted as:

BCType<CR or TAB> BCData<CR or TAB>.

This feature was implemented for those who are writing new DOS applications
supporting the :Cue:Cat scanner and the QKat DOS driver and those using
applications that include a barcode type field.

/DT - Formats output to BC data/type.

This switch directs the software to output the barcode type in addition to
the barcode data.  The output is formatted as:

BCData<CR or TAB> BCType<CR or TAB>.

This feature was implemented for those who are writing new DOS applications
supporting the :Cue:Cat scanner and the QKat DOS driver and those using
applications that include a barcode type field.

/U  - Uninstall the driver

After loading the QKat TSR, the QKat software may be removed from memory
(unloaded) by typing 'QKAT /U' at a DOS prompt.  If you load any TSR's
after loading the QKat TSR, these TSR's must be unloaded before you can
unload the QKat driver.

/?  - Display this help screen.

Displays the help screen that explains the command-line options.

Data Integrity
--------------
Versions 0.91 and later of the Qkat DOS Driver independently calculate the
checksum of UPC-A (UPA), UPC-A w/two supplemental digits (UA2) and UPC-A
w/five supplemental digits (UA5).  The calculated checksum is compared with
the checksum as reported by the :Cue:Cat to verify the accuracy of the
scan data.  If the calculated checksum and the reported checksum are not
equal, the scan data is discarded and a two-note error tone is generated.
This added feature virtually guarantees the accuracy of UPC-A scan data for
critical Point-of-Sale applications. (Registered version only)

The current versions of the :Cue:Cat scanner do not output the trailing
check digit for UPC-E barcodes.  Versions 0.91 and later of the QKat DOS
Driver (Registered version only) calculate the correct check digit and append
the digit to the scan data, thereby correcting this limitation of the
:Cue:Cat scanner.  Although the check digit is calculated, data integrity
cannot be verified since the :Cue:Cat does not output this digit.

Limitations
-----------
Characters Supported - After you scan a barcode and before the barcode data
is sent to your application, each character of the barcode is range checked
to help insure that only valid data is entered into your application.  Only
the following printable characters are considered valid:

             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
             PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

In addition to these printable characters, the non-printable characters <SP>
(Space), <CR> (Carriage Return), <LF> (Line Feed) and <BS> (Back Space) are
also considered valid.  Except for the characters A-Z and the numbers 0-9,
many of these characters are invalid within most barcode symbologies, but
have been included to help insure maximum compatibility.

Extended Code39 - Although Standard Code39 is fully supported by both the
:Cue:Cat scanner and the QKat DOS Driver with it's 42 characters (0-9, A-Z
and -.$/+&<SP>), the :CueCat model 68-1965-A does not support the Extended
Code39 specification.  While the :Cue:Cat model 68-1965 does support the
symbology, the QKat DOS Driver would consider all control characters not
noted above to be invalid.  In order to consider all control characters as
valid, the existing validity checking would have to be relaxed to the point
that barcode validity may be compromised for all the other symbologies.
While supporting the Extended Code39 specification within the QKat DOS Driver
for the non-capable 68-1965-A :Cue:Cat model is relatively easy, it would
result in a larger TSR that would require significantly more memory.  If
enough end-user interest is communicated to the author, I will consider
adding support for this symbology.

:Cue:Cat "Cues" - While the QKat DOS Driver does accept scans of the
proprietary "cues" found in RadioShack catalogs or other magazines, no
attempt has been made properly convert the data to numerical format.

Checksum Validation - Currently the barcode checksum is validated only for
the UPC-A symbology (Registered version only).  In future versions of this
driver, checksum validation will also be performed for Code39 and EAN
barcodes.

:Cue:Cat Model - While not a limitation of the QKat DOS Driver, different
models of the :Cue:Cat scanner can behave very differently with a given
barcode symbology.  See "Differences Between :Cue:Cat Models" below.

Trouble-Shooting
----------------
Although the QKat DOS TSR driver will work with most DOS applications,
there are exceptions.  Applications that acquire keystrokes in a non-standard
fashion or applications with built-in support for keyboard enhancement TSR's
may very well not work with the QKat DOS TSR driver.  The MSDOS 7 'EDIT'
utility is one example of an incompatible program.  It intercepts an ALT-F10
character sequence before the QKat driver can 'hide' this sequence from the
program.  The EDIT utility is incompatible with the :Cue:Cat scanner with or
without the QKat driver because the ALT-F10 sequence is invalid within the
application and it's so busy generating an error beep that the keyboard
buffer overflows and scan characters are missed.

Most DOS applications will work with the QKat TSR if they are run within
a DOS window under Win9x.  If you have problems with an application, try
running it from a 'pure' DOS prompt prior to loading Windows.  When you see
the 'Starting Windows 9x...' message on your screen, press F8 to get into
the Startup Menu and select option 6, 'Command prompt only'.  When the DOS
command prompt is displayed, type 'QKAT' followed by one or more of the
optional command-line switches and then try running your application.

The sounds that your PC makes while running the QKat TSR can also be useful
for trouble-shooting compatibility problems.  The QKat TSR can make three
sounds: a very-brief, high pitched tone (2000 Hz) that indicates that the
:Cue:Cat scanner successfully read the barcode, a longer, lower tone (200 Hz)
that indicates the scan data contained invalid characters, and a two-note
tone (200 Hz & 150 Hz) that indicates failed checksum verification of
UPC-A barcodes.  If your PC generates any sound other than these three, the
QKat TSR may not be compatible with your application.

If you hear a longer (1/2 to 1 sec.) tone, it may indicate that your keyboard
buffer overflowed or it may be an error tone generated by the application.
When the keyboard buffer overflows, your PC BIOS generates a tone of about
875 Hz signaling this condition.  The actual frequency may vary over
different BIOS manufactures and versions.  To determine the sound frequency
that your PC may make in this situation, at a DOS prompt simply press and
hold any character key so that the character repeats until the legal DOS
command-line length is exceeded.  The sound generated will probably be the
same one that indicates keyboard buffer overflow as DOS usually calls the
same sound routine.

Keyboard buffer overflow may occur because the QKat TSR cannot remove the
scan characters fast enough from the keyboard buffer.  Under Windows, this
may be due to other foreground applications keeping your PC so busy that
the keyboard interrupts are not serviced fast enough.  You could try shutting
down other processes to see if that eliminates the problem.  As the scan
verification beep generated by the QKat TSR is also created in the
foreground which delays the processing of the scan characters, you could try
using the /NB switch on the QKAT command line so that the scan characters
are processed sooner and the keyboard buffer is less likely to overflow.

Please understand that it's extremely difficult to create a TSR guaranteed
to be compatible with all applications.

Differences in :Cue:Cat Models
------------------------------
There are currently two models of :Cue:Cat scanners available from
RadioShack: Catalog no. 68-1965 (single LED, rectangular aperture) and
catalog no. 68-1965-A (two LED's, square aperture with a black frame).
There are significant differences between the internal firmware (the software
in ROM) that "runs" both models of scanners.  Both models have different
capabilities and limitations across the broad range of barcode symbologies.
For example, the 68-1965 model appears to support Extended Code39 much
better than the 68-1965-A model.  The 68-1965 model, sometimes referred
to as "Rev.01" may actually be an "improved" version of the 68-1965-A
model, sometimes referred to as "Rev.02".

A useful reference on this topic can be found on the Internet:

"Differences in firmware revisions of a certain free barcode reader"
http://www.mailcom.com/BarcodeTest/

For maximum flexibility, it would be useful to acquire BOTH models.

Frequently Asked Questions
--------------------------
1Q.  I understand that the :Cue:Cat scan data is prefixed with an Alt-F10
     character.  Will Alt-F10 still be recognized by my DOS application
     if I type it at the keyboard?
1A.  Yes.  If the scan data doesn't immediately follow the Alt-F10 scan
     prefix character, the Alt-F10 character is passed to the application.

2Q.  When I scan a barcode, sometimes I hear the 'scan Ok' tone but this
     tone is immediately followed by a longer, much lower tone and no
     scan data is entered into the application.
2A.  The longer, lower tone indicates that one or more invalid characters
     were in the scan data and all the data was discarded. (see Options, /NB)
     Try scanning the barcode again.  You may also have a defective :Cue:Cat,
     a loose keyboard/:Cue:Cat connection, a difficult-to-scan barcode or
     the :Cue:Cat scanner and/or the QKat DOS TSR driver may not work with
     your computer/application.

3Q.  When I scan a barcode, sometimes I hear the 'scan Ok' tone but this
     tone is immediately followed by a two-note tone and no scan data is
     entered into the application.
3A.  The two-note error tone indicates that the checksum verification failed
     for a UPC-A barcode.  Try scanning the barcode again.  If even after
     repeated attempts to scan the barcode you still hear the two-note error
     tone, it may be that the check digit was not originally calculated
     properly and the check digit embedded in the barcode is actually wrong.     
     You may also have a defective :Cue:Cat, a loose keyboard/:Cue:Cat
     connection, a difficult-to-scan barcode or the :Cue:Cat scanner and/or
     the QKat DOS TSR driver may not work with your computer/application.

4Q.  I plugged an external keyboard and :Cue:Cat into my laptop and all I
     get is garbage and/or lots of beeps.
4A.  Some laptops do not work with the :Cue:Cat at all.  You could try the
     :Cue:Cat on a desktop computer just to make sure it's working and you
     may also want to try a different keyboard with your laptop.

5Q.  Will the QKat driver work with the USB version of the :Cue:Cat?
5A.  No.

Contact Information
-------------------
You may e-mail comments, bug reports or requests for enhancements to:

qkatdos@yahoo.com

Sorry, but I may not have time to answer every e-mail, but please don't
take it personally.  Only those purchasing the registered version of this
software are guaranteed to receive e-mail support.

The latest version of this software will be available at:

http://hemisoft.50megs.com/

-and-

http://www.geocites.com/qkatdos/

Registration
------------
You may purchase the full-featured, registered version of this software at:

http://hemisoft.50megs.com/

The cost per workstation for the registered version is US $8.00.  When you
register this software you are guaranteed e-mail support and you will be
entitled to subsequent versions of the QKat DOS Driver at no additional cost
to you.

The registered version of the QKat DOS Driver has these additional features:

* There's no limitation on the number of scans as with the DEMO version.

* Since the :Cue:Cat scanner does not return the last digit (the check digit)
  of UPC-E barcodes, the QKat DOS Driver calculates and displays this digit.

* For all UPC-A barcodes, the check digit is independently calculated and
  compared with the check digit the scanner reported.  This virtually
  guarantees that UPC-A scan data is accurate for critical Point-of-Sale
  applications.

Visit the HemiSoft website for additional information.

Disclaimer
----------
BEFORE YOU USE THE SOFTWARE, CAREFULLY READ THE TERMS AND CONDITIONS OF
THIS AGREEMENT.  BY USING THE SOFTWARE, YOU ARE CONSENTING TO BE BOUND BY
AND ARE BECOMING A PARTY TO THIS AGREEMENT.  IF YOU DO NOT AGREE TO ALL OF
THE TERMS OF THIS AGREEMENT, DO NOT USE THE SOFTWARE.

LIMITATION OF WARRANTY: THIS SOFTWARE IS PROVIDED 'AS IS' WITHOUT EXPRESS OR
IMPLIED WARRANTIES, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.

DISCLAIMER OF LIABILITY: THE AUTHOR SHALL NOT BE LIABLE FOR (a) DIRECT,
INCIDENTAL, CONSEQUENTIAL, SPECIAL OR INDIRECT DAMAGES OF ANY SORT
WHATSOEVER, WHETHER ARISING IN TORT, CONTRACT OR OTHERWISE, (INCLUDING
WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS PROFITS, REVENUES, OR
INFORMATION, OR FOR BUSINESS INTERRUPTION) RESULTING FROM CUSTOMER'S USE OF
THE SOFTWARE OR INABILITY TO USE THE SOFTWARE, EVEN IF THE COMPANY HAS BEEN
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES, OR (b) FOR ANY CLAIM BY ANY
OTHER PARTY THAN CUSTOMER. THIS DISCLAIMER OF LIABILITY SHALL NOT APPLY TO
LIABILITY FOR DEATH OR PERSONAL INJURY WHERE THE APPLICABLE LAW PROHIBITS
SUCH LIMITATION. FURTHERMORE, SOME STATES DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND
EXCLUSION MAY NOT APPLY TO CUSTOMER.

Version History
---------------
v0.90 - 10/21/2000 - First release

v0.91 - 11/12/2000 - Second release

Thanks to everyone that tried the first release and provided bug reports
and suggestions for improvements!  I have incorporated virtually ALL your
suggestions in this version.

* The :Cue:Cat scanner does not output the last character (the check digit)
  of UPC-E barcodes.  The check digit is now calculated and appended to
  the scan data for these barcodes. (Registered version only)

* For all UPC-A barcodes, the check digit is independently calculated and
  compared with the check digit the scanner reported.  This virtually
  guarantees that UPC-A scan data is accurate for critical Point-of-Sale
  applications. (Registered version only)

* The command-line option switch '/TU' was added.  This switch directs the
  software to "Trim UPC-A" barcodes, such that the number system prefix
  digit (the first digit) and the trailing check digit is removed from the
  barcode data.  This feature was implemented to support those using
  inventory databases that ignore the first and last digits of UPC-A bar-
  codes.

* The command-line option switch '/SS' was added.  This switch directs the
  software to remove the two or five digit supplemental numbers appended
  to UPC-A barcodes.  This feature was implemented to support those using
  inventory databases and Point-of-Sale applications that have a fixed
  maximum barcode field size of 12 digits.

* The command-line option switch '/TD' was added.  This switch directs the
  software to output the barcode type in addition to the barcode data.  The
  output is formatted as BCType<CR or TAB> BCData<CR or TAB>.  This feature
  was implemented for those who are writing new DOS applications supporting
  the :Cue:Cat scanner and the QKat DOS driver and those using applications
  that include a barcode type field.

* The command-line option switch '/DT' was added.  This switch directs the
  software to output the barcode type in addition to the barcode data.  The
  output is formatted as BCData<CR or TAB> BCType<CR or TAB>.  This feature
  was implemented for those who are writing new DOS applications supporting
  the :Cue:Cat scanner and the QKat DOS driver and those using applications
  that include a barcode type field.

* A bug was fixed where a NULL was sometimes appended to the barcode data.

EOF

